Skip to main content

Configuration ownership

Checked-in environment examples are schemas, not deployable values. Railway sealed variables own runtime values; deployment identity JSON owns chain/address configuration; service profiles own commands, health checks, and replica policy.

Sensitivity classes

Shared identity and telemetry

The deployment identity artifact supersedes individually supplied chain/address values in qualified environments. Every service must receive the exact same artifact for a release.

API

Source schema: apps/api/.env.example and apps/api/src/config.ts.

Indexer

Source schema: apps/indexer/.env.example and apps/indexer/src/config.ts. Only indexer/Ponder may use the log-range configuration.

Keeper roles

Each role’s authoritative schema is the matching file in apps/keeper/env. Cross-service ownership and public environment identity live in deploy/platform.ts; service parsers remain authoritative for runtime validation, and secrets remain exclusively in the environment manager. Startup rejects SIGNER_KEYS for engine and auditor. Never reuse a keyring, signer pool, source token, or metrics token across roles or environments.

Market data and frontend

Market-data configuration is owned by apps/market-data/.env.example: source mode/origin and cache, circuit, notional, depth-band, freshness, four distinct route tokens, metrics token, and telemetry. Route and metrics tokens are secret; numeric normalization policy is public. Production uses independently governed sources rather than treating replicas as source diversity. Frontend runtime configuration is generated from the public testnet API origin https://api.testnet.tayho.io, a Dynamic environment ID, an origin-restricted Alchemy HyperEVM endpoint, and a bounded Gas Manager policy ID. The frontend defaults to standard paymaster sponsorship; Bundler Sponsored Operations must be enabled explicitly because that Alchemy mode is beta. It receives no private service origin, database/Redis value, internal engine token, receipt secret, or worker signer. The reviewed provider-side ceiling is deploy/alchemy/gas-policy.expected.json. Enable the Alchemy Gas Manager policy workflow only after adding an environment-scoped ALCHEMY_ADMIN_API_KEY; an RPC endpoint key is not an Admin API credential. The live verifier uses Alchemy’s Get Policy Admin API and fails closed when global, per-sender, per-operation, or operation-count limits are absent or above the reviewed maximum. Application quotas remain a second independent boundary.

Change procedure

  1. Change the parser/type and its tests.
  2. Update the owning .env.example without a resolved value.
  3. Update the Railway JSON profile or release wiring when shape changes.
  4. Update this registry and the affected architecture/runbook.
  5. Roll development, prove readiness and failure behavior, then qualify production.
Do not add aliases for renamed variables. The repository intentionally has no backward-compatibility configuration paths; migrate all callers atomically. Before changing an RPC set, run bun run rpc:qualify with the candidate provider variables. The report probes chain identity, head and block availability, read calls, nonce/receipt lookup, the provider-specific eth_getLogs range, and sampled log-to-block transaction consistency. Reports contain provider IDs but never endpoint URLs.
Last modified on July 24, 2026