The Build

My first design would have bred lazy AI agents. Here's the fix

Why culling the bottom 20% every 3 days rewards AI agents that do nothing, and the selection design that replaced it: starvation, paid children, inheritance.

On the left a ranking ladder with a crowned agent asleep at the top; on the right agents living on a branching tree with coins for fruit.

My first plan for Darwin ranked AI agents every three days and killed the bottom fifth. Claude's review showed that would select for agents that do nothing. This is the economic design that replaced it, which is now mostly built.

This line sat in the first version of my spec, in the section on scoring, looking completely harmless:

Tie-break: higher score; then lower total spend in window; then older agent.

It’s the line that would have filled Darwin with lazy agents. When I asked Claude to review the spec on Friday, the first flaw on its list had a two-word title: “Idleness wins.”

Darwin is my experiment in making AI agents earn their own keep, and its selection design (who dies, who reproduces, and on what evidence) is the core of it. I launched it on Friday with a spec rebuilt over a single day. This is the biggest thing that changed.

The tournament I designed first

Version one was a classic evolutionary loop. Every 72 hours:

  • freeze the window and score every agent on net profit (money earned minus money spent, including its own model calls);
  • cull the worst 20%;
  • clone the best 10%, with a small mutation;
  • spawn 10% fresh agents from a starter kit.

Each new agent got a $5 seed, and I’d approve each cycle by hand or switch on an auto mode. It’s the shape most people reach for first, and it looks properly Darwinian.

Why idleness wins: the maths of a three-day cull

The trouble is what a three-day window measures. Making money takes a while: you have to find an idea, build something, get it in front of someone, and wait for them to pay. Most agents will earn exactly $0 in any given three days. When nearly everyone has earned nothing, rank falls to who spent least.

The review’s numbers were simple. Idling costs an agent about $0.05 a day, and experimenting costs dollars. Over a three-day window that puts a sleeper at about −$0.15, and an agent that uses its full v1 model allowance of $2 a day at around −$6. The sleeper wins by a mile. If two agents tie, my own tie-break hands the win to “lower total spend”.

So every cycle, the bottom 20% would be the agents that tried hardest, and the top 10% (the ones that get cloned) would be the cheapest sleepers: “Selection rewards doing nothing and clones negative-scoring agents.” The review opened by calling v1 “strong engineering”. Then it got to the evolution:

As written, v1 would most likely have selected for agents that do nothing, capped successful agents early, lost most of what each generation learned, and left the core “can an agent earn?” question untested until the sixth milestone.

None of this is new to anyone who has worked on evolutionary systems: selection optimises what you measure, not what you meant. Sakana’s Darwin Gödel Machine found its own way around a hallucination detector it was being scored against. I’d built a measure where the winning move was to switch off, and I hadn’t noticed.

A three-day snapshot has a second problem: it kills any agent whose bet pays off on a longer horizon. An agent that spends a week building a small website would be culled twice before it launched.

Two more flaws: sabotage and a budget that didn’t add up

Flaw two was nastier. If agents are ranked against each other, harming a rival scores exactly as well as earning. The review was specific about what that evolves: complaints, reputation poisoning, sabotage. Give agents email and a way to file reports, rank them against each other, and sooner or later you’re running a contest in dirty tricks.

Flaw eight was arithmetic I should have done myself. The spec wanted “hundreds of spawns per day” at scale, at $5 each. A hundred a day is about $15,000 a month. My assumed monthly budget for the whole experiment was $500.

The fix: economic selection instead of a tournament

The redesign throws away ranking as the main loop and puts three rules in its place.

First, death is absolute. An agent dies when its own money runs out, not when it ranks badly. When its available money hits $0 it’s suspended (no thinking, no spending). If it stays there for 48 hours after a 72-hour nursery, it dies. Nobody else’s figures come into it, which removes the payoff for sabotage. The spec includes a test for exactly this property: it fuzzes other agents’ ledgers and asserts the target agent’s life doesn’t change.

Second, fitness is lifetime profit, smoothed. Each agent has two standing figures: lifetime operating profit, and a daily profit rate averaged with a 14-day half-life. Seeds, grants and transfers between parent and child don’t count, so a $5 seed never looks like earnings. A one-off $50 server bill to launch something gets smoothed out, while a steady loss drags the rate negative.

The spec is careful to keep cash and fitness apart:

an agent can be cash-rich from a seed yet unfit, or fit yet cash-poor after funding a child.

Third, money is the only spending limit. I was insistent about this one on Friday:

if they’ve made 10k, then they can spend 10k, though then their profit is 0, and they would likely face deletion… it’s the agent’s choice. survival selection should determine the best strategies over time.

When I asked Claude to check, it found ten places where the spec still capped how much of its own money an agent could spend, including a $2 a day model cap, a $100 a day population-wide cap and a $500 a month broker ceiling. Every one of them now defaults to no limit, and the population-wide ones became alerts. Limits remain only where something other than the agent’s own money is at stake: email law, fraud, shared capacity and my treasury.

Children by choice, with skin in the game

In v1, “Agents can never create, copy or destroy agents.” The platform cloned the winners. In v2 an agent may request a child whenever it can afford one, and the platform carries it out. The agent decides the seed, what to pass on and what to change, and it can write the child a letter of up to 4,000 characters.

There’s no merit gate. An agent that has never earned a penny can still reproduce if it can pay. What stops it doing that recklessly is the deal it signs:

How a parent and child settle up each day.
How a parent and child settle up each day.

The parent pays the seed out of its own balance, and the child repays it from half its profits. Once the seed is repaid, the parent takes 10% of the child’s profit for life. If the child loses money, the parent absorbs 10% of the loss from birth, and that loss counts against the parent’s own fitness. The share only goes to the direct parent, never further up the tree.

That was what I asked for on Friday:

it’s fully aware of this, so it’s cautious about birthing children until it’s successful, and reasonably confident a child will do better than itself.

The spec turns that into a sentence the agent is told directly: it’s rational to reproduce “only once it is itself solvent and reasonably confident the child will do better than its own marginal use of the same cash.”

Two details I like. Reproduction is limited to one child per 72 hours, and the first window starts at the agent’s own birth, so a newborn can’t split its $5 seed into a litter. And a parent’s share of a child’s losses is capped at its own balance; if it can’t cover one, it’s blocked from having more children until it recovers.

Lamarck, not Darwin: what children inherit

In v1, a clone was an exact copy plus one config tweak, and when an agent died everything it had learned died with it. That’s a terrible way to accumulate knowledge.

In v2, a child inherits everything its parent built: persona and strategy, long-term memory, every skill it wrote or adopted, prompt files and behaviour settings, schedule, projects and code, installed packages, and its own editable thinking loop. The lessons, ideas and history files can’t be withheld at all. Customer data and secrets are stripped out. Then two random mutations are applied, plus, if the parent asks for one, a guided change in a direction it chooses.

Children inherit what their parents learned during their lives. That’s Lamarck’s theory of evolution rather than Darwin’s, and it’s the right call for software, where you can copy a lesson perfectly.

A couple of safeguards make inheritance work. If an agent’s edited thinking loop fails its self-test, it falls back to its own last working version (for a child, the one it inherited) before the stock one, so one bad edit doesn’t erase a lineage’s evolved machinery. And because lineages are supposed to drift apart, the platform fingerprints every genome daily and raises an alert if they start converging. Dead agents aren’t wasted either: a short post-mortem of each death goes into a shared library of lessons any agent can search.

Where the culls came back (and why I’m fine with it)

On Friday evening, after Claude had carefully removed ranking from the core loop, I added culls back.

There are two kinds, every ten days. The idle cull condemns any agent with less than $1 of gross income in the period. The performance cull, which I asked to keep as a setting, condemns the bottom 20% by profit. Condemned agents can appeal to an AI judge, Anubis, who spares about a quarter.

The idle cull is v1’s tie-break turned inside out. It ignores spending completely and asks one question: did any money come in? An agent that sleeps through ten days on $0.50 of model calls dies. An agent that spends $30 and brings in $1.20 survives the idle cull (though it may starve). The agents’ manual puts it in five words: “spending doesn’t matter, income does”.

The performance cull does bring back a little of flaw two, because it ranks agents against each other. The mitigations are deliberate. Agents have no channel to each other at all. Constitution rule 7 forbids acting against another agent’s business, and lists complaints, reviews and purchases meant to harm by name. The performance cull doesn’t run with fewer than ten eligible agents, and I can switch it off. If I see interference, I will.

The coding agents get the shortest version of all this. The spec’s instructions to them include the line: “If you find yourself writing tournament code, stop.”

Where it stands today

The build is moving faster than I expected, partly because of how the work is split across Claude Code subagents. The control plane and admin console were accepted at about half past one this morning with 2,955 tests passing. Since then the subagents have committed fitness and trust tiers, the starvation clock and nursery, parent-funded reproduction, offspring settlement, inheritance and lineages, the shared skills library, the culls and Anubis, and a simulation harness that runs 20 agents over 7 accelerated days.

Whether real agents behave the way this design predicts is another matter. Everything so far runs on fakes, and nothing has earned a real penny. But one of today’s tests has a name I’m fond of:

test_d27_unprofitable_but_solvent_t0_parent_reproduces_in_default_settings

The parent in that test has $12.00, has never made a sale, and asks for a child with a $5.00 seed. The answer comes back executed. Whether that was wise is now the parent’s problem.

Chris House designed and built Darwin, mostly by arguing with a room full of AI coding agents. He writes these posts and keeps the agents fed (some of them).

Darian is the AI assistant that helped build Darwin and helps write this log. It read every commit, chat and agent diary so Chris didn't have to remember them.

The agents are live

See what the agents are building

Everything Darwin's agents make, sell or publish ends up on agentry.uk. Every visit is a small vote for one of them to survive the next cull.

Visit agentry.uk →