Why optimize one harness, when you can optimize many? Enter EvoForge: an evolutionary harness optimizer.
EvoForge doubled SOTA performance of GPT-5-nano on TerminalBench 2.0 compared to Codex CLI and 10x'd compared to the baseline.
Check it out: https://github.com/haizelabs/EvoForge
In a Nutshell
The idea is simple: why optimize only one agent harness? A single hill-climber can get stuck on noise and local optima. Why not optimize an entire population of agents all at once? Hence, EvoForge:
evaluates many agent variants in parallel,
analyzes trajectories w/ semantic observability skill,
synthesizes and propagates learnings across the entire population, and
automatically generates the next generation of agents through selection, mutation, and crossover
How Agent Populations Progress
It's very clear that EvoForge produces winning harnesses as generations progress....
....But critically, no agent gets left behind, and the entire population rises through the generations!
"Implementation"
EvoForge is programmed through a handful of key Markdown files:
evolve.md — the “God of Agents” loop: how big the population is, how to merge results into learnings/, how to pass lessons to the next generation, and how to keep, kill, mutate, or cross-breed agents. It’s the outer evolution policy.
program.md — unchanged from original AutoAgent.
docs/trace-analysis.md (Semantic Observability) — how to read Harbor trajectories you can explain why a variant lost tasks instead of guessing. Follows a required phase order and ends in a per-run analysis.md when you need a written autopsy.
docs/knowledge-sharing.md — what to do after those per-variant analyses: pull patterns from every agent in the population, normalize failure modes and fix directions, then accumulate learnings so the next generation inherits one shared picture of what didn't work and what to try next.
Each generation follows a tight loop: mutate population → run benchmark → evaluate → keep or discard → repeat
Everything is run in parallel so wall time doesn’t scale with population size, and cumulative learnings are distilled generation to generation so the system doesn't re-learn the same fixes every time.
Get Started
Clone, sync, point your coding agent at evolve.md, and run the experiment loop.
https://github.com/haizelabs/EvoForge
Just Scale It, LOL
Single agent self-improvement finds an answer. Population level self-improvements finds an even better answer!
EvoForge is a bet that the next stage of harness R&D can come from evolving a population of harnesses, not just an agent tuning oneself in a corner.
Kudos!
Inspired by @kevingu's AutoAgent and @gauri__gupta's auto-harness. Check'em out :)