Uptime monitoring — celestial-intelligence prod
What runs today
Section titled “What runs today”A GitHub Actions workflow (.github/workflows/uptime.yml) probes the
four production endpoints every 30 minutes:
https://starflow.celestialintelligence.co/healthhttps://decider.mcp.celestialintelligence.co/healthhttps://dashboard.celestialintelligence.co/healthhttps://docs.celestialintelligence.co/(CF Pages — no /health route)
On any non-200, the workflow opens a GitHub issue labelled
incident + uptime with a triage snippet. Manual run:
Actions → uptime → Run workflow.
Why 30 minutes
Section titled “Why 30 minutes”This repo is private. Actions minutes for private repos are billed against a 2000 min/month quota. 5-min cadence burns ~8000 min/mo and would put us into pay-per-min territory; 30-min stays well under.
That’s the trade-off — a real prod incident sits unseen for up to ~30 min unless the on-call SSH happens to notice. For tighter cadence + actual paging, set up UptimeRobot as the next step (below).
Next step: UptimeRobot (5-min checks + paging)
Section titled “Next step: UptimeRobot (5-min checks + paging)”UptimeRobot free tier:
- 50 monitors @ 5-min interval — fits our 4 endpoints with room
- Email / Slack / Discord notification on failure
- No credit card
Setup:
- Sign up at https://uptimerobot.com (use a shared ops mailbox).
- Add Monitor for each of the four endpoints above. Type:
HTTPS keyword; Keyword:
ok(the/healthpayload contains"ok":true). - Alert Contacts → add Slack/Discord webhook or email.
- Once configured, delete
.github/workflows/uptime.yml(or leave it as belt-and-braces; cost is negligible at 30-min cadence).
Other observability we’re NOT doing yet
Section titled “Other observability we’re NOT doing yet”- journald → external — logs stay on entmoot, queryable via
journalctl -u <service>. For long-term retention, a Vector or Promtail shipper to Loki/Grafana Cloud (free tier 50 GB/mo) is the next step. - Disk-space alerts — entmoot is at 6 % today; no automated
alert. Add a cron + Discord webhook, or have UptimeRobot probe a
/health/diskendpoint we’d need to expose first. - Metric collection — no Prometheus / OTel today. The
starflow-server bundle has
telemetry-bridge.tsand the systemd env hasSTARFLOW_TELEMETRY=off— turn this back on once we have a collector.