v1 · a Claude Code plugin · no account needed
Your team’s Claude Code usage, committed to the repo.
tokentaby logs every turn, token and model straight into .tokentaby/ in your own repository. Pull the branch and you have the whole team’s numbers — cost per ticket, per branch, per developer — with no dashboard to host and no telemetry to trust.
- Nothing leaves your machine
- Shared through git, not a server
- MIT licensed
$161.77
vs yesterday
$900.56
vs last week
$3,860
This month, straight-line
5
All logging into one repo
Daily spend by model · last 30 days
- $0.00
- $100
- $200
A real, interactive chart — hover or tab through it. Numbers are demo data.
How it works
No server, no signup, no SDK in your code.
The tracker is a Claude Code plugin and a folder in your repository. Git is the sync layer, your clone is the database, and the only thing you have to remember is to commit.
- 01
Install the plugin
One command inside the repo. It writes a .tokentaby/ folder, registers a pre-commit hook, and asks which id to log your usage under.
.tokentaby/ config.json · pricing.json · devs/
- 02
Keep working
Every Claude reply is appended as one JSON line: model, tokens, cost estimate, the task and branch that were active, and how long it took. Events wait in .git/ until you commit, so git status stays clean.
devs/mdsami/2026-10.ndjson {"t":"turn","model":"claude-opus-5",…}
- 03
Pull and look
Teammates' usage arrives with an ordinary git pull — union-merged, so parallel appends never conflict. Read it in the terminal, in the dashboard, or just ask Claude.
/tokentaby:usage · /tokentaby:dashboard · "what did TKT-142 cost?"
Get started
Install the CLI once per machine, then add the plugin from inside any git repository you use Claude Code in. The first developer to commit .tokentaby/ switches tracking on for everyone.
- 1 · Once per machine
npm i -g tokentaby - 2 · In Claude Code
/plugin install tokentaby - 3 · Share with the team
git add .tokentaby && git commit -m 'chore: track Claude Code usage'
The CLI carries the rollup and dashboard commands and the pre-commit check; the plugin is what records each turn.
Features
Enough detail to act on, nothing you have to maintain.
Attribution you didn't have to add
Each turn is stamped with the branch and the active task, so cost rolls up by ticket, by feature, by release — without anyone tagging anything by hand.
Subagents counted separately
A main-thread turn and a subagent's turn are different lines in the log. When a run costs four times what you expected, you can see which fan-out did it.
Model mix, not just totals
Frontier, balanced and fast tiers are broken out everywhere. The actionable number is rarely the total — it's the share of spend sitting on the most expensive model.
Cache accounting done properly
Cache writes and cache reads are priced at their own multipliers, so a long session reads as the bargain it usually is instead of a scary token count.
Filters that compose
Narrow by developer, model, task, branch or minimum cost. Every active filter shows as a chip you can remove, so you always know what the number on screen means.
A privacy floor, set by the team
The repo's config is a floor, never a ceiling: any developer can log less than the team default, never more. Commits are refused outright if a logged line still looks like a credential.
Team view
One clone, everybody’s numbers.
Because the log is in the repo, any teammate who can read the code can read the usage. No seats to buy, no admin to ask, no second tool to keep in sync.
Cost profile by developer
Deliberately not a leaderboard: the bar shows spend, the inner segment shows how much of it went to the frontier model.
| Developer | Share of spend | Turns | Cache hit | Cost |
|---|---|---|---|---|
| Samimdsami | 32% | $1,017-4% | ||
| Priyapriya | 58% | $806.10+12% | ||
| Jonasjonas | 47% | $630.01+34% | ||
| Lenalena | 57% | $546.86-23% | ||
| Omaromar | 39% | $411.99+17% |
Frontier modelEverything elseTrend is against the previous 30 days.
Model mix
Share of estimated cost, last 30 days.
Cost by task
Sort any column. Every turn already knows which ticket it belonged to.
| Models | Cache read | ||||
|---|---|---|---|---|---|
| TKT-171mergedDesign tokens for dark mode | Sonnet 5.5Haiku 5.5Fable 5.1Opus 53 devs | 30 | 1,097 | 26M | $35.58 |
| TKT-142mergedRewrite billing webhooks | Sonnet 5.5Fable 5.1Opus 5Haiku 5.54 devs | 43 | 1,157 | 29M | $34.77 |
| TKT-160mergedFlaky checkout e2e suite | Fable 5.1Sonnet 5.5Haiku 5.53 devs | 22 | 575 | 17M | $19.67 |
| TKT-164openTerraform module for the new region | Haiku 5.5Opus 5Fable 5.1Sonnet 5.55 devs | 23 | 694 | 17M | $18.54 |
| TKT-176in reviewBatch the ingest queue | Sonnet 5.5Fable 5.1Opus 53 devs | 14 | 452 | 9.3M | $15.51 |
| TKT-151in reviewVirtualise the audit log table | Opus 5Sonnet 5.5Fable 5.1Haiku 5.53 devs | 21 | 730 | 16M | $13.59 |
| TKT-180openDrop the legacy events table | Opus 5Haiku 5.5Sonnet 5.52 devs | 14 | 403 | 15M | $8.33 |
| TKT-158openMigrate auth to short-lived tokens | Haiku 5.5Sonnet 5.5Opus 52 devs | 14 | 370 | 6.3M | $2.77 |
Working rhythm
Turns by weekday and hour — the honest picture of when the team leans on Claude.
| 0 | 6 | 12 | 18 | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Mon | ||||||||||||||||||||||||
| Tue | ||||||||||||||||||||||||
| Wed | ||||||||||||||||||||||||
| Thu | ||||||||||||||||||||||||
| Fri | ||||||||||||||||||||||||
| Sat | ||||||||||||||||||||||||
| Sun |
What gets logged
A usage tracker your teammates will actually agree to.
Everything written is committed to a repo your team already reads, in plain newline-delimited JSON. There is no hidden payload to audit, because there is nowhere for it to go.
Written to the log
- Timestamp, developer id and session id
- Model, and whether it was the main thread or a subagent
- Input, output, cache-write and cache-read token counts
- Estimated cost, request count and reasoning effort
- Active task, branch and turn duration
- Prompt text — hashed, truncated or full, by team policy
Never written, ever
- File contents
- Code diffs
- Tool output
- Command output
- Anything at all sent off your machine
A pre-commit hook refuses the commit if a logged line still looks like a credential — the check runs before anything reaches history.
Prompt text is a dial, and it only turns down
The team sets prompt_mode in .tokentaby/config.json. That setting is a floor: an individual developer’s own config can make their logging more private than the team default, never less.
- hash_only
- A hash and a length. No text is written anywhere.
- truncateddefault
- The first 200 characters, with API keys, tokens and passwords replaced by [REDACTED]. The default.
- full
- The whole prompt, still with secrets redacted.
Plans
Free where it belongs. Paid where we add work.
The tracker itself stays open source and complete — we are not going to ship a crippled free tier of a tool that writes to your own repo. You pay us when you want the parts we have to run and support: cross-repo roll-ups, alerting, single sign-on, and a contract.
Open source
Free
The whole tracker, MIT licensed. Everything on this site's demo runs on it. No seat count, no trial, no feature held back.
Install it- Unlimited developers and repos
- Every chart and roll-up in the demo
- Local dashboard on localhost
- Git-based sharing, no server
- Editable price table
- Community support on GitHub
- Hosted roll-ups across reposnot included
- SSO and audit trailnot included
Team
$9per developer / month
For when the numbers stop being one repo's problem. Roll-ups span every repository, with budgets and alerts on top.
Start a 30-day trial- Everything in Open source
- Roll-ups across every repo at once
- Monthly budgets with threshold alerts
- Slack and webhook notifications
- Cost attribution by team, not just dev
- CSV and API export
- Email support, one working day
Enterprise
Let's talk
Self-hosted or air-gapped, your identity provider, your retention rules, and a contract your procurement team will actually sign.
Talk to us- Everything in Team
- Self-hosted or air-gapped deployment
- SAML / OIDC single sign-on
- Audit trail and retention controls
- Custom price tables per contract
- Security review and DPA
- Named contact, agreed response times
Billed per developer who actually logged a turn that month — nobody pays for a seat that sat idle. Annual billing takes two months off.
Talk to us
Most enterprise conversations start with one of three questions: can this run somewhere our code never leaves, can it use our identity provider, and what exactly gets written to disk. All three have straight answers — tell us which one matters and we’ll start there.
- A 30-minute call with someone who wrote the thing, not a sales engineer reading slides
- A security review pack and DPA up front, before you ask
- A trial on one real repository, with your own price table
Rather read the code first?
It’s all on GitHubModel rates
Every model, priced from one file you control.
Rates live in .tokentaby/pricing.json, so the numbers in the dashboard are reproducible and reviewable in a pull request like anything else. Cache writes default to ×1.25 the input rate and cache reads to ×0.1.
| Model | Input | Cache write | Cache read | Output |
|---|---|---|---|---|
| Fable 5claude-fable-5 | 10.00 | 12.50 | 1.00 | 50.00 |
| Fable 5.1claude-fable-5-1 | 10.00 | 12.50 | 0.25 | 50.00 |
| Mythos 5claude-mythos-5 | 10.00 | 12.50 | 1.00 | 50.00 |
| Mythos 5.1claude-mythos-5-1 | 10.00 | 12.50 | 0.25 | 50.00 |
| Opus 4claude-opus-4-0 | 15.00 | 18.75 | 1.50 | 75.00 |
| Opus 4.1claude-opus-4-1 | 15.00 | 18.75 | 1.50 | 75.00 |
| Opus 4.5claude-opus-4-5 | 5.00 | 6.25 | 0.50 | 25.00 |
| Opus 4.6claude-opus-4-6 | 5.00 | 6.25 | 0.50 | 25.00 |
| Opus 4.7claude-opus-4-7 | 5.00 | 6.25 | 0.50 | 25.00 |
| Opus 4.8claude-opus-4-8 | 5.00 | 6.25 | 0.50 | 25.00 |
| Opus 5claude-opus-5fast mode ×2 | 5.00 | 6.25 | 0.50 | 25.00 |
| Opus 5.5claude-opus-5-5fast mode ×2 | 4.00 | 5.00 | 0.20 | 20.00 |
| Sonnet 3.7claude-3-7-sonnet | 3.00 | 3.75 | 0.30 | 15.00 |
| Sonnet 4claude-sonnet-4-0over 200K context: $6/$22.5 | 3.00 | 3.75 | 0.30 | 15.00 |
| Sonnet 4.5claude-sonnet-4-5over 200K context: $6/$22.5 | 3.00 | 3.75 | 0.30 | 15.00 |
| Sonnet 4.6claude-sonnet-4-6 | 3.00 | 3.75 | 0.30 | 15.00 |
| Sonnet 5claude-sonnet-5 | 2.00 | 2.50 | 0.20 | 10.00 |
| Sonnet 5.5claude-sonnet-5-5 | 2.00 | 2.50 | 0.20 | 10.00 |
| Haiku 4.5claude-haiku-4-5 | 1.00 | 1.25 | 0.10 | 5.00 |
| Haiku 3.5claude-3-5-haiku | 0.80 | 1.00 | 0.08 | 4.00 |
| Haiku 5.5claude-haiku-5-5over 100K context: $0.5/$2.5 | 0.10 | 0.13 | 0.01 | 0.50 |
| claude-3-haikuclaude-3-haiku | 0.25 | 0.31 | 0.03 | 1.25 |
FAQ
The questions that come up first.
Are these real costs?
No, and the product never claims otherwise. Most teams pay a flat Pro, Max or Team subscription, so there is no per-token bill to report. Every figure is an API-equivalent estimate computed from the rates in pricing.json — useful for comparing one task, model or week against another, useless as an invoice.
What is actually free, and what do I pay for?
The tracker is free and MIT licensed, with no seat limit and no features withheld — it writes to your repo, so charging for it would be charging you for your own data. The paid plans cover the parts we have to run or stand behind: roll-ups that span every repository at once, budgets and alerting, single sign-on, self-hosted deployment, and a support commitment.
Does anything get sent anywhere?
No. The plugin writes files inside your repository and nothing else. There is no API key to configure, no account to create and no endpoint to allowlist. Sharing happens when you push, to wherever you already push.
Won't concurrent commits conflict?
The logs are append-only and declared merge=union in .gitattributes, and each developer only ever writes to their own folder. Two people appending on the same day merge cleanly without a conflict to resolve.
What happens to months of accumulated history?
Older months get squashed into daily totals with a rollup command, so the repo keeps a long trend line without carrying every turn forever. Recent months stay at full fidelity.
Can a teammate opt out?
Yes. A developer can set a stricter prompt mode than the team default, or not install the plugin at all — their turns simply never get logged. The team policy can only tighten what is recorded, never loosen it.
Does it work with subagents and parallel runs?
Yes, and that is one of the more useful parts. Subagent turns are logged as separate lines with their own agent id and type, so a fan-out that quietly cost more than the main thread is visible rather than averaged away.
Stop guessing which ticket was the expensive one.
Install it in a repo, keep working, and commit. By the end of the week you will know where the tokens went — and so will everyone else on the team.
npm i -g tokentaby/plugin install tokentaby