Health, updates & backups
Check the whole request path and keep your data, configuration, and release versions together.
Verify the running release
Check worker liveness and readiness, review the migration result, and verify both migration sets. In the public Compose stack the worker ports are internal; run its health checks from inside the deployment network.
pnpm --filter @launchstack/web db:verify
curl --fail http://localhost:8020/healthz
curl --fail http://localhost:8020/readyzThe curl examples use exposed local ports. Run db:verify with the same DATABASE_URL and source version as the deployed app.
Check the actual product path
Sign in, upload a small document, wait until it is ready, ask a source-grounded question, and open the citation. If enabled, also test a PDF export and one connection with its configured OAuth callback.
- Upload stays queued
- Check worker readiness, shared DATABASE_URL, and worker logs.
- Conversion returns 503
- Check the selected OCR provider, Docling profile, service health, credentials, and allowed fetch origins.
- Chat or vectors fail
- Check endpoint/key pairs, YAML routes, and the embedding model/index pairing.
- Connection is not configured
- Check the provider client pair, encryption key, feature flag if required, and Compose environment forwarding.
- Account link points to another host
- Rebuild the public site with NEXT_PUBLIC_APP_URL set to your product origin.
Metrics
Set METRICS_SCRAPE_TOKEN to enable authenticated production access to /api/metrics. Send it as a Bearer token from your scraper. In production, the route returns 503 when that token is not configured.
Updates and backups
Back up PostgreSQL, uploaded objects, mounted model configuration, and the secrets needed to decrypt stored credentials. Test restores before relying on them.
Use a matching source checkout and app/worker release. Review pending migrations before an update, run the web db:migrate command for both migration sets, and restart app and worker together. An image rollback does not undo database migrations.
For a model-only change, edit the mounted YAML and restart both processes. Keep the embedding index unchanged unless you are deliberately reindexing the corpus.