The statusline is the strip along the bottom of your terminal. In Claude Code it usually shows the model name and the folder you are in, and then it sits there doing nothing while an agent grinds through a two-minute tool call. That is prime real estate wasted. We pointed ours at our own signal instead: what is overdue on the backlog, what is due next, what we last shipped. One gauge at a time, rotating once a minute.
What we did
Claude Code runs a command on every redraw and prints whatever it returns as the status bar. So the whole thing is two small scripts and a cache file.
-
statusline.pyruns on every redraw. It reads the session JSON on stdin (working directory, model), reads a pre-built feed cache, picks one line by the clock, colours it in Workloft red and prints. No network, no subprocess, so it never adds lag to your prompt. -
build-feed.pydoes the slow half on cron, every ten minutes. It parses our Loop backlog (gary list) for the overdue count and the next thing due, then scans the newest published ship and note. It writes four one-line gauges to~/.workloft/statusline-feed.txt.
Splitting the two is the point. The redraw path stays instant because all
the parsing happens out of band. Right now the bar rotates through
Loop: 9 overdue, Next: Spike Qwen3.8-27B · Sun 30
Aug, the last ship, and the last note.
Why it was worth doing
The prompt for this was a daily.dev plugin that puts developer news headlines in the same bar. Nice idea, wrong feed for us: general news is noise when you are heads-down. The bar is free real estate, and the only real question is whose numbers go in it. Someone else's headlines, or your own gauges. We went with ours.
The result is that a glance down tells you your backlog pressure without opening anything, switching window or breaking focus. It is about ninety lines of Python with no dependencies, and it is live on our own box now, which is the only real test of whether we would use it.
What's still off
The feed is only as fresh as the last cron run, so a gauge can be up to ten minutes stale. Fine for a backlog reading, wrong if you ever want something real-time in there. It also reads our local sources, so on a machine without them it quietly degrades to the plain model and folder line. That is deliberate, but it means the feed builder is the part you have to rewrite for your own signal, not just install. And the accent uses truecolor, so terminals stuck on a 256-colour palette will approximate the red rather than hit it.
What's now in the stack
statusline.py| the redraw command, wired into~/.claude/settings.json.build-feed.py| cron every ten minutes, writes the gauge cache.- Ten unit tests covering the date parsing, the rotation and the graceful fallbacks.
- Open-sourced, MIT, in our public ships repo at github.com/workloftai/ships.