Maxxwell by Rindler
Writing

When a tmux script stops being enough

2026-09-10

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.

The line between "good hack" and "maintenance burden"

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.

What tmux and scripts actually give you

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 coordination bottleneck is now human, not model

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.

What a real orchestration layer owns (and your scripts have to fake)

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:

  1. Session lifecycle
    • Spawning, naming, cleaning up agent processes.
    • Handling orphaned sessions and reconnects.
  1. Status and health
    • Detecting “working” vs “idle” vs “blocked”.
    • Handling edge cases: crashed agent, lost network, auth failures.
  1. Logging and observability
    • Per-session logs and transcripts.
    • A way to correlate output with git branches and tasks.
  1. Control UX
    • Broadcast vs per-session commands.
    • Switching focus without remembering pane indexes and script names.

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.

Where Maxxwell steps in: agent-of-agents, not another copilot

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:

If your tmux scripts are starting to look like an orchestration layer, Maxxwell is the “buy” side of that decision.

Build vs buy: maintenance

Building on tmux and Python/bash

You own:

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.

Buying Maxxwell

You offload:

You’re still in control, but you’re not the one wiring process orchestration and recovery.

Build vs buy: observability

DIY observability

To get observability in tmux, you typically add:

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’s observability

Maxxwell gives you:

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.”

Build vs buy: UX and control

CLI UX: tmux + scripts

Your control surface is:

It’s fast if you wrote it and live in it. It’s opaque to everyone else.

Maxxwell UX

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.

Build vs buy: future extensibility

Extending a script farm

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.

Extending with Maxxwell

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.

Maxxwell vs tmux scripts vs IDE multi-agent views

Here’s the rough comparison.

Criteriontmux + scriptsIDE agent views (VS Code, Cursor)Maxxwell by Rindler
SetupManual scripts, panes, conventionsExtension install, some panel configLocal app + CLI, uses existing agents
MaintenanceYou own all lifecycle & glueIDE team owns core, you maintain project flowsApp owns lifecycle, your tools stay yours
ObservabilityLog tails, pane titles, ad hoc scriptsPer-session status inside the editorFleet view with explicit states & reports
UXFast for author, opaque for othersFamiliar editor UI, panels & tabsOne window, orchestrator seat, real terminals
Control postureScripts act directlyActions via UI, sometimes auto-runFleet controls draft; person presses enter
ExtensibilityAnything is possible, you build itWithin editor model; limited to extension capabilitiesYour own workflows layered on top
Local-firstYesOften mixed local/cloudYes, 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.

When you should keep your tmux scripts

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.

FAQ

When is a tmux script objectively not enough anymore?

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.

Why not just use VS Code or Cursor’s multi-agent views?

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.

Does Maxxwell replace my tmux setup entirely?

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.

How does Maxxwell avoid breaking my build quietly?

Two design choices:

You stay the one who approves changes and merges.

What about automation: does Maxxwell auto-correct drift or restart work?

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.