Skip to main content

Service catalog

The qualified production topology is defined in deploy/railway/topology.ts and the JSON profiles under deploy/railway. Development normally uses one API, engine, and market-data replica; production replica counts are shown below.

Application and projection services

API source: apps/api. Indexer source: apps/indexer. Market-data source: apps/market-data.

Keeper roles

All roles use the keeper image and a distinct entrypoint. Signing roles share a two-key, role-specific pool across their replicas; transaction selection and nonces are serialized in PostgreSQL. The source catalog and startup behavior live in apps/keeper. ChainService rejects functions outside the active role’s allowlist before simulation or broadcast. Readiness also checks chain identity, deployment linkage, signer separation, balances, and exact on-chain role assignment.

Dependency rules

Scaling rules

  • Add API replicas freely after validating shared quotas and realtime replay.
  • Keep one Ponder writer per deployment schema. Scale query serving separately if needed.
  • Signing-role replicas must share the exact reviewed role key pool; mismatches fail readiness.
  • Revenue remains one replica because delay is acceptable.
  • Auditor remains one replica and keyless.
  • Scale a saturated worker only after proving PostgreSQL outbox uniqueness, signer-lane availability, and queue age rather than reacting to raw queue depth alone.
Last modified on July 23, 2026