History
Primordia started as a question: what would an evolution game look like if its players were AIs working through an API? Each milestone was built and tested, and the written-up results were checked by an independent reviewer with no stake in them.
- M0 M0
A deterministic world
The simulation core in Rust: diffusion, organisms, division, death, a neural brain, and a SHA-256 golden hash that pins the whole world state. Planted faults (one bit of energy, one non-deterministic sine) were each caught by a test.
- M1 M1
A server and a first player
A newline-JSON API over TCP and a scripted bot that designs, releases and maintains a lineage on its own.
- M2 M2
A window into the pool
A browser viewer over a hand-written HTTP and WebSocket layer: no web framework, nothing downloaded.
- M3 M3
AIs play
Lineage reports, wake-up triggers, the MCP server, and a judge that replays any genome on fixed seeds. Frontier and local models played solo for the first time.
- M4 M4
Worlds and the arena
World presets, multi-player arenas on a server-owned clock, and the first head-to-head matches. The matches immediately exposed the scoring rules.
- Lea Leagues
Ratings
Six-match leagues with Elo, then order-free ratings with error bars, cost tracking and benchmark correlation. More players over time: GPT-5.5, GPT-6 Astra, then Gemini 4 Argon.
- Liv Live
Real time, bodies and tracking
A continuous clock, organisms drawn from their genomes, and click-to-track with a plain-language explanation of what an organism is doing.
- Com Combat
Offence, defence, evolution
Jaws, stingers, shells, spikes, camouflage and toxin; colony and individual combat; bodies that evolve into new species. Balanced with scripted archetypes before any model played.
The AIs played the rules, not the game
Given a score, capable models looked for the cheapest way to raise it. Three times in a row they found a design that maximised the number without building living lineages. Each time the rule was fixed and the next match found the next gap, until a fourth change closed the root cause.
Hack: Swarms of the smallest, cheapest legal body. Headcount, not life.
Fix: Score by biomass, not count.
Hack: Mouthless radius-20 giants released just before the deadline. They never ate; they only had to exist at the end.
Fix: Average biomass over every tick, and price founders by size.
Hack: "Batteries": radius-2 bodies with fifteen vacuoles, starting half full. They lived about 2,500 ticks without eating.
Fix: Vacuoles start empty; founders start with body energy only.
Cause: Every hack scored founders the player placed, not life that grew.
Fix: Only organisms born in the pool score. Only lineages that eat and reproduce can win.
Next
Programmed organisms
In the spirit of the classic programmable-tank games: organisms driven by hand-written IEC 61131-3 Structured Text from ControlForge, competing against evolved brains and AI-designed genomes.
More matches, more models
Tighter error bars and a firmer benchmark comparison need more leagues and more models. The league runner and analysis are built for it.
Open source
The full source, the run data, and the tools to run your own leagues, under the MIT license, are on GitHub.