Every agent run on this server, and what it costs
Every agent writes down a row each time it runs: the model it used, how much it read, how much it wrote, and what that cost. This page counts four months of those rows.
The same agent, on two different models
The Scout does two jobs in one run. First it reads widely and cheaply, looking for anything worth a second look. Then it looks for a connection between two things nobody told it to compare. Those are different jobs, so they run on different models. The cheap model reads about seventy times more text for about two per cent of the money. Paying for the expensive model only where it is needed is the whole design, and the table below is the proof.
| Runs | Input read | Cost | |
|---|---|---|---|
| 87 | 1.55M | $0.61 | |
| 28 | 21K | $31.82 |
What each kind of model costs
Sorted by price, almost none of the money goes to the model that does most of the reading. Look at the first row: nearly three hundred steps used no model at all. Those are ordinary code, with no AI in them, and they are counted here on purpose. Leaving them out would suggest that everything on this server is a language model. That is not true, and it would be the more flattering story.
| Runs | Input read | Cost | Share of spend | |
|---|---|---|---|---|
| No model · ordinary code | 294 | 0 | $0 | 0% |
| Haiku · the cheap read | 364 | 1.95M | $0.77 | 1% |
| Sonnet · the everyday model | 712 | 2.22M | $33.65 | 50% |
| Opus · the heavy read | 10 | 89K | $0.69 | 1% |
| Fable 5 · the connecting step | 28 | 21K | $31.82 | 48% |
One run costs anywhere from a fraction of a cent to a dollar
The cheapest step costs about a hundred and forty times less than the most expensive one. That is not waste — the jobs are not the same size. Packaging a blog post is small and repetitive, and costs about what you would expect. Looking for connections is the most expensive thing that runs here. It has to hold a dozen threads at once and say something new, and it does that twenty-eight times.
| Runs | Average | Most expensive run | |
|---|---|---|---|
| 28 | $1.14 | $1.80 | |
| 16 | $0.61 | $0.99 | |
| 4 | $0.44 | $0.58 | |
| 4 | $0.23 | $0.38 | |
| 12 | $0.11 | $0.20 | |
| 140 | $0.08 | $0.51 | |
| 276 | $0.02 | $0.03 | |
| 270 | $0.0082 | $0.0099 | |
| 87 | $0.0070 | $0.01 | |
| 1 | $0.0015 | $0.0015 | |
| 276 | $0.0006 | $0.0007 |
Most of what the models read, they had read before
The agents read the same long set of instructions at the start of every run. That text is paid for once, then read again at a fraction of the price — the rows below call that the cache. It is the reason the bill runs to two figures instead of four. It also explains something odd in the totals at the top of this page. The reading figure there counts only text paid at full price. The true amount read is much higher.
4.3× more read from the cache than read at full price
| Tokens | |
|---|---|
| Read from cache | 18.34M |
| Written to cache | 4.85M |
| Read at full price | 4.27M |
Busy months and expensive months are not the same months
May was by far the busiest month and one of the cheapest. The blog agents were running in bulk, making lots of small, cheap calls. July and August are quieter and cost far more, because the work changed. There were fewer runs, and each one asked a better model to think harder. So how busy a month was tells you very little about what it cost. That is why both columns are here, and why each has its own scale.
| Runs | Cost | |
|---|---|---|
| 2026-04 | 12 | $0.11 |
| 2026-05 | 1,086 | $8.80 |
| 2026-06 | 41 | $0.98 |
| 2026-07 | 200 | $33.61 |
| 2026-08 | 69 | $23.42 |
What the names in the tables mean
The names in the tables are the steps each agent logs, not the agents themselves. Several agents log more than one kind of step, and one name on this list is not an agent at all.
| The logged name | Who that is | What the step does |
|---|---|---|
ask.explorer | Ask assistant | a visitor asking a question on a solution page |
chief_shadow | Wire Editor | the Wire Editor marking its own shortlist afterwards |
content_agent | Content agent | the blog agents drafting from a code change |
director | Director | a turn of conversation, usually started by a message from me |
ghost.create_draft | not on the roster | not an agent — the blog itself accepting a post |
marketer_agent.extract | Marketer agent | pulling descriptors out of a finished draft |
marketer_agent.package | Marketer agent | turning those descriptors into titles and tags |
scout_synthesis | Scout | the same run looking for connections, on the expensive model |
scout_walk | Scout | the Scout's cheap first read, looking widely for anything worth a look |
sysadmin | Sysadmin | the 06:20 health check, reading the server end to end |
wire_triage | Wire Editor | the Wire Editor sorting inbound items |
writer_draft | Writer | one attempt at a field note from a claimed lead |
The system that produced this page
Counted 2026-04-25 to 2026-08-09. Snapshot taken 2026-08-09 — the figures move only when the snapshot is re-run, never while you read.