Badi
Look up only when it needs you.
Coding agents work for minutes, then stop without a sound to ask for permission. Badi turns a spare iPhone into an ambient status screen for Claude Code: a pixel-art tabby named Tekir types while the agent works, raises a paw when it needs you, and dozes off when everything is done.
- What it is
- A desk companion for AI coding agents
- Status
- In daily use, private
- Started
- September 2026
The problem
Agentic coding means long runs and sudden stops. You either babysit the terminal and lose your focus, or walk away and come back to find the agent has waited twenty minutes for a yes.
With several sessions across several machines it gets worse: which one needs me?
How it works
Hooks on each Mac forward small, filtered events to a tiny server, which folds them into one state per session and streams it to a phone on a stand.
The character shows the most urgent state across every session: needs you, working, done or idle. The panel beside it lists the sessions, with the one waiting for you at the top.
There are seven characters to choose from, three sound timbres named Wood, Glass and Felt, and an hourly Available window for the owner's own focus ritual.
Tap a state to see Tekir react.
Under the hood
A state machine built from real quirks. One hook races the permission prompt it triggers, so it is never allowed to hide a pending prompt. Out-of-order events are dropped using timestamps from the Mac, and a closed session leaves a five-minute tombstone so late events can't bring it back.
Seeing an interrupt no hook reports. Pressing Esc mid-answer fires no hook at all. Badi's status-line wrapper reads the end of the transcript for the interrupt marker, while passing your existing status line through byte for byte.
Designed for a screen that's on all day. The layout wanders a few pixels over four minutes, swaps sides every twenty, and dims after ten idle minutes. Burn-in risk was measured from screenshots, not guessed.
Sound with no files. One runtime dependency, no database, about 17 MB of memory, and not a single audio file. Each cue is built from sine partials with a fast decay, tuned for phone speakers and verified offline by measuring peak and RMS.
Where it stands
Badi went from idea to daily use in two days, at the end of September 2026, and runs on a home server that is reachable only over a private network. It has 57 automated tests.
It isn't public yet. Next on the list: knowing when a Mac has gone to sleep, quiet hours, and Windows support.
Pace. Commits per week since December 2025. The quiet weeks are real too.
Badi26 commits
Built with: Node.js, Express 5, Server-Sent Events, Vanilla JavaScript, Web Audio, Shell hooks, Docker, Tailscale