A Pixlet/Starlark Tidbyt app that polls status.claude.com and renders an at-a-glance overview of Claude's overall status, per-component health, and any open incident.
- Left tile (28×32): big "OK" (when everything is green) or the count of affected components with the age of the worst-impact open incident below. Tile background is the StatusPage overall
status.indicatorcolor (green / yellow / orange / red / blue). - Right column (36×32): up to five rows of (colored dot + short component label). Capped at five because
tom-thumb× 6 rows overflows the 32 px height; the dropped row is the lowest-priority operational component (Claude for Governmentunder current conditions), but any degraded component is always shown regardless of priority. - When an incident is open: the whole display alternates between the layout above (~4.35 s) and an incident view (~10.15 s) — up to 4 full-width horizontal-marquee rows (one per open incident, sorted worst-impact-first and colored by each incident's impact severity: red / critical, orange / major, yellow / minor, blue / maintenance, white / unknown) stacked over a colored status bar at the bottom. The bar takes the StatusPage
status.indicatorcolor and shows<age> ago <N> hitso the indicator signal still reads at a glance. Rows for incident slots beyond the open count stay blank, so a single open incident occupies the top row with 3 blank rows below it.
Data source: GET https://status.claude.com/api/v2/summary.json (Atlassian StatusPage, public, unauthenticated, CORS open). Cached at the Pixlet layer for 60 s.
nix develop # drops you into the dev shell
cp config-example.yaml config.yaml # fill in Tidbyt creds
./scripts/check.sh # verify upstream + creds
./scripts/preview.sh # browser preview at http://localhost:8080
./scripts/render.sh # writes out.webp
./scripts/deploy.sh # one-shot push to your TidbytFor the always-on push daemon:
./scripts/build-container.sh # builds the OCI image and loads it into podman
./scripts/run-container.sh -d # detached, restarts forever
# or
podman kube play --replace claudestat.yamlconfig.yaml carries only Tidbyt push creds — there is no upstream API key, since StatusPage's summary endpoint is public.
| Field | What |
|---|---|
tidbyt_api_key |
From pixlet auth or the Tidbyt account page |
tidbyt_device_id |
From pixlet devices |
tidbyt_installation_id |
Any short alphanumeric tag — uniquely identifies this app's slot on the device |
See config-example.yaml for a template.
- The big tile color is driven by the page-wide
status.indicatorfield —none/minor/major/critical/maintenance. This is whathttps://status.claude.comitself uses for the top-of-page banner. - The "affected" count on the tile is the number of components whose
statusis anything other thanoperational. - The incident frame shows up to 4 open incidents, sorted by impact (
critical>major>minor) then by recency. If there are more than 4 open at once, the full list is always available at status.claude.com.
See design-notes.md for the API surface, color palette, layout decisions, and known watch-outs.