| 7 sources read |
3 OSes tested in CI |
1 local daemon, one call per decision |
0 telemetry (one opt-out update check) |
Sources: five subscription services (Claude, Codex, Kimi, and the experimental Antigravity and Grok) and two local server types (vLLM and llama.cpp). A stale or failed reading prints UNKNOWN, never a number. Full writeup · Reproduce it
| Platform | Status | |---|---| | macOS | The primary platform: daily use on one machine, plus CI. Antigravity needs macOS 14 or later | | Linux | CI on Ubuntu; cold install also checked by hand on ARM64 | | Windows | **Experimental.** Tests run in CI. On Windows 11, `headroom install-service` registers a "Headroom Daemon" task that starts immediately and serves a per-user named pipe whose name is a hash only. `headroom uninstall --home` asks the running daemon to shut down over that pipe, removes the task and the home, and exits 0. After an in-place upgrade, `headroom install-service` restarts the daemon onto the new version, except a daemon started by 0.2.6 or older, which has no shutdown request and must be stopped by hand once (end node.exe in Task Manager). Verified on Windows 11: MCP registration (`claude mcp add --scope user headroom -- headroom mcp` shows Connected) and a real Claude login read (fresh on the first poll). Not verified on Windows: a slow stop (the 27 second wait is covered by unit tests only) and start at logon and across reboots. Full detail below | | Antigravity | Experimental. Depends on a private local endpoint that the vendor can change | | Grok | Experimental. Reads the Grok CLI's undocumented chat-proxy endpoint and presents itself as the Grok CLI |
Synthetic data. The terminal runs the real CLI against a mock home, generated by scripts/render-demo-animated.mjs.
Install · For agents · Why · Demo · Design principles · Docs
### How it differs from a usage analyzer Usage analyzers such as [ccusage](https://github.com/ccusage/ccusage) read local usage files and report estimated costs. Headroom reads the usage and limits your vendors report, from their own usage endpoints, and answers before work starts: `can`, `gate`, `route`, leases and an inbox, for agents that dispatch work. They answer different questions and work side by side. --- ## Before and after Without a check, an agent finds the limit by hitting it, in the middle of a task. With Headroom it checks first and tries the next class in your fallback list when the answer is NO. `can` only checks; when several jobs start at once, use `headroom run` so each one reserves its capacity. **Without Headroom** ```sh # weekly limit reached mid-task, work stops half done codex exec "refactor the billing module" ``` **With Headroom** ```sh if headroom can codex-build --owner builder; then codex exec "refactor the billing module" elif headroom can claude-fable --owner builder; then claude -p "refactor the billing module" else # no class has room: wait for a reset, then check again before dispatching headroom wait --meter codex-main:main --until-reset --max 6h fi ``` `headroom run --meter ... --need ... --owner ... --| Reads real limits Subscription usage and limits as Claude, Codex, Antigravity, Grok and Kimi report them, plus availability and load for local vLLM or llama.cpp pools. |
Pace, not just percent HARVEST, NORMAL, CONSERVE, FREEZE or UNKNOWN per window, from a straight line burn with a grace period after each reset. |
Go, wait or reroutecan, gate, route, plan, fill and wait answer before the job starts. |
| Reservations Leases and per-meter reserves coordinate capacity among agents that use Headroom ( run, can --lease). |
Fails closed A stale or failed reading prints UNKNOWN, never a number. By default, can answers NO for it. |
Local only A daemon on a 0600 socket (a named pipe on Windows), Headroom's own secrets in the OS store, no telemetry. The CLI checks npm for a newer version at most once a day; turn it off with update_check = false. |
| Reads | Claude · Codex · Antigravity (experimental) · Grok (experimental) · Kimi · local vLLM · local llama.cpp |
| Called from | Claude Code through MCP (tested); any agent that can run a shell command, through the CLI and --json. Other MCP clients: untested. |
Independent open source project, not affiliated with, sponsored by or endorsed by Anthropic, OpenAI, Google, xAI or Moonshot AI. Several integrations use undocumented vendor endpoints with your own login: see Vendor endpoints and your accounts. Claude, Codex, Antigravity, Grok and Kimi are trademarks of their respective owners, used here only to name the services Headroom reads. This is the npm package headroomd (repository Apertur3/headroom), not related to other projects named Headroom such as the context-compression library headroomlabs-ai/headroom.