production boundary

Make failure
legible.

Methodos fails closed where it can, exposes the signals operators need, and leaves deployment ownership explicit where the host must make a decision.

Secure startup

Set METHODOS_ENV=production or staging. Those modes reject missing authentication, weak credentials, and filesystem persistence. Use explicit role mappings for every API key.

METHODOS_ENV=production
METHODOS_API_KEYS='replace-with-a-long-key'
METHODOS_API_KEY_ROLES='replace-with-a-long-key=reader'
PGRAPH_BACKEND=postgres
PGRAPH_POSTGRES_DSN='postgresql://...'

Keep the API behind an authenticated TLS reverse proxy. Bind Compose ports to loopback unless the surrounding network path is intentionally authenticated.

Scale deliberately

Use SQLite for one service process group with a persistent volume. Use Postgres for replicas, shared rate limits, durable jobs, tenant isolation, token budgets, and circuit-breaker state. Run the evolution worker as a separately supervised process with an injected executor.

Schedulers, identity providers, key rotation, graph promotion, and human approval are host-owned policies. Configure and record them before calling a deployment production-ready.

Observe

Scrape /metrics, send structured logs to your aggregator, and export OpenTelemetry spans if distributed tracing is required. Track request errors/latency, readiness, queue depth, worker liveness, provider failures, and backup age.

SLOsPrometheusOTelGrafanarequest IDs

Recover and release

Schedule atomic SQLite backups and verify them before restore. Use managed Postgres backups and perform separate-destination restore drills. Release images are SBOMed, scanned, attested, signed by digest, and bound to a source revision by a release manifest.

methodos backup /secure/backups/methodos-$(date +%Y%m%d%H%M%S).db
methodos verify-backup /secure/backups/methodos-20261014090000.db
methodos restore-backup backup.db recovery.db