One number across coding agents
Nobody has one coding agent anymore. Claude Code writes JSONL. Cursor keeps a local project database. Codex has session files. Gemini, Copilot, Cline, Windsurf and the rest of the bench sit next to them. Finance still asks for one number. The honest version of that number is “priced where the logs support it, labelled a lower bound everywhere else.”
Phase 1 is Claude Code because the logs actually contain five token classes. That is enough to compute a real invoice: plain input, output, 5-minute cache write, 1-hour cache write, cache read. On 66 MB of local files the naive total was $15,680.35. The cache-aware total was $3,123.97. Shipping a fake Cursor dollar amount next to that would have been the opposite of the product.
Live, on the tray, on the map
The landing page carousel is a compatibility map, not a claim that every logo has a parser. Three layers:
- Live — Claude Code. Watch folder
~/.claude/projects. Full pricing. - On the tray — Cursor, Codex, Gemini. The app knows they exist. Cursor’s local tracking database records line hashes, not tokens, so there is nothing honest to multiply yet.
- On the map — Copilot, Windsurf, Cline, Ollama, Zed, Warp, JetBrains, and the rest. The UI already has a place for them. We will not price a log format we have not measured.
Unpriced models inside Claude are the same rule at a smaller grain: missing from the rate card means unpriced, never zero. The dashboard says so. The all-time total is a lower bound. When Cursor grows a token counter we can trust, it will land in the same column, with the same honesty.
Why one desktop window still wins
A cloud aggregator would need every vendor’s API key and would see the prompts. TokensLab stays on the machine and reads the files those tools already write. You get one burn rate, one idle list, one graph of files — for the agents that can support it — without making the logs leave home.
Star the GitHub repo if you want release notes. Download the installer if you want the number. Get TokensLab and start with the Claude folder you already have.