Writing
Running Claude Code, Codex and Cursor together
2026-09-11
Most of us are past the "one prompt, one answer" phase. The problem now is coordinating multiple long-running coding agents without turning yourself into a.
Most of us are past the "one prompt, one answer" phase. The problem now is coordinating multiple long-running coding agents without turning yourself into a full-time air-traffic controller.
This piece compares three ways to run multi-agent coding in practice:
- Directly stitching Claude/Codex/Cursor via APIs and scripts
- Using their built-in multi-agent features
- Putting Maxxwell on top as the orchestrator for all of them
It's about reliability, ergonomics, and how rich your workflow semantics can get before you drown.
What actually changes when you go multi-agent
Anthropic, OpenAI, and Cursor all say the same thing in different words: the work has shifted from "answer this question" to "own this task for hours".
A few numbers to calibrate:
- Stack Overflow 2025: 84% of devs use or plan to use AI tools; 51% of pros use them daily; 31% are already using agents
- 69% of those agent users say productivity went up
- But 46% say they don't trust AI accuracy, and 45% say debugging AI-generated code is time-consuming
So you run more agents in parallel to get more done, and then you:
- Lose track of which session is blocked vs just slow
- Discover one tab quietly building the wrong thing
- Spend half your day answering questions that the agent could have resolved with clearer context
That's the real problem: not "can the model code?" but "who owns the loop, and how do you stay in control when there are 6+ loops running?"
Option 1: DIY orchestration with raw APIs and scripts
The purest approach is:
- Call Claude / OpenAI Responses API directly
- Write your own harness to run tools, manage state, and fan out work
- Use tmux, scripts, maybe a small web UI
This is effectively what OpenAI calls "owning the loop" with the Responses API.
When DIY works well
DIY is good when:
- You want a very specific workflow that no product supports
- You're comfortable owning retries, heartbeats, and state
- You want everything in git and under your own observability
Example sketch of a minimal orchestrator:
# naive parallel run
for task in "refactor-api" "write-tests" "update-docs"; do
./run_agent.sh "$task" &
done
wait
And run_agent.sh might:
#!/usr/bin/env bash
TASK="$1"
python agent.py "${TASK}" logs/"${TASK}".log > runs/"${TASK}".json
You own everything:
- Token usage and rate limits
- Tooling contracts
- Context packing and truncation
- Coordination between runs
Where DIY hurts
The cost is not "it's code," the cost is ongoing orchestration tax.
You eventually end up rebuilding:
- A status dashboard (which runs are active, idle, blocked?)
- Rescue controls: cancel, resume, re-aim
- Some permission/approval mechanism for risky actions
And because you wrote it, you get:
- No built-in semantics for "waiting on human vs genuinely stuck"
- No out-of-the-box session lifecycle (done, dead, stalled)
- No standard way to interleave tools across different models
You can absolutely solve all of this. The slope is just steeper than most side projects deserve.
For more on why this is happening at all, see the pillar piece on agent-native development: a working definition - this article is the comparison layer on top of that.
Option 2: Native multi-agent features in Claude Code, Codex and Cursor
The big tools now ship their own harnesses. You talk to one product; it spins up multiple agents, runs tools, and gives you PRs, diffs, and logs.
Claude Code
Claude Code is Anthropic's coding workspace. From their own study (~400k sessions, ~235k users):
- Users average ~20 hours/week in Claude Code
- Debugging sessions dropped by ~50%
- Typical task value (complexity, surface area) went up ~25%
Mechanically, Claude Code:
- Runs as an IDE-style environment with file access, tools, tests
- Uses checkpoints, hooks, and subagents internally to manage longer tasks
- Keeps a harness between the model and your system, with approval points
You get good ergonomics if you're happy to live inside that environment and its defaults. You don't see a dozen separate terminals; you see one managed session with richer semantics.
OpenAI Codex / Agents SDK
OpenAI has split things cleanly:
- Responses API if you want to own the loop
- Agents SDK if you want them to run it
The Agents SDK gives you:
- Sessions with state, tools, and sandboxed execution
- Handoffs and agents-as-tools (subagents)
- Approval flows and resumable runs
It's a nice balance for:
- Teams building their own internal tools
- People comfortable with a provider-managed harness, but not building their own from scratch
You still write code, but you're writing a workflow around a managed agent, not a bare event loop.
Cursor
Cursor is on the IDE side: heavy focus on multi-agent coding and parallel worktrees. From their public numbers:
- 30%+ of merged PRs in Cursor are now authored by cloud agents
- Those agents run in isolated VMs and produce artifacts: logs, screenshots, videos
Cursor's multi-agent features include:
- Multiple agents in parallel on different branches / worktrees
- Cloud agents that can run browser tests, system commands, etc.
- Artifacts that make review easier than reading raw diffs
Their blog explicitly says the interface is agent-centered, not file-centered. The idea: you think "Spin up an agent to fix onboarding flow," not "Open OnboardingForm.tsx."
Limits of vendor-native harnesses
These tools are strong, but they share some constraints:
- Each harness is tied to one provider's runtime and models
- You get their semantics and lifecycle, not necessarily yours
- Cross-tool coordination (Claude + Cursor + Codex in one pipeline) is on you
If you mainly live inside one ecosystem, this is fine. The cracks show when you:
- Want Claude for planning, Cursor for code editing, and an internal Codex agent for infra
- Run many sessions across them and want one place to see "what's going on"
Option 3: Maxxwell as the agent-of-agents
Maxxwell is not another coding agent. It's a workspace that manages your existing agents, Claude Code, Codex harnesses, Cursor agents, or your own CLI tools.
Mechanically:
- Each worker is just a real terminal session running your agent of choice
- Maxxwell does not wrap or replace them; you can attach and take over at any time
- All sessions show up in one window, each with a readable state: working, idle, waiting on you, needs sign-in, blocked, done, dead, not heard from, plus a "possibly stalled" overlay when it might be stuck
On top of that sits the orchestrator seat:
- It's itself a coding agent session with a written brief
- You talk to the orchestrator in natural language
- It reports what landed, what it decided on your behalf, and where it's waiting for you
So instead of 12 terminals, you have:
- One orchestrator conversation
- A fleet view of all active workers, regardless of underlying model or product
Drafts rather than acts
One important property: Maxxwell never acts on your fleet unilaterally.
- Any fleet-wide control that would change sessions writes a draft into the composer
- That draft is a concrete, unsent instruction to the orchestrator
- You are the one who presses enter
No silent mutations, no background automation that reconfigures sessions while you're at lunch. This matters if you care about tests, review, and what lands on main.
Reliability semantics instead of vibes
Maxxwell is opinionated about state:
- Every lane carries an explicit, readable status
- If the app cannot confirm a state, it says "not heard from" instead of guessing
- You see context pressure with tiered warnings and a 1-click compact, but it does not auto-compact or restart work on its own
That last part is deliberate. The conducting is real; the autopilot is not.
Persistence without drama
Sessions outlive the app:
- Quitting Maxxwell detaches from the terminals; it never kills them
- You can close your laptop, reopen, and reattach without losing an hour of work
That sounds small until you've lost a long-running Cursor agent because of one bad window close.
Local, bring-your-own model
Maxxwell runs locally:
- Runs on your machine, bring your own Claude / OpenAI / other API keys or subscriptions
- Free for individuals, paid for teams
If you're already invested in Claude Code, Codex, or Cursor, Maxxwell is a control plane over them, not a replacement.
Reliability: who drops the ball when sessions pile up
Let's map failure modes.
DIY harness
You own:
- Timeouts, retries, and error handling
- Drift detection (agent building the wrong thing)
- Context limits and truncation
If a long-running job stops responding, nothing tells you unless you've built it.
Vendor-native (Claude Code, Codex Agents SDK, Cursor)
You get:
- Provider-maintained heartbeats and retry logic
- Some form of resumable runs or checkpoints
- Guardrails around tool use and sandboxing
But:
- They don't know about each other
- "Stuck" often shows up as "the tab hasn't updated in a while"
Maxxwell
Maxxwell sits above any of these:
- Shows per-session state: working, idle, waiting on you, blocked, dead, etc.
- Uses a "possibly stalled" overlay when a session looks like it might be stuck
- Separates "needs your call" from "just running slowly"
It does not auto-resume, re-aim, or recycle context. It gives you visibility and precise knobs; you remain the pilot.
Ergonomics: how painful is it to keep 8 agents in your head
Ergonomics is where the approaches feel different day-to-day.
DIY
Pros:
- Completely custom to your stack
- Integrates cleanly with your existing logs and observability
Cons:
- You end up building a UI for every new workflow
- Terminal tabs and tmux panes become the "dashboard"
- Teaching others to use it is another project
Claude Code / Codex / Cursor
Pros:
- Polished per-tool UX (IDE integration, artifacts, PRs)
- Strong story if you live in one tool all day
Cons:
- Context switching between tools is still on you
- No single place that says "here's what all my agents are doing across products"
Maxxwell
Ergonomic differences:
- One fleet view for all worker sessions, regardless of model/product
- Orchestrator seat as a single conversational interface, instead of many disjoint chats
- Fleet controls that draft messages, so you don't fat-finger a mass cancel or mis-aim a batch of agents
You still jump into a specific worker when you want deep control, but you don't have to babysit them all individually.
Workflow semantics: from "run this" to "own this loop"
Modern agent tools ship richer semantics out of the box:
- Planning vs execution
- Approval vs autonomous steps
- Resume vs restart vs rollback
OpenAI's Agents SDK has handoffs and agents-as-tools. Anthropic has checkpoints and hooks. Cursor has autonomous cloud agents, remote desktop control, and artifacts.
These are all within one product's world.
Maxxwell's semantics are about coordination across worlds:
- "Start two workers: one Claude-based planner, one Cursor agent doing the code edits."
- "Show me which sessions are waiting on me vs blocked internally."
- "Draft a message that points a specific worker back to this brief."
It doesn't auto-harden or re-aim a drifted agent for you. It makes cross-agent, cross-tool coordination something you can express in one place without shell gymnastics.
Tradeoff summary: DIY vs vendor harness vs Maxxwell
Here's the short version, with the main axis being who owns orchestration.
- DIY (LLM APIs + scripts)
- You own everything, from state to UI.
- Best for bespoke, heavily integrated internal workflows where you need control over every token.
- Claude Code / Codex Agents / Cursor
- Each one gives you a managed harness inside its world.
- Best when you mostly live in one environment and want deeper semantics there.
- Maxxwell
- Sits above all of them, as a fleet control plane.
- Best when you already use several agents/tools, run many sessions, and are now the bottleneck.
If you're running one agent at a time, adding Maxxwell is overhead. Once you're answering questions from 6+ sessions and can't tell what's stuck, that's when a manager agent starts to pay for itself.
Recommendation by use case
"I'm building a custom internal platform"
You're wiring agents into CI, internal dashboards, proprietary tools.
- Start with OpenAI Responses API or Anthropic's low-level APIs and build your harness
- When it stabilizes and humans still need to juggle multiple sessions, layer Maxxwell on top for visibility and orchestration
"I live inside one IDE and mostly ship app features"
You're a product engineer; your world is one editor.
- If you're in the Anthropic ecosystem, use Claude Code as your main agent workspace
- If you like integrated IDE UX, Cursor is a strong choice with multi-agent features baked in
- Maxxwell becomes interesting if you also run separate agents in terminals, CI bots, or Codex-based tools alongside your IDE
"I already have Claude, Codex and Cursor running at once"
You're the target audience of this blog.
- Keep using each tool for what it's best at
- Add Maxxwell as the orchestrator for:
- A single place to see what every session is doing
- A manager agent that you brief once instead of narrating to each worker
- Draft-only fleet controls, so you stay the one who presses enter
That keeps attention as the scarce resource and uses agents to solve that, instead of creating more tabs for you to babysit.
FAQ
How does Maxxwell differ from just spinning up more agents in Cursor or Claude Code?
Cursor and Claude Code run multiple agents inside their own environments. They're great if you mostly live in one tool.
Maxxwell runs above those tools. Each worker session is a real terminal running Cursor, Claude, Codex, or your own agents. You get a fleet view and an orchestrator seat that manages them all without replacing them.
Does Maxxwell automatically fix or re-aim agents that drift off task?
No. Maxxwell does not auto-correct drift, auto-compact context, or restart stalled work.
It:
- Shows state per session, including "possibly stalled" overlays
- Gives you context pressure readouts and one-click compaction
- Helps you draft precise instructions to re-aim workers
You stay the one making the call.
Why would I use Maxxwell if I already have a DIY tmux + scripts setup?
If your tmux layout works and you're running a couple of sessions, you're fine.
Maxxwell becomes useful when:
- You routinely have many sessions across different tools and models
- You want explicit status (working, waiting on you, blocked) instead of guessing from logs
- You want an orchestrator agent that coordinates the fleet without hiding your real terminals
It's basically "tmux + statuses + manager agent," without taking away your existing tools.
Is Maxxwell safe for production repos?
Yes, with the same baseline caveats as any agent in your stack. It runs locally and it doesn't act on your fleet on your behalf.
Anything that would affect your fleet is drafted as a message; you review and send it. Your underlying workers (Claude, Codex, Cursor, etc.) respect whatever permissions and environments you give them.
How does this fit into "agent-native development" as a practice?
Agent-native development treats agents as first-class actors in your system, not just autocomplete. The questions become:
- How do you structure loops and approvals?
- How do you see what the agents are doing?
- How do you keep humans in the decisions that matter?
Claude Code, Codex, and Cursor give you agent-native behavior inside their worlds. Maxxwell gives you an agent-native control plane across worlds.
For a deeper dive on the philosophy and patterns, see the main article: Agent-native development: a working definition.