A spectroscope reads, from pure light, what a star is made of. Spectroscope fans an agent's event stream into discrete spectral lines (tokens, tool calls, permission gates, sub-agents) instead of black-box fog. And the record does the thing it describes: the project's session-by-session log records AI agents building the very tool that watches AI agents. For the finale, I turned the instrument one level up, onto the project that built it.
session files scanned 2,388
billable tokens 490M (input + output + cache creation,
each API response counted once)
all-in tokens 15.7B (cache reads included — reported
separately, never blended)
by model, billable:
fable-5 203.1M
opus-4.8 190.1M } two models in tandem
opus-5 69.4M
sonnet-5 26.2M
haiku-4.5 1.7M
gpt-oss:20b 2,689 (local!)
<synthetic> 0 (the simulator makes no API call)
peak act: ship week 122.3M billable
The reveal has a catch, and the catch is the story. The CLI writes one transcript line per content block and repeats the identical usage object on each, so a naive line-sum overcounts roughly threefold. Every figure above counts each API response exactly once, keyed by its message and request ids. In the project's own words: the instrument had to pass its own audit before it could be trusted on its own story.
Three honesty rules travel with the numbers, and they generalize to any telemetry you ever publish. Billable and all-in are shown separately, because all-in is dominated by cache reads and blending them makes a flattering headline. Sessions that merely shared a folder with the project were struck from the corpus openly, listed in the fine print rather than silently dropped, and about 42M billable tokens left with them. And where the earliest acts predate the logs, the pages say so instead of guessing.
Two details keep rattling around in my head. The telemetry recorded its own change of hands: the early acts were led by one model pair, and in the final act a newer model suddenly writes the majority of the tokens. The log noticed the handover before anyone wrote it down. And my favourite line in the whole record is the smallest, a correction I typed mid-build: "aber sage bitte nicht Cloud sondern LLM." Don't say cloud, say LLM. Name the real thing. That instruction is tiny, and it is the entire ethos of an instrument that reads the stream and reports what is actually there.
That's the series. The stream was the product from the first split of the archiver to the last audit of its own build, and every claim here traces to a commit, a file, or a session log.
What I'd do differently
Date every number. Between drafts of the story, the same headline existed in four snapshots, because the corpus kept growing while being written about, and a stale README briefly claimed a figure three times too high (the very overcounting bug the audit later fixed). A number without a date and a counting rule is not a measurement; it's a rumour with digits.