Weatherdeck – a read-only status board for AI coding agent lanes Moshik21 released Weatherdeck, an open-source, read-only status board that displays the state of AI coding agent lanes from JSON documents pushed over HTTP by any source. Weatherdeck runs on Python 3.9 to 3.14 using only the standard library, one SQLite file and one HTML/JS/CSS page, requires no build step, CDN, telemetry or root access, and is pre-1.0 hobby software with best-effort support. The board marks a source that stops reporting as silent and fogged rather than showing stale data as fresh, and makes no LLM or model call anywhere. Weatherdeck is a status board for machines and the work running on them a TV or phone page fed by small pushers , not a weather app and not a monitoring or alerting system. What you see. Every picture here is the demo weatherdeck run --demo , with theme=ship-deck on the page address . Its sources are invented and nothing in it is real. - Waiting on you. The amber plate counts the calls that need a person and says how long each has waited. - Honest progress. Progress shows as a percent range where the source gives one for example 38-42% . A lane the board cannot read is counted as "can't tell" the "+7 more" line says 1 , not shown as fine. - A quiet source is named. The lamp by the clock counts live sources. When one stops reporting it reads "2/3 live", and that machine's ship is drawn in fog and labelled silent. - One board for TV and phone. The same page is the open sea on a wide screen and one column on a phone. In the clip, Cinder one of the invented sources stops reporting. Still frame https://github.com/Moshik21/weatherdeck/blob/main/docs/img/tour-still.png . The phone page from a few minutes into the demo, cropped after the ALL FINE tile: the calls, then the problems, then that tile, which is lit only when no call or problem is open and every feed reports. It is an at-a-glance board for work reported by many sources, meant to be left on a TV or a phone: what is waiting on you, what is moving and how far along it honestly is, what got done, what is next, and whether you can trust what you are looking at. - Any tool can leave a card. One small JSON file in a drop directory becomes a status tile; the board only reads it docs/ADDINS.md https://github.com/Moshik21/weatherdeck/blob/main/docs/ADDINS.md . - Any tool can feed it. A source is anything that can send one JSON document over HTTP. Sources are discovered, never configured; machines and items appear on their own. - Checkable. Every push a host receives is one line in its received log weatherdeck received --diff : what each source sent and what changed on the board. - Honest about gaps. A source that stops reporting stays on screen, marked silent and fogged. The board never shows stale data as fresh, and says so when a source is missing. It claims no value for itself or any tool until a number is measured docs/honesty.md https://github.com/Moshik21/weatherdeck/blob/main/docs/honesty.md . - Read-only, local, tiny. Python standard library only, one SQLite file, one plain HTML/JS/CSS page. No build step, no CDN, no telemetry, no root. - Runs anywhere. The same command natively on Windows, macOS and Linux, no admin needed. Run several hosts at once; every page says which host serves it. - Deterministic. No model or LLM call anywhere; the only outbound traffic is an adapter pushing to a host you name. What this is not. It is not a monitoring or alerting system: it never pages anyone, and it shows only what sources push to it. It is not a hosted service: you run it yourself, on machines you choose. And it is pre-1.0 hobby software, open-sourced because it solved a problem the author had: details may change, and support is best effort. You need Python 3.9 to 3.14 an older one stops at startup with a one-line message; the Microsoft Store one is fine for trying it; to run it at logon or run the beat, see docs/runbook-windows.md https://github.com/Moshik21/weatherdeck/blob/main/docs/runbook-windows.md . Nothing to install: run it from a source checkout or the release zip. Get the code by cloning this repository git clone it, then cd into the folder , or by unzipping the zip that scripts/build-package builds from a clone. pip install is not supported yet and stops with a message saying so. Below, weatherdeck means python3 bin/weatherdeck on macOS/Linux and bin\weatherdeck.cmd on Windows cmd or PowerShell . 1. See it with synthetic data. weatherdeck run --demo Open http://127.0.0.1:8787/ http://127.0.0.1:8787/ . Three invented sources report; one stops reporting after about two and a half minutes, shows late from about 2:40 and silent about three minutes after start, so you can see the offline state. Ctrl-C stops it. --port N to change the port. 2. Run it for real. weatherdeck on background; prints the URLs weatherdeck status weatherdeck off The data lives in your per-user data directory --data DIR or $WEATHERDECK DATA to choose another . On Windows, weatherdeck startup install also starts it at every logon, with no admin rights. 3. Send it something. Any tool, one POST from the same machine, no setup needed : curl -X POST http://127.0.0.1:8787/api/ingest -H 'Content-Type: application/json' -d '{ "schema": "lookout.feed", "schema version": "1.0", "source": { "id": "my-laptop" }, "items": { "id": "build", "title": "Nightly build", "state": "running" } }' The schema id reads lookout.feed on purpose: it is the wire name every adapter already speaks, kept unchanged when the product was renamed see docs/feed-spec.md https://github.com/Moshik21/weatherdeck/blob/main/docs/feed-spec.md , "Schema ids" .To feed it continuously, run the example adapter, which turns a hand-edited list plus this machine's vitals into a feed and pushes it to every host in a list: cp examples/adapter/work.example.json work.json cp examples/adapter/sinks.example.txt sinks.txt edit the hosts python3 examples/adapter/push example.py --work work.json --sinks sinks.txt To feed it from your own tool, see docs/adapters.md https://github.com/Moshik21/weatherdeck/blob/main/docs/adapters.md , "Write a pusher for your tool". 4. Let other devices see it. Add addresses to hosts.bind in your config file a LAN address, a VPN range, or both , create a token per source weatherdeck token new my-laptop , and open the page from your phone. Once any token exists, pushes need Authorization: Bearer