Which repo is eating your AI budget?
Your vendor dashboard counts tokens per user. It cannot tell you which service, which team, or which runaway session. Tallyhook reads the logs Claude Code and Codex already write and puts a dollar figure on each one.
From $49 a month for the whole workspace. No card to start. Only metadata leaves the laptop, never code or transcripts, and the collector is open source. How it works
$ npx tallyhook AI coding-agent usage on this machine, last 30 days (public API list prices) REPO SESSIONS OUTPUT LIST COST github.com/acme/storefront 118 10.8M $1,450.59 github.com/acme/patient-portal 100 7.2M $867.84 local:scratch 4 96.2k $20.36 TOTAL 222 18.1M $2,338.79
Example output. It reads the logs already on your machine and fetches one public price list. Read the source before you run it.
- Every developer's sessions in one place, grouped by service or squad
- An email the moment a single session crosses your dollar threshold
- A monthly budget per group, and a month-end forecast
Find the expensive repo.
Every session lands under the repo it ran in, and repos group into whatever you actually plan by: a service, a squad, a product line. Cost by group, by developer and by model, for any date range.
Catch the expensive session today.
Our most expensive single session has passed $390: one conversation, resumed across nine days, still open. Set a dollar threshold and an email goes out the moment a single session crosses it, the same day, not on next month's statement. A monthly budget per group warns at 80% and again at 100%.
Know before the renewal.
A month-end forecast from the spend so far, so the question at renewal is whether to buy more seats or fewer, answered with a number instead of a feeling.
Counted per user and per model. Never per repo.
And inside a subscription seat there is no dollar figure at all — so AI spend becomes one line on a card statement that nobody can break down when finance asks.
- Claude Team and Console
- Usage and estimated spend per user and per model. Nothing per repo or per team, and no dollar figure for usage inside a seat.
- Cursor
- Team analytics count AI-written lines per repo and usage per user. No cost per repo.
- OpenAI / Codex
- Workspace analytics show usage per user and per model. Nothing per repo.
- One Max seat, 8 weeks to 29 Sep
- $4,054 of list-price usage across 740 sessions. The dashboard could not say what any of it was for.
Three steps. After that it runs on its own.
One command per laptop
It registers a Claude Code hook and reads the session logs Claude Code and Codex already keep. Existing history uploads immediately, so there are real numbers before anyone has to wait a week.
npx tallyhook install <token>
Group the repos once
Sessions arrive tagged with their git remote. Put each repo in a group and every past and future session follows it.
The app labels these groups “clients” today, since it was built for agencies first. Name them after your services or squads and every screen works the same.
Read it, or get emailed
Cost by group, repo, developer and model for any range, with a month-end forecast. Set a per-session threshold and a monthly budget and the alerts come to you.
Session metadata leaves the laptop. The work never does.
- Tokens by model, cache reads and writes split
- Start and end time, tool and version
- Git remote and branch, and which repos the edited files belong to
- Developer identity from git config, and the machine hostname
- Turn count and tool-call counts
- Paths of files edited
- First 160 characters of the first prompt (optional)
- Transcripts and every later prompt
- Code, diffs, file contents
- Tool output and command results
- Environment variables and secrets
The collector is open source (MIT): one dependency-free file, about 1,019 lines. Read it on GitHub, or get it from npm. Sign-in is GitHub OAuth only, so there is no password of yours for us to lose.
Flat per workspace. Less than an hour of engineering time.
Unlimited repos, groups and sessions on both plans. Fourteen days free, no card until you decide.
| Team | Agency | |
|---|---|---|
| Per month | $49 | $149 |
| Developers running the collector | up to 5 | up to 20 |
| More than 20 developers | — | +$7/seat/month, any time |
| Everyone else (managers, finance) | Free, up to 50 | Free, up to 50 |
| Alerts, budgets and forecast | Yes | Yes |
| Exports and shareable reports | Yes | Yes |
| Price overrides for negotiated rates | Yes | Yes |
| Start free | Start free |
Costs are list-price equivalents from each vendor's public API pricing. On a subscription (Claude Max, Team, ChatGPT Pro) that is the value of what your team used, not a bill you received. Billing clients for this usage? The same product does invoices with markup — see the agency version.
Questions
Does this rank developers by how much they spend?+
No, and it is not built to. The default views are per repo and per team, because that is where a spending decision actually gets made. Per-developer totals exist, since you need them to size seats and spot a runaway loop, but they are never the headline and nothing in the product scores or ranks people. If you are looking for a tool to performance-manage engineers by AI usage, this is the wrong one.
We are on Claude Max seats, so there is no per-session bill. What does the number mean?+
It is a list-price equivalent: what that usage would have cost on the API, priced from the vendors' public rates. On a subscription that is the value of what your team used, not an invoice you received, and the app says so wherever a number appears. It is the only way to get a dollar figure at all for subscription usage, which vendor dashboards leave blank.
How is this different from the Anthropic or OpenAI dashboard we already have?+
Those count per user and per model. Neither knows which repo, service or team a session belonged to, and neither puts a dollar figure on usage inside a subscription seat. Tallyhook attributes every session to a repo through its git remote, groups repos however you like, and prices it.
What does the collector actually send?+
Metadata only: token counts by model, start and end time, tool and version, git remote and branch, developer identity from git config, the machine hostname, turn and tool-call counts, paths of edited files, and optionally the first 160 characters of the first prompt (which you can turn off). Transcripts, code, diffs, tool output and environment variables never leave the machine. The collector is MIT-licensed and one readable file, so your security reviewer can check that claim rather than trust it.
Do we have to install anything to try it?+
No. npx tallyhook runs on one machine, needs no account and uploads nothing; it prints that machine's cost per repo for the last 30 days. The hosted product is what turns that into one view across the whole team.
Can non-developers see the numbers?+
Yes, and they are free. Only developers running the collector count toward the seat limit, so an engineering manager, a finance lead or a founder can sign in and read every number without adding to the bill.