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"
services: iec-janus: role: "API gateway — auth, authz, gas check/settle, routing" status: built internal_url_pattern: "http://janus.janus-{env}.svc.cluster.local:3000" env_var: "JANUS_URL" # auto-injected by builder
iec-koko: role: "Service registry, plugin store, configs, domains" status: built internal_url_pattern: "http://koko-iec-koko.koko-{env}.svc.cluster.local:3001" env_var: "KOKO_URL" # auto-injected by builder
iec-wallet: role: "Token wallet, double-entry ledger, withdrawals" status: built internal_url_pattern: "http://iec-wallet.iec-wallet-{env}.svc.cluster.local:3000" env_var: "IEC_WALLET_URL" # via internalDependencies 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: "@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"
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"
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: "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: February 28, 2026