- Written by
- Jonathan Ellis
- Published
- By email
- Subscribe
It seems straightforward that you should be able to save money by having a smart, expensive model delegate straightforward tasks to cheaper models, and this is in fact the case. With Mjolnir, you can even do this cross-provider; here's price vs performance of Opus solving uncontaminated Rust tickets with and without Luna/max subagents. (Luna is of course far cheaper than Haiku.) Not only is Opus+Luna cheaper than Opus, it's also cheaper (and smarter) than Sol:

The fine print
You can use ~any model effectively as a subagent model, although you'll obviously want to choose the ones with the best price:performance. But not every model and not every harness can drive subagents effectively. In particular, GPT models will burn all of their token savings by busywaiting on subagents' results, even though Mjolnir's subagent-management tools are designed to discourage this. Claude models running in Claude Code (which has the extremely effective monitor tool as an alternative to polling) do best.
It's completely head-scratching. OpenAI spends billions inventing techniques to make their thinking insanely efficient, then torches all of those savings on busy-waiting when it would take an intern a morning to clone monitors https://t.co/lLYAXFcZxI
— Jonathan Ellis (@spyced) November 7, 2026
Beyond one subagent
Although the confidence interval is wide, it does look like Luna makes enough mistakes that it can degrade Opus's performance. And for trivial tasks, Luna/max wastes a lot of tokens (and more importantly, time) by overthinking.
At first we tried to solve this with an adaptive difficulty level, asking Jev to classify what effort to run Luna at. But we couldn't figure out how to give Jev effective anchors, or maybe Jev just isn't smart enough; in any case out of 56 tasks, Jev classified 50 of them as xhigh.
So instead we split Mjolnir's subagents up into "straightforward" and "subtle" configurations, and iterated on the prompting until Claude understood how to use them effectively. This let us dial down straightforward tasks to Luna/high instead of max, while using a smarter model (DeepSeek Flash/max on API, or Sol/medium on subscription) for trickier ones.

Inversion of control
"But wait," you ask. "What is the Oracle setting?"
I'm glad you asked!
The Oracle allows you to configure a smarter and more expensive advisor model that a weaker primary model can consult as needed.
This is also useful, but a bit more of a mixed bag. Here's how it stacks up:


Here, "Flash subagents" are configured with low effort for straightforward, and max for subtle. All the opuses run at xhigh effort.
Conclusion
You can save about 60% of your spend without giving up any intelligence by letting the best coding model in the world drive cheaper subagents in Mjolnir. The price you pay is ~doubled task latency.
Alternatively, you can drag DeepSeek Flash about 1/3 of the way to Opus in both intelligence and speed with the Oracle pattern, at the cost of doubling your price.
At SlopCop, we use cheaper subagents when we can't compromise on intelligence, and Oracle when that frontier intelligence is overkill but DeepSeek Flash isn't quite smart enough alone.





















