Platform Version Manifest

The platform manifest is a machine-readable version registry that the builder and tawa preflight use to validate your catalog-info.yaml version against the currently supported platform capabilities.

How to Read It

The manifest has two primary sections:

  • catalog_versions — lists every supported catalog-info.yaml version, the builder version required, and which features that catalog version unlocks. Declaring insureco.io/catalog-version: "0.5.0" in your annotations opts into the features listed under that version (e.g. spec.tests for deploy-gated testing). Earlier catalog versions skip features they don't know about.

  • sdks — maps @insureco/* SDK package names to their current recommended versions. Use these as the source of truth when installing platform SDKs.

Why Catalog Version Matters

If you do not declare insureco.io/catalog-version, the builder uses the minimum supported version. To unlock newer features you must explicitly declare the version:

metadata:
  annotations:
    insureco.io/catalog-version: "0.5.0"   # required to use spec.tests

If your declared catalog version is not present in the manifest, tawa preflight fails with a validation error.

Checking the Current Manifest

curl https://builder.tawa.insureco.io/manifest

This returns the live manifest as YAML. The platform.current_catalog field shows the latest supported version.


Platform Version Manifest (raw)

The authoritative current state of the Tawa platform.

Updated on every platform release. Consumed by MCP, builder, and preflight.

Last updated: 2026-02-27

schema_version: "1.0"

platform: name: "Tawa" publisher: "InsurEco Systems" status: "pre-1.0" # pre-1.0 | stable | lts target: "1.0.0" # next milestone version current_catalog: "0.5.0" minimum_catalog: "0.2.0" builder_version: "0.10.11" cli_version: "0.10.11"

── Active platform services ─────────────────────────────────────────────────

services: iec-janus: role: "API gateway — auth, authz, gas check/settle, routing" status: built env_var: "JANUS_URL" # auto-injected by builder on every deploy

iec-koko: role: "Service registry, plugin store, configs, domains" status: built env_var: "KOKO_URL" # auto-injected by builder on every deploy

iec-wallet: role: "Token wallet, double-entry ledger, withdrawals" status: built env_var: "IEC_WALLET_URL" # auto-injected by builder on every deploy catalog_dependency: "iec-wallet"

iec-relay: role: "Email (SendGrid), SMS (Twilio), templates" status: built notes: "Platform service — not a plugin. All sends metered and Septor-audited." sdk: "@insureco/relay" sdk_version: "0.5.0" internalDependency: false # relay is accessed through Janus, no direct URL needed

iec-builder: role: "CI/CD pipeline, provisioners, Helm deploy" status: built public_url: "https://builder.tawa.insureco.io"

iec-bio: role: "OAuth2 auth server, JWT issuance, user identity" status: built public_url: "https://bio.tawa.insureco.io" jwks_url: "https://bio.tawa.insureco.io/.well-known/jwks.json" sdk: "@insureco/bio" sdk_version: "0.3.0" auth_model: "RS256+JWKS" notes: > Services do NOT need JWT_SECRET. Token verification uses verifyTokenJWKS() which fetches the public key from the JWKS endpoint. BIO_CLIENT_ID and BIO_CLIENT_SECRET are auto-injected by the builder.

septor: role: "Immutable hash-chain audit trail" status: built catalog_dependency: "septor" env_var: "SEPTOR_URL" sdk: "@insureco/septor" sdk_version: "0.2.0"

iec-queue: role: "BullMQ as platform service — parallel job processing with retries" status: built catalog_dependency: "iec-queue" env_var: "IEC_QUEUE_URL"

iec-cron: role: "Platform scheduler — cron schedules declared in catalog-info.yaml" status: built notes: "Schedules declared under spec.schedules[] in catalog-info.yaml"

iec-observe: role: "Grafana — pod metrics, logs, trace routes, Bio-ID scoped" status: built public_url: "https://observe.tawa.insureco.io"

── SDKs ─────────────────────────────────────────────────────────────────────

sdks: "@insureco/bio": "0.3.0" "@insureco/relay": "0.5.0" "@insureco/wallet": "0.3.0" "@insureco/docman": "1.1.2" "@insureco/septor": "0.2.0" "@insureco/storage": "0.1.0"

── Environment URLs ─────────────────────────────────────────────────────────

environments: sandbox: domain_pattern: "{service}.sandbox.tawa.insureco.io" gas_multiplier: 0.1 relay_mode: "sandbox"

uat: domain_pattern: "{service}.uat.tawa.insureco.io" gas_multiplier: 1.0 relay_mode: "sandbox"

prod: domain_pattern: "{service}.tawa.insureco.io" gas_multiplier: 1.0 relay_mode: "production"

── Token economics ───────────────────────────────────────────────────────────

tokens: value_usd: 0.01 intro_grant: 50000 spend_order: ["intro", "purchased", "earned"] deploy_reserve_months: 3

pod_tiers: nano: { cpu: "0.25", memory: "256Mi", gas_per_hour: 5 } small: { cpu: "0.5", memory: "512Mi", gas_per_hour: 10 } medium: { cpu: "1", memory: "1Gi", gas_per_hour: 23 } large: { cpu: "2", memory: "2Gi", gas_per_hour: 42 } xlarge: { cpu: "4", memory: "4Gi", gas_per_hour: 83 }

── Tawa 1.0 status ──────────────────────────────────────────────────────────

tawa_1_0: status: "in-progress" phases: phase_0_security: complete # Bio-ID RS256, relay sandbox guard phase_1_septor: partial # Janus→Septor wired, relay→Septor missing phase_2_maestro: complete # iec-queue + iec-cron deployed phase_3_gas_gaps: partial # sandbox multiplier pending, plugin gas gap pending phase_4_test_sdk: pending # @tawa/test-sdk not yet published phase_5_chaac: partial # 10 skills built, 6 more needed phase_6_matomo: pending phase_7_checkcle: pending phase_8_iec_docs: pending phase_9_iec_help: pending phase_10_jefferson: pending phase_pcs: in-progress # Platform Convention System (this repo)

Last updated: March 1, 2026