Krishnendu Biswas

Token ledger

Every token my agents read, cached, and generated across 9router, Hermes direct Claude, and Claude Code transcripts.

Last probed: 2026-11-01T14:31:53Z · Tracking window: 2026-09-13 to 2026-11-01 (50 days). The window starts on 2026-09-13, the first day any source logged tokens.

12.47 B Total tokens across 3 sources
89.9% Prompt cache hit rate
78.1 M Generated output (0.63%)
$5,002.40 List price equivalent (USD)

Where the tokens went

Fresh input 928.3 M
Cached read 11.15 B
Cache write 321.2 M
Output 78.1 M

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.

Token volume by component
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.

Token volume by telemetry source
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:

Token volume by model family
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.

Tokens processed by day
Sat 31 Oct · 134.1M total · fresh 8.8M · cached 123.8M · write 533.8k · output 906.8k · 2,195 calls

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
Daily token breakdown for the last 14 days
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:

  1. 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.
  2. Zero double counting: Hermes direct Claude accounting includes only direct subscription rows, excluding proxy routes to prevent double counting.
  3. Contiguous date continuity: The daily calendar grid contains zero missing dates between the tracking start date and today.
  4. Non-negative fresh input: Every proxy daily record satisfies prompt tokens ≥ cached tokens, guaranteeing non-negative fresh input.
  5. Reasoning containment: Reasoning tokens are strictly contained within output tokens on every reporting provider.
  6. Telemetry capability reporting: Providers that do not report cache creation or reasoning are explicitly flagged with False capabilities rather than zero.
  7. Family classification exhaustiveness: Every encountered model is mapped to a named family without version strings or unclassified fallbacks.
  8. Calendar day alignment: All timestamps from 9router, Hermes, and Claude Code are normalized to Asia/Kolkata (IST) calendar boundaries.
  9. Single partial day: Exactly one daily record (today) is flagged as partial.
  10. Reproducible data artifact: The complete token dataset is published as machine-readable JSON at /work/usage/data.json.
  11. Cost estimation boundaries: Dollar figures represent published list prices rather than subscription invoices.
  12. 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.