wiki / noc-homelab / status-apiedited 2026-07-19
Status API

The Machines section on this site’s home page is live homelab data. It comes from a static JSON file, /homelab-status.json, regenerated every 60 seconds — no backend behind the website, just a file push.

Pipeline

  1. The dashboard aggregates every machine’s agent reports into one status view.
  2. A LaunchAgent runs a push script each minute: it fetches that view, projects it through a public-services allowlist, folds in 24 hours of hourly history, and uploads the result to the webroots of both sites.
  3. The site fetches /homelab-status.json client-side and renders the machine chassis — no JS means no section, nothing else breaks.

The allowlist is the privacy boundary: only explicitly listed services appear publicly, under display labels chosen for the site. A consolidated entry can group several internal services under one light — it shows online only when all of them are.

Payload

{
  "updated": "2026-07-19T00:00:00Z",
  "machines": [
    {
      "id": "noc-tux", "label": "noc-tux",
      "online": true, "uptime": "…",
      "services": [ { "id": "matrix", "label": "Matrix", "online": true } ]
    }
  ]
}

Machine reachability, uptime, and per-service online flags — that’s the whole contract. History rides alongside for the 24-hour sparkline window.