Skip to content

functionally/tidbyte-claude

Repository files navigation

Claude Status — Tidbyt app

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.indicator color (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 Government under 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.indicator color and shows <age> ago <N> hit so 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.

Quickstart

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 Tidbyt

For 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.yaml

Configuration

config.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.

How it picks the dominant signal

  • The big tile color is driven by the page-wide status.indicator field — none / minor / major / critical / maintenance. This is what https://status.claude.com itself uses for the top-of-page banner.
  • The "affected" count on the tile is the number of components whose status is anything other than operational.
  • 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.

Design notes

See design-notes.md for the API surface, color palette, layout decisions, and known watch-outs.

Contributors

Languages