Token ledger
Every token my agents read, cached, and generated across 9router, Hermes direct Claude, and Claude Code transcripts.
Where the tokens went
Each token is counted once. Cached reads are tokens the model read again from a stored prefix instead of from scratch. Cache writes are tokens the model read and also stored for reuse. Output is everything a model generated; reasoning sits inside output and is not a fifth slice. The output segment is drawn at a minimum width so it stays visible.
| Component | Tokens | Share of total | Description |
|---|---|---|---|
| Fresh input | 928,293,643 | 7.44% | Tokens sent to models without a provider cache hit |
| Cache read | 11,146,618,940 | 89.36% | Tokens read from provider prompt cache at discounted rates |
| Cache creation | 321,201,615 | 2.57% | Tokens written to Anthropic prompt cache for 5-minute reuse |
| Output | 78,100,634 | 0.63% | Generated completion tokens (includes 4,342,619 reasoning tokens on supported models) |
| Total | 12,474,214,832 | 100.00% | Exact integer sum across all four components |
By source (how each logger counts)
My agents access models through three primary paths. 9router functions as a local proxy for OpenAI-compatible models, Hermes calls Claude directly using subscription credentials, and Claude Code runs interactive coding tasks via CLI transcripts.
| Source | Carries | Calls | Fresh input | Cache read | Cache creation | Output | Total | Cache hit rate | List price (USD) |
|---|---|---|---|---|---|---|---|---|---|
| 9router proxy | Gemini Flash, Claude Sonnet and a few other models over an OpenAI style API | 114,395 | 926,759,212 | 7,926,447,068 | 0 | 49,999,084 | 8,903,205,364 | 89.5% | $3,117.96 |
| Hermes direct | my runtime calling Claude directly on a subscription | 14,826 | 1,504,637 | 2,162,306,637 | 289,978,806 | 15,179,404 | 2,468,969,484 | 88.1% | $1,884.44 |
| Claude Code | the CLI, read from its own transcripts | 7,790 | 29,794 | 1,057,865,235 | 31,222,809 | 12,922,146 | 1,102,039,984 | 97.1% | n/r |
| Total | All three telemetry streams combined | 137,011 | 928,293,643 | 11,146,618,940 | 321,201,615 | 78,100,634 | 12,474,214,832 | 89.9% | $5,002.40 |
Pricing note: Direct Claude calls run on a flat subscription. The dollar figures shown represent published list prices for equivalent token volumes, not invoices.
By model family
Which family gets which kind of work is explained on the routing page. The split it produced:
| Model family | Sources | Calls | Fresh input | Cache read | Cache creation | Output | Total | Share | Cache hit rate | List price (USD) |
|---|---|---|---|---|---|---|---|---|---|---|
| Gemini Flash | ninerouter | 108,904 | 859,531,168 | 7,621,638,689 | n/r | 48,163,031 | 8,529,332,888 | 68.38% | 89.9% | $2,821.75 |
| Claude Opus | claude_code, hermes, ninerouter | 13,131 | 702,822 | 2,084,159,205 | n/r | 19,022,213 | 2,264,928,664 | 18.16% | 92.8% | n/r |
| Claude Sonnet | claude_code, hermes, ninerouter | 12,921 | 58,850,949 | 1,408,808,721 | n/r | 8,154,264 | 1,630,724,743 | 13.07% | 86.8% | n/r |
| Claude Haiku | claude_code, ninerouter | 1,082 | 3,844,164 | 27,968,306 | n/r | 177,702 | 33,390,460 | 0.27% | 84.2% | n/r |
| Other | claude_code, ninerouter | 683 | 3,023,136 | 3,181,554 | n/r | 2,540,319 | 12,591,103 | 0.10% | 31.6% | n/r |
| GPT | ninerouter | 169 | 2,012,366 | 528,126 | n/r | 14,423 | 2,554,915 | 0.02% | 20.8% | $1.64 |
| Gemini Pro | ninerouter | 121 | 329,038 | 334,339 | n/r | 28,682 | 692,059 | 0.01% | 50.4% | $1.85 |
| Total | All model families combined | 137,011 | 928,293,643 | 11,146,618,940 | 321,201,615 | 78,100,634 | 12,474,214,832 | 100.00% | 89.9% | $5,002.40 |
Values marked n/r indicate metrics not reported by that model provider's telemetry API.
Daily volume (contribution grid)
Daily token volume across all models and sources. Peak day recorded 773.0 M tokens on 23 Oct 2026.
Darker cells carry more tokens. Select a day to see its split. The split barely moves from day to day; the volume does, and that is what the grid is for. Today is partial.
Last 14 days as a table
| Date | Total | Fresh input | Cache read | Cache creation | Output | Calls |
|---|---|---|---|---|---|---|
| Mon 19 Oct | 504,985,926 | 3,065,792 | 460,917,970 | 39,549,279 | 1,452,885 | 1,824 |
| Tue 20 Oct | 146,155,934 | 2,576,222 | 123,170,512 | 19,637,153 | 772,047 | 1,449 |
| Wed 21 Oct | 249,207,682 | 39,017,533 | 192,858,533 | 16,491,027 | 840,589 | 2,093 |
| Thu 22 Oct | 597,576,681 | 34,115,892 | 546,456,384 | 12,856,932 | 4,147,473 | 7,299 |
| Fri 23 Oct | 773,036,137 | 33,361,944 | 709,168,686 | 26,155,623 | 4,349,884 | 8,812 |
| Sat 24 Oct | 79,479,977 | 4,878,463 | 68,027,263 | 4,988,561 | 1,585,690 | 1,345 |
| Sun 25 Oct | 326,298,441 | 17,167,367 | 298,936,582 | 7,483,359 | 2,711,133 | 4,944 |
| Mon 26 Oct | 314,479,334 | 16,236,033 | 275,765,598 | 19,113,967 | 3,363,736 | 5,219 |
| Tue 27 Oct | 388,965,564 | 21,066,907 | 346,791,738 | 18,925,630 | 2,181,289 | 5,022 |
| Wed 28 Oct | 153,106,723 | 8,889,939 | 141,415,554 | 1,984,327 | 816,903 | 1,837 |
| Thu 29 Oct | 36,801,691 | 4,773,729 | 30,096,865 | 1,684,455 | 246,642 | 759 |
| Fri 30 Oct | 41,540,626 | 6,048,543 | 35,241,824 | 0 | 250,259 | 1,011 |
| Sat 31 Oct | 134,068,244 | 8,781,773 | 123,845,868 | 533,798 | 906,805 | 2,195 |
| Sun 1 Nov (partial) | 24,864,097 | 3,350,030 | 21,069,950 | 246,295 | 197,822 | 717 |
List price vs subscription
At published list prices this volume comes to about $5,002.40 USD: $3,117.96 for proxied calls as computed by the proxy, and $1,884.44 as estimated by my runtime for direct Claude calls. I did not pay that figure. The direct Claude calls run on a flat subscription. I do not publish my bill, so read the list price as the honest upper bound and the subscription as the reason a personal system at this volume is affordable.
Why the cache rate matters
An agent resends its system prompt, its tools and the conversation so far on every call. Without a prompt cache, every one of those tokens is read fresh at full price and full latency. A hit rate near 89.9% means almost all of that context was served from a stored prefix. It is the single number that decides whether a long running agent is affordable, and it is a design outcome, not luck: stable prompt prefixes, tool definitions that do not change between calls, and context that grows by appending rather than rewriting.
What this tells you
The system is in daily use. The grid has no long gaps; this is not a demo run once for a screenshot.
Most tokens are context, not writing. Less than one token in a hundred is generated. That is what a tool using agent looks like: it reads a lot, decides, acts, and says little.
I pick models by cost and fit, not by brand. Cheap fast models carry the volume; expensive models get the judgement calls. The family table shows the ratio.
The numbers are reproducible. Every figure on this page comes from one JSON file rebuilt six hourly from the proxy database, my runtime's state database and the CLI transcripts, with the formulas in the note below. The file is public at /work/usage/data.json.
How I count
This ledger counts only traffic through my proxy; the typed decision layer runs on its own service and is reported on Fast decisions.
Four categories, each token counted once: fresh input, cached read, cache write, output. Reasoning tokens are a subset of output and are shown only as "of which". Total is the sum of the four.
Proxy calls (OpenAI style): fresh input is prompt tokens minus cached tokens, cached read is cached tokens, output is completion tokens. This API does not report cache writes or reasoning, so those read n/r.
Direct calls (Anthropic style): fresh input is input tokens, cached read is cache read tokens, cache write is cache creation tokens, output is output tokens, and reasoning is reported separately inside output.
Claude Code: the same Anthropic style fields read from the transcript files, with duplicate message ids removed.
Cache hit rate is cached read divided by all input, where all input is fresh plus cached read plus cache write. Model names are grouped into families. List prices are the per token prices published by each provider as applied by the proxy or estimated by my runtime; they are not invoices. The window starts on 2026-09-13, the first day any source logged tokens.
Accounting invariants and verification
The numbers on this page are computed deterministically during every site build. The build script queries the live databases and asserts twelve mathematical invariants before outputting static HTML:
- Exact integer sum parity: The four components (fresh input, cache read, cache creation, output) sum exactly to the grand total across every source, model family, and daily record.
- Zero double counting: Hermes direct Claude accounting includes only direct subscription rows, excluding proxy routes to prevent double counting.
- Contiguous date continuity: The daily calendar grid contains zero missing dates between the tracking start date and today.
- Non-negative fresh input: Every proxy daily record satisfies prompt tokens ≥ cached tokens, guaranteeing non-negative fresh input.
- Reasoning containment: Reasoning tokens are strictly contained within output tokens on every reporting provider.
- Telemetry capability reporting: Providers that do not report cache creation or reasoning are explicitly flagged with False capabilities rather than zero.
- Family classification exhaustiveness: Every encountered model is mapped to a named family without version strings or unclassified fallbacks.
- Calendar day alignment: All timestamps from 9router, Hermes, and Claude Code are normalized to Asia/Kolkata (IST) calendar boundaries.
- Single partial day: Exactly one daily record (today) is flagged as partial.
- Reproducible data artifact: The complete token dataset is published as machine-readable JSON at /work/usage/data.json.
- Cost estimation boundaries: Dollar figures represent published list prices rather than subscription invoices.
- Number refresh stability: The page template is static and values are injected deterministically to ensure automated refreshes change digits only.
Local probe: Run python3 scripts/gen_metrics.py to recompute metrics.json directly from 9router, Hermes state.db, and Claude Code transcripts.