Evolving Agents Labs

Evolving Agents Labs/Experiments/evolving-agents

evolving-agents

What if the decomposition was right and the substrate was wrong?

2025
One empty outline, drawn but never filled, becoming five solid shapes

The architecture was right

452 people starred this in 2025. It had three test functions. Both of those facts are the point: the decomposition was compelling enough to mark, and nothing in it was pinned to anything that could contradict it.

Eighteen thousand lines of Python across twelve subsystems: a library of versioned components, a bus for agent discovery, memory, an evolution loop, and a governance layer called Firmware. Backed by MongoDB Atlas.

It had three test functions.

That number is the whole story. This was not a product that failed; it was an architecture that was written down and never pinned to anything that could contradict it. The decomposition was right — right enough that every piece got independently re-derived over the following year, mostly without noticing.

The proof is in its own source

evolving_agents/firmware/firmware.py sets a governance string:

You are an AI agent operating under strict governance rules:
...
- Never use dangerous imports (os, subprocess, etc.)

That is governance by asking. In token-trie, the forbidden token is not discouraged — it has no path through the trie, so the model cannot emit it.

Same intention, twelve months and one substrate apart. The code is still on the default branch precisely so the two halves can be diffed.

What happens to it now

It is the umbrella, not a museum. Three milestones, two of them already resolved — one of those in a direction nobody wanted.

What it cost

Two things did not survive, and only one of them on purpose.

The agent bus was dropped deliberately. A thousand lines of registry and runtime routing, welded to MongoDB, solving a problem MCP is now eating. Nothing replaces it: an agent that needs to discover another at runtime has no answer here today.

The dual-embedding resolver was lost by accident. Every component was indexed twice — once for what it is, once for what it is for — and tasks resolved against the second. It has since been recovered, and measured: on a small corpus with a modern embedding model it performs identically to plain description-matching. The idea may have been overtaken by the encoders. That is the current state, with a number attached rather than an assumption.