Agent Terminals Need Attention State
cmux's notification-aware terminal model maps directly to joelclaw's multi-agent loop babysitting and Pi cmux workspace control.
Theo Browne moved from Ghostty to cmux, a macOS terminal built on libghostty by Manaflow. The interesting bit isn’t “new terminal app.” The interesting bit is terminal state shaped around agent work.
cmux treats panes, tabs, branches, ports, notifications, and coding-agent status as first-class interface material. That matters when Claude Code, Codex, OpenCode, Gemini CLI, or Aider are all sitting in different shells waiting for one tiny human decision. tmux and GNU Screen multiplex processes. cmux starts multiplexing attention.
That’s the useful pattern for joelclaw: the terminal is no longer just a place commands run. It’s an operator cockpit for agent loops, local dev servers, browser panes, remote machines, and “hey asshole, this worker needs your input” interrupts. Joel already has the pi-cmux bridge, so this is less about adopting a shiny app and more about remembering the shape: panes need lifecycle, labels, unread state, and a way to jump straight to the bottleneck.
Key Ideas
- cmux is a Ghostty-based macOS terminal with vertical tabs, split panes, notification rings, and coding-agent awareness.
- The core insight is that agentic coding creates branching work that traditional terminal multiplexers like tmux don’t represent cleanly.
- Notification rings and unread panels make “agent needs attention” visible without forcing the operator to poll every pane like a bored raccoon with a clipboard.
- cmux includes an in-app browser with a scriptable API ported from Vercel Labs agent-browser, which points at terminal/browser coupling as the next cockpit layer.
- The repo exposes a CLI and socket API for creating workspaces, splitting panes, sending keystrokes, and automating browser state, which rhymes with pi-cmux and joelclaw operator workflows.