Operations

Railway

The hosted deployment, declared as code.

The hosted instance runs on Railway, declared in .railway/railway.ts (Railway's infrastructure as code) and documented in docs/deploy-railway.md.

  • web, docs, api, delivery, zoekt are services built from their Dockerfiles; Postgres is Railway's.
  • The bucket is external (Cloudflare R2, Tigris or any S3-compatible store): Railway has no S3 product.
  • The API runs node packages/db/dist/migrate.js as its pre-deploy step, so a deploy migrates before new code serves.
  • The API has one replica, deliberately: repository caches and deletion purges are per process (ADR 0020). Do not scale it out without solving that first.
  • No volume is needed: the repository cache under the API's temp directory is rebuilt from the bucket on demand. A volume on /tmp would only save re-materialization after a restart.

Check yourself

Traffic grows. Can you set the API to two replicas?