Spinning Up Competing AI Agents in Solo to Hunt Down a Bug

I had a slow navigation problem. Users on Windows were taking 2–3 seconds to go from page to page in our app — assets → customers → service requests. Nothing obvious in the Nightwatch logs. I couldn't find the bottleneck.

I've been using Solo since Aaron Francis launched it a few months ago and one of the recent updates is that you can have agents talk to each other and that's wha I did here.

The Setup

Solo exposes your agents: Claude, Codex, etc. and more importantly, it exposes an MCP server. That means you can use one agent as an orchestrator that spawns and coordinates others programmatically.

The move: spin up Claude Opus and Codex as competing agents, give them the same investigation brief, and tell each one the other is trying to beat them. Then sit back.

The key mechanic is the shared scratchpad: a file both agents can read and write. As each agent digs through the codebase, it dumps findings there. When both are done, the orchestrator reads the scratchpad, compares the two sets of findings, and calls the match.

What the Workflow Actually Looks Like

orchestrator → reads project, gets context
orchestrator → creates scratchpad file
orchestrator → spawns Agent A (Opus) with investigation prompt
orchestrator → spawns Agent B (Codex) with same prompt
[agents run in parallel, writing findings to scratchpad]
orchestrator → reads scratchpad, synthesizes verdict

No babysitting. I prompted, watched the spinner, got a verdict.

What Came Back

Winner: Claude Opus 4.7 (by a nose)

Both agents independently converged on client-side as the bottleneck
category, both measurably ruled out the server-side sidebar theory, and
both agreed Nightwatch can't see it because the cost lives in the browser.
The tiebreaker went to Opus for a stronger Windows-specific causal
mechanism and additional real findings.

(Yes, the orchestrator was also Claude. I'm sure it was completely objective.)

Both agents independently converged on the same root cause: client-side, not server-side. The Flux Pro JS bundle plus Tailwind CSS was being re-parsed on every wire:navigate head/body diff — 280 KB + 332 KB + 339 KB, re-evaluated on every page transition. On Windows with AV software hooking V8 script compilation, that balloons to 1–3 seconds of parse time. Invisible to APM.

Neither agent was told what the other found. They just landed in the same place.

That convergence is the signal. When two models with different training and different reasoning styles independently identify the same mechanism, you don't need a reproduction — you have a hypothesis worth acting on.

Why Solo Makes This Work

Solo does this like a hot knife through butter. The MCP server is what makes the orchestration composable. Your orchestrating agent calls Solo tools to spawn subagents, set timers, read files, and synthesize. It's less "chat with an AI" and more "delegate an investigation."

The competing-agent framing is optional, but it's useful. It pushes both models toward independent reasoning rather than just agreeing with the first hypothesis. And it gives you a natural confidence check: if they disagree, dig deeper. If they agree, ship the fix.