Skip to main content

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:

URLFormatUse for
https://panel.claway.io/api/plugins/claway-infra-panel/statusJSONMachine-readable monitor / API poll
https://panel.claway.io/api/plugins/claway-infra-panel/status.htmlHTMLHuman-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.

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​

  1. Sign up at betterstack.com/uptime. Use the ops@blockway.io alias so the account is shared, not personal.

  2. 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-oncall or the phone rotation. Don't leave notifications empty.
  3. Create the status page:

    • Better Stack → Status pages → New
    • Custom domain: status.claway.io
      • Point a CNAME from your DNS provider (status → <generated>.betteruptime.com).
    • 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.
  4. 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_online drops to zero, status flips to "degraded", Better Stack alerts on the next poll.

Cost​

TierMonitorsFrequencyCostVerdict
Free103 min$0/monthShips day 1
Team5030 s$18/monthIf 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