Run a production pilot
Bring up the Compose package like an enterprise pilot — not a laptop demo.
Checklist (short)
- Copy
.env.production.example→.env.production(secrets, Anthropic, metrics bearer). pnpm deploy:upon a clean volume (migrate runs in-compose).- Keep Caddy on
tls internaluntil public DNS exists; thenpnpm deploy:up:acmeor file certs. - Schedule
pnpm backup:db; runpnpm backup:restore-drill. - Confirm worker retention purge logs (90d default).
pnpm smoke:deploy+pnpm smoke:authz+ publish walk.
Full narrative: Pilot dry-run and the repo file docs/operations/pilot-dry-run.md.
Production hard rules
| Rule | Why |
|---|---|
NODE_ENV=production |
Enables prod contracts |
No RUNTIME_ALLOW_LOCAL |
Local adapter blocked |
METRICS_BEARER_TOKEN set |
/metrics stays private |
| Secrets not on Next services | Template bugs cannot read master keys |
| MFA after enrollment | Avoid lockout |
[!TIP] On remapped host ports (e.g. control plane
13000), setCONTROL_PLANE_ORIGINfor smokes so Better Auth accepts the Origin header.