You can get surprisingly far coordinating coding agents with tmux and some bash. Then one day you realize the real bottleneck is you.
You can get surprisingly far coordinating coding agents with tmux and some bash. Then one day you realize the real bottleneck is you.
You have multiple Claude Code or Codex sessions, each half-way through a task, and you’re alt-tabbing around trying to remember which one is stuck, which one is waiting on you, and which one quietly drifted off goal.
This is the point where “DIY multiplexing” stops being about panes and starts being about orchestration.
A tmux-plus-scripts setup is great for:
It starts to hurt when you need:
At that point you’re not just multiplexing terminals; you’re running a small orchestration platform written in shell.
If you’re reading this, you probably already have something like:
#!/usr/bin/env bash
SESSION="agents"
# create tmux session
if ! tmux has-session -t "$SESSION" 2>/dev/null; then
tmux new-session -d -s "$SESSION" "claude-code run --task api-refactor"
tmux split-window -t "$SESSION" "codex run --task write-tests"
tmux split-window -t "$SESSION" "cursor-agent run --task docs-update"
tmux select-layout -t "$SESSION" tiled
fi
# helper to broadcast a message
broadcast() {
for pane in $(tmux list-panes -t "$SESSION" -F '#P'); do
tmux send-keys -t "$SESSION":$pane "$1" C-m
done
}
This works.
But as soon as you add:
…you’re building a product. You inherit:
The data backs this up.
So your agents are on all day, but you still have to:
Anthropic’s 2026 trends report calls this out directly: AI still needs “thoughtful set-up and prompting, active supervision, validation, and human judgment,” especially for high-stakes work.
A tmux script doesn’t change that; it just gives you more terminals to supervise.
Tools like VS Code’s Agent Sessions, Cursor 3, and CommandSlate all converged on the same primitives:
If you roll your own orchestration on tmux, your scripts now own:
Microsoft’s own guidance on multiagent systems is blunt: orchestration adds coordination overhead, latency, and failure modes. Use the lowest-complexity pattern that reliably meets your requirements.
That’s the build-vs-buy line.
Maxxwell is a local desktop app plus CLI that sits above the agents you already run.
It does not replace Claude Code, Codex, Cursor, or your existing runtimes. Instead:
working, idle, waiting on you, blocked, needs sign-in, not started, done, dead, or not heard from, with a possibly stalled overlay when it looks suspect.If your tmux scripts are starting to look like an orchestration layer, Maxxwell is the “buy” side of that decision.
You own:
send-keys, lost logs, weird pane focus behavior.Maintenance looks like:
# fix for orphaned sessions after ssh disconnect
for pane in $(tmux list-panes -F '#{pane_pid}'); do
if ! ps -p "$pane" >/dev/null; then
echo "Cleaning up dead pane $pane"
tmux kill-pane -t "$pane"
fi
done
Every corner case becomes more glue code.
You offload:
You’re still in control, but you’re not the one wiring process orchestration and recovery.
To get observability in tmux, you typically add:
api-refactor, write-tests, etc.teeing output to logs/agent-*.log).Maybe:
status() {
for pane in $(tmux list-panes -F '#P'); do
name=$(tmux display-message -p -t $pane '#{pane_title}')
last_line=$(tmux capture-pane -pt $pane -S -1 | tr -d '\r')
echo "$pane ($name): $last_line"
done
}
Better than nothing, but fragile. Status is inferred from log tails, there is no notion of “waiting for you”, and the system has no idea what actually landed in git.
Maxxwell gives you:
working, blocked, etc.).Every lane carries a readable state, and when Maxxwell cannot verify one it says not heard from instead of pretending things are fine.
That’s the difference between an observability layer and “I hope my log tail script is right.”
Your control surface is:
tmux select-pane -t :1.2 or equivalent.agent-broadcast.sh, agent-status.py, agent-kill.sh.It’s fast if you wrote it and live in it. It’s opaque to everyone else.
Maxxwell treats UX as part of the product, not your job:
You still have a real terminal per worker that you can attach to. The difference is you don’t have to memorize how the system works; you can read it off the screen.
Want to add:
You’re now:
This is fine if you want to build and maintain an orchestration platform. It’s not fine if you just want agents to stop wasting your attention.
Maxxwell takes the orchestration layer as a given.
Within its claim boundary today:
You can layer your own workflows on top - branches, CI, review rules - but you don’t have to invent session management primitives.
Here’s the rough comparison.
| Criterion | tmux + scripts | IDE agent views (VS Code, Cursor) | Maxxwell by Rindler |
|---|---|---|---|
| Setup | Manual scripts, panes, conventions | Extension install, some panel config | Local app + CLI, uses existing agents |
| Maintenance | You own all lifecycle & glue | IDE team owns core, you maintain project flows | App owns lifecycle, your tools stay yours |
| Observability | Log tails, pane titles, ad hoc scripts | Per-session status inside the editor | Fleet view with explicit states & reports |
| UX | Fast for author, opaque for others | Familiar editor UI, panels & tabs | One window, orchestrator seat, real terminals |
| Control posture | Scripts act directly | Actions via UI, sometimes auto-run | Fleet controls draft; person presses enter |
| Extensibility | Anything is possible, you build it | Within editor model; limited to extension capabilities | Your own workflows layered on top |
| Local-first | Yes | Often mixed local/cloud | Yes, no sign-up, BYO model access |
If you’re still running a single agent at a time, tmux and your editor are enough.
If you’re juggling half a dozen sessions across tools and repos, a dedicated orchestrator like Maxxwell starts paying for itself in fewer lost hours and fewer sessions you have lost track of.
It’s worth being explicit about where not to add a layer.
Stick with tmux and scripts when:
In that world, a small script file is the right abstraction. Everything else is overhead.
Once you:
…you’re in the territory this article cares about.
For a deeper architecture view of this shift, see the pillar piece on agent-native development: a working definition, which treats “agents as first-class units of work” as a genuine architectural change rather than a UI change.
When the complexity of maintaining the scripts exceeds the complexity of the work they’re coordinating.
Concrete signals:
At that point, you’re running a homegrown orchestration platform.
You should, when your world fits inside their editor.
VS Code and Cursor both now have Agent Sessions views that act as a “single place” to manage local/background/cloud agents.
If you:
…those views are solid.
Maxxwell is for developers who already juggle agents across terminals, repos, and tools, and who don’t want their orchestration layer tied to one editor.
No.
Maxxwell runs workers as real terminal sessions. You can still use tmux if you want, and you can attach to any worker session mid-sentence.
What it replaces is the coordination glue: state tracking, status dashboard, orchestrator, and the scripts you write to manage them.
Two design choices:
You stay the one who approves changes and merges.
No.
The conducting is real; the autopilot is not.
Maxxwell does:
It does not automatically detect drift and re-aim a session, automatically recycle context, restart work that stopped, or run a goal check on its own schedule.
Those decisions stay with you.