Skip to content

Runbook — CMMD app down

cmmd.ai HTTP endpoint not responding or returning sustained 5xx. First mitigation step is rollback via Railway if the spike correlates with a recent deploy.

FieldValue
SeverityP0
Owner@aphaiboon
Alert sourceWatchtower — probe_success{job="cmmd-app", product="cmmd-app"} == 0 for 2m
Estimated time10–20 min
Required accessRailway, GitHub, PostHog

watchtower.cmmd.ai shows the CMMD app tile red. ntfy push to phone says cmmd-app-down. External Cronitor probe may also be alerting via SMS.

  1. Bad deploy — most common. The blackbox probe started failing within minutes of a main merge.
  2. Neon database degraded — app starts returning 5xx because all queries time out. See neon-db-down.
  3. Railway platform issue — confirm via status pages tile on Watchtower home (status-pages row → Railway).
  4. Memory leak / OOM — Railway shows the service in restart loop.
  1. Open Watchtower home → check whether Railway status page tile is also red. If yes → upstream platform, jump to step “Escalate to Railway”.
  2. Open Railway dashboard for the CMMD production service → check current deploy status + recent deploy times.
  3. Pull recent logs from Railway: filter for level=error in the last 30 min.
  4. Open PostHog → check error-rate dashboard.
  1. Railway → CMMD service → Deployments → Rollback to last known-good build.
  2. Verify within 2 min: curl -i https://cmmd.ai/health returns 200.
  3. Post in Slack #alerts confirming rollback.
  4. Open a follow-up issue to investigate the broken build before re-deploying.
  1. Check Watchtower → Infra critical → Neon. If Neon is red, follow neon-db-down.
  2. Railway → check service health → restart the container if it’s been wedged.
  3. If memory pressure visible → bump the service’s memory limit one tier in Railway.
  • curl -i https://cmmd.ai/health returns 200 for 3 minutes in a row
  • Watchtower cmmd-app tile green for 3 minutes
  • Error-rate dashboard back below normal
  • Railway platform issue → open ticket via Railway support, post in Slack #alerts
  • Sustained 30+ min downtime → notify in #incidents channel + customer comm plan