Readiness check
Readiness probe, distinct from GET /health’s pure liveness check: when storage is Supabase-backed, this one actually queries Postgres (SELECT 1, no table rows transferred) so an orchestrator can tell a process that is up but backed by dead storage apart from one that is genuinely ready to serve traffic. When storage is not Supabase-backed (NODE_ENV=test, or PARMANA_STORAGE=memory outside test), there is no external dependency to probe, so this reports READY unconditionally. Exempt from caller authentication for the same reason GET /health is, see packages/api/src/routes/ready.ts.
Response
Storage reachable, or not Supabase-backed.
Response returned by GET /ready on both status codes (200 READY, 503 NOT_READY). Distinct from GET /health's pure liveness check: when storage is Supabase-backed, this one actually queries Postgres (SELECT 1) so an orchestrator can route around a process that is up but backed by dead storage.
READY, NOT_READY Present only when status is READY and storage is not Supabase-backed (NODE_ENV=test, or PARMANA_STORAGE=memory outside test): there is no external dependency to probe, so readiness is reported unconditionally.
not-supabase-backed Present only when status is NOT_READY: the underlying Postgres error message.
True when this process was started with PARMANA_AUTH_DISABLED=true. Surfaced here, not only as a startup log line, so an operator's own synthetic checks against GET /ready can alert on it directly.
Present only when authDisabled is true.