status.claway.io — Public Status Page Setup
Audience: Blockway staff. This is a one-time setup for the public uptime signal enterprise buyers see before signing. Not customer-facing.
What ships out of the box
The Claway Infra Panel already exposes two public endpoints — no auth required, safe to hit from anywhere:
| URL | Format | Use for |
|---|---|---|
https://panel.claway.io/api/plugins/claway-infra-panel/status | JSON | Machine-readable monitor / API poll |
https://panel.claway.io/api/plugins/claway-infra-panel/status.html | HTML | Human-readable current status |
The JSON is the source of truth. Sample:
{
"status": "operational",
"fleet": { "instances_online": 12, "instances_total": 12 },
"incidents": [...],
"generated_at": "2026-07-03T13:34:42+00:00"
}
status is either "operational" (every registered instance heartbeated
in the last 5 minutes) or "degraded" (at least one is missing).
incidents is the operator-declared list (created from the panel's
/incidents page). Heartbeat gaps are logged privately as SLO events —
they don't post to the public page unless a Blockway staffer promotes
them to a public incident.
Recommended: Better Stack Uptime (free tier)
Better Stack Uptime gives us the public status page + monitoring for $0/month on the free tier (up to 10 monitors, 3-minute check frequency, public status page included). We recommend this over self-rolling.
Step-by-step
-
Sign up at betterstack.com/uptime. Use the
ops@blockway.ioalias so the account is shared, not personal. -
Create the monitor — this is what actually polls Claway:
- Type:
HTTP(s) - URL:
https://panel.claway.io/api/plugins/claway-infra-panel/status - Method:
GET - Check frequency:
3 minutes(free-tier max) - Region: pick 2 (e.g.
us-east-1+eu-west-1) so a single-region outage doesn't page. - Advanced → Response body contains:
"operational"— this promotes the monitor from "endpoint reachable" to "endpoint reachable AND says all is well". Without this, a"degraded"response would still be counted as up. - Notification: Slack channel
#claway-ops-oncallor the phone rotation. Don't leave notifications empty.
- Type:
-
Create the status page:
- Better Stack → Status pages → New
- Custom domain:
status.claway.io- Point a
CNAMEfrom your DNS provider (status→<generated>.betteruptime.com).
- Point a
- Add the monitor from step 2 as the "Claway Panel" component.
- Optionally add other components (WhatsApp bridge, KB worker) later — each needs its own healthz endpoint published.
- Publish.
-
Test:
# From your laptop — confirm the JSON is reachable + operational
curl -s https://panel.claway.io/api/plugins/claway-infra-panel/status | jq .status
# ⇒ "operational"Then simulate a degraded response by stopping the gateway on the server for one minute (
systemctl --user stop claway-gateway) —instances_onlinedrops to zero, status flips to"degraded", Better Stack alerts on the next poll.
Cost
| Tier | Monitors | Frequency | Cost | Verdict |
|---|---|---|---|---|
| Free | 10 | 3 min | $0/month | Ships day 1 |
| Team | 50 | 30 s | $18/month | If we ever need sub-minute alerting |
Stay on free until we outgrow it.
Alternative: statuspage.io / Instatus
Both work identically — same JSON keyword monitor, same DNS CNAME step. Better Stack is our pick because it also runs incident review + on-call paging in the same account, saving a second SaaS bill later.
Manual smoke check
Run this from any laptop with connectivity, no auth needed:
# 1. Fleet health
curl -s https://panel.claway.io/api/plugins/claway-infra-panel/status \
| python -c 'import sys, json; d=json.load(sys.stdin); print(d["status"], d["fleet"])'
# 2. HTML view (what humans see)
open https://panel.claway.io/api/plugins/claway-infra-panel/status.html
# 3. Once Better Stack is live
open https://status.claway.io