An Open-Weight Coding Model Just Learned to Write Its Own Agent Harness
TL;DR
Yesterday the blog post about Semgrep's benchmark made the case that the harness, not the model, wins. Today there is a model that took that personally. Ornith-1.0, an open-weight coding family from a lab called DeepReinforce, does not just run inside an agent harness, it learns to build one. Its training trick, called self-scaffolding, has the model propose its own task-specific orchestration during reinforcement learning, then solve the task with it, and rewards both halves at once. The family ships under MIT license in four sizes (9B dense, 31B dense, 35B MoE, and a 397B MoE), built on Gemma 4 and Qwen 3.5 bases. The big one hits 82.4 on SWE-Bench Verified and 77.5 on Terminal-Bench 2.1, beating Claude Opus 4.7 on both. The 9B runs on a laptop. You can download all of it right now.
What "Self-Scaffolding" Actually Means
Every agentic coding model you use today is wrapped in a harness: the loop that decides when to call a tool, how to read a file, when to retry, how to break a task into steps. Google's own SDLC paper put the split at roughly 10% model and 90% harness. That harness is almost always handwritten by humans, and it is the same for every task you throw at it.
Ornith's bet is that the harness should not be fixed, and it should not be written by you. During reinforcement learning, the model runs a two-stage loop on each problem. First it reads the task (and its previous scaffold) and proposes a refined scaffold, the plan for how to attack this specific problem. Then it generates a solution using that scaffold. The reward from how well the solution turns out flows back into both stages, so the model is graded not only on its answer but on the quality of the plan it invented to get there.
The relatable version: most coding agents are a brilliant cook handed the same fixed recipe card for every dish. Ornith is trained to write a new recipe card per dish, and gets marked on the recipe as well as the meal. Do that across millions of problems and the model stops needing you to design the kitchen workflow, because it has internalized how to design one.
The Numbers
The flagship Ornith-1.0-397B (a Mixture-of-Experts model) lands squarely in frontier territory on coding evals. It beats Claude Opus 4.7 on both headline benchmarks (77.5 vs 70.3 on Terminal-Bench 2.1, 82.4 vs 80.8 on SWE-Bench Verified), and on most measures edges out the open-weight heavyweights, DeepSeek-V4-Pro and GLM 5.2. It does not catch Claude Opus 4.8, which still tops the chart. For a model you can download and run on your own hardware, that is a short gap to the closed frontier.
The more interesting story is at the small end. The 35B MoE (with only about 3B parameters active per token) scores 64.4 on Terminal-Bench 2.1, beating the full 397B Qwen 3.5 base it was distilled from, which manages 53.5. The 9B dense model posts 43.1 on Terminal-Bench and 69.4 on SWE-Bench Verified, numbers that were frontier-closed-model territory not long ago, in a package you can run on a single consumer GPU.
Does It Hold Up Outside the Benchmark?
Worth its own paragraph, because benchmark numbers are easy to game and hard to trust. Simon Willison took the 35B (quantized, via LM Studio) for a spin and reported it could "run the agent harness over many tool calls in a proficient way," using it to locate code inside a real Datasette repository. He clocked it at 103 tokens/second generating his customary pelican-on-a-bicycle test image, though he noted the drawing came out "a little bit mangled." So: a competent agentic coder on a laptop, less so a competent illustrator. That is exactly the trade you would expect from a model trained single-mindedly on coding scaffolds, and a healthy reminder that one strong eval is a signal, not a coronation.
Why This Matters for Builders
Two reasons. First, the licensing and the sizes. MIT, no regional restrictions, 262K context, four sizes spanning a laptop to a server rack. The 9B and 35B are genuinely local-first: you can wire them into your own coding agent without renting a frontier API or shipping your codebase to anyone. For high-volume, privacy-sensitive, or just budget-constrained work, an open-weight coder one Opus generation behind the top is a very different proposition from a closed one you meter by the token.
Second, and more strategically, self-scaffolding is a quiet challenge to the "harness is everything" consensus. If a model can learn the orchestration logic and carry it in its weights, the painstaking harness engineering that buys teams their accuracy today becomes something the model partly does for itself. That does not make harnesses obsolete (DeepReinforce still ran these evals inside a harness), but it shifts where the value sits. The recipe card is moving from your repo into the model.
The honest caveats: this is one lab's release with self-reported numbers, the comparisons are on coding evals only, and "beats Opus 4.7" is a moving target the day Opus 4.9 lands. Self-scaffolding is a compelling idea with a strong first data point, not a settled paradigm. But it is downloadable today, and the cheapest way to find out whether it works on your code is to pull the 9B and point it at a real bug.
Key Takeaways
- The release: Ornith-1.0 is an MIT-licensed open-weight coding family (9B and 31B dense, 35B and 397B MoE) from DeepReinforce, built on Gemma 4 and Qwen 3.5, on Hugging Face now.
- The trick: self-scaffolding. During RL the model proposes its own task-specific harness, solves with it, and is rewarded on both the plan and the answer.
- The flagship: the 397B MoE scores 82.4 on SWE-Bench Verified and 77.5 on Terminal-Bench 2.1, beating Claude Opus 4.7 but trailing Opus 4.8.
- The featherweight: the 35B MoE (~3B active) beats its own 397B Qwen 3.5 base on Terminal-Bench (64.4 vs 53.5); the 9B runs locally and posts 69.4 on SWE-Bench Verified.
- The shift: if models learn orchestration in their weights, some of the harness engineering that wins benchmarks today moves inside the model.
- The caveat: self-reported, coding-only evals from one lab. A strong signal, not a verdict. Bake it off on your own code.
Sources: DeepReinforce: Ornith-1.0, Ornith-1.0 on Hugging Face, MarkTechPost, Simon Willison, Ornith-1 on GitHub