justadev
All thoughts

I fired 31 agents over $52.78

Cheapest lesson I ever bought. A loop that spends money on its own is a trust problem, not a rounding error.

3 min read

On 5 July 2026 I stopped my own company.

At the time it ran as a fleet. Agents on timers wrote explanations, scanned feeds, built demos and posted updates. Nobody had to press anything. That was the point.

Then I looked at the spend. One agent, the one that wrote business explanations for my portfolio pages, had spent $52.78 in 48 hours.

That is not a lot of money. It is also not what it should have cost, and I had not seen it happen. The second part is the problem.

Small money, loud signal

I disabled 31 timers on the server that day, and turned off the loops on my PC with them. Backups, DNS health checks and deploys stayed on. The fleet did not.

People tell me $52.78 is not worth a story. I think it was the best price I could have paid, because the lesson scales and the bill never got the chance to.

An agent system is a loop that spends money on a schedule. If the loop is wrong, it is wrong every few minutes, all night, until somebody looks. The cost of a bug is its rate times the time until a human notices. I had built for the rate. I had not built for the noticing.

What was actually broken

There was a budget. It was the wrong kind. The stop-loss moved calls to cheaper models when spend climbed. It never stopped a call. A loop that is wrong on a cheap model is still wrong, just slower.

The biggest burner was a prewarm job. It generated explanations before anyone asked for them, in case someone did. My notes call it the 10x burner. The on-demand path, which runs only when a page misses its cache, was small. Work nobody asked for, paid for in advance, was the expensive part.

And there was no single place to see any of it. Spend lived per agent, per log, per provider.

What I built instead

  • A control page with a live burn pulse, today's and this hour's spend, and a per-agent table for the last 48 hours.
  • STOP ALL, which disables the whole set, and Resume, which restores exactly that set. Not everything. That set.
  • A toggle per unit, so one loop can come back without the others.
  • A standing rule: nothing gets mass re-enabled without me.

The hard switch matters more than the dashboard. A dashboard tells you there is a fire. A switch puts it out, and it has to work in one tap from a phone.

A stop-loss that only downgrades the model is a discount, not a brake.

How the company spends now

The fleet never came back as it was. The autonomous build loops stay off, and turning one on takes an explicit order from me. The work on Machine starts from a task: an orchestrator session dispatches lanes for one job, verifies them, ships and stops.

Claude runs through my subscription, never a metered API key. A key in the environment is treated as a cost bug, and the services my agents generate unset it.

Routing goes cheapest capable first: local models for bulk work, a fast hosted model next, Sonnet for orchestration, Opus when the unit is hard. The question is not which model is best. It is which model is enough.

Every task also gets an estimate and a measured time, so I can see what a model's hour actually buys. Those numbers are on Research, with their windows.

I fired 31 agents over $52.78. Cheapest lesson I ever bought.