cmux

“The terminal built for multitasking, organization, and programmability.” A free, open-source, native macOS terminal built on Ghostty — designed for developers who run many AI coding agents (Claude Code, Codex, Gemini CLI, OpenCode, Amp, Aider…) side by side and need to know which one needs attention right now.

Native Swift + AppKit — no Electron GPU rendering via libghostty Any CLI agent works Unix-socket JSON API GPL-3.0-or-later Manaflow · YC S24

All facts verified against the linked sources on 2026-07-09. cmux moves fast (multiple releases per week) — cross-check the changelog for anything newer.

The problem it solves

Coding agents turned the terminal into a fleet-management surface: you're no longer typing into one shell, you're supervising five to fifty long-running sessions. Classic terminals (and tmux) give you panes, but no way to see at a glance which session finished, which is blocked waiting for input, and which broke. cmux's answer is to make the terminal itself agent-aware:

  • Notification rings — a blue ring appears on the exact pane whose agent needs attention, aggregated in a panel with jump-to-latest-unread shortcuts.
  • Vertical tabs (workspaces) — a sidebar showing each session's git branch, PR status, working directory, listening ports, and latest notification.
  • Embedded scriptable browser — agents can open a real browser split next to their terminal to visually verify what they built.
  • CLI + socket API — every workspace, pane, and keystroke is programmable, so agents can drive cmux itself.

Deliberately not an orchestrator. cmux does not manage git worktrees, agent lifecycles, or task queues. It is a primitive: a terminal that any agent runs in, with the observability and programmability to build your own workflow on top — instead of being locked into a GUI orchestrator's workflow.

Vital statistics

FactValue
MakerManaflow, Inc. (Y Combinator S24), positioning itself as an “open source applied AI lab”
LaunchedShow HN, Feb 19 2026 — “cmux – Ghostty-based terminal with vertical tabs and notifications” (198 points)
Traction~5,200 GitHub stars in Mar 2026 → ~21,800 by Jun 2026
PlatformmacOS 14.0+ only (Apple Silicon & Intel) + iOS companion app with real-time sync
Language mixSwift ≈80%, TypeScript ≈8%, Python ≈5%, Shell, Rust, HTML
LicenseGPL-3.0-or-later; commercial licenses via founders@manaflow.com; optional “Founders Edition” supporter tier
Config compatReads your existing ~/.config/ghostty/config (themes, fonts)

Sources: cmux.com · GitHub README · HN Algolia · Ry Walker research note

2 · History & the pivot

“cmux” has meant two different products from the same team — important to know, because older articles and videos describe a tool that no longer carries the name.

2024 · YC S24 Manaflow starts as a spreadsheet product 2025 · “cmux” v1 = orchestrator Parallel agents, each in an isolated VS Code workspace (Docker or cloud); “Crown” evaluator picks the best run Lives on as “Manaflow” open-source Devin / Codex-cloud alternative (separate repo) Oct 2025 · 0github.com heatmap diff viewer (Show HN) Feb 19 2026 · cmux reborn Native Ghostty-based macOS terminal. Show HN: 198 points. Philosophy: terminal primitive, not orchestrator. Jun 2026 ~21.8k stars, v0.64.x, iOS app
Two products, one name. The 2025 containerized orchestrator continues as “Manaflow”; the cmux name now belongs to the terminal.

The old cmux (2025): containerized orchestrator

The original cmux let you fan one task out to multiple coding agents (Claude Code, Codex CLI, Cursor CLI, Gemini CLI, Amp, Opencode) simultaneously, each in its own isolated VS Code workspace running in a local Docker container or in the cloud. When all runs finished, a built-in “Crown” evaluator compared the outputs and marked the best one. That product line continues as manaflow-ai/manaflow, described as an “open source Claude Code web / Codex Cloud / Devin / Ramp Inspect alternative.”

Why the pivot to a terminal

The team's stated reasoning: most orchestrators are Electron/Tauri apps whose performance disappointed them, and GUI orchestrators lock you into their workflow. A terminal is the workflow-neutral primitive — so they built a native Swift/AppKit app on a fork of Ghostty's GPU-accelerated libghostty core, and made observability (notifications) and programmability (socket API) the product.

Sources: manaflow repo · ScriptByAI on the orchestrator · Ry Walker research note · HN Algolia

3 · Mental model: the five-level hierarchy

Everything in cmux hangs off one containment chain. Learn this and the whole keyboard/CLI surface becomes predictable:

Window → Workspace → Pane → Surface → Panel

Window ⌘⇧N · one per macOS window Workspaces ⌘N new · ⌘1–9 jump ① api-refactor ✳ active main · :3000 · ● 2 unread ② bugfix-auth fix/auth · PR #142 ③ docs-agent docs · idle ▸ group: experiments ⌃⌘G new group sidebar shows: git branch, PR status, cwd, ports, latest notifications Pane A claude ✳ logs surfaces: ⌘T new · ⌃1–9 pick Panel = terminal $ claude ✳ Running tests… (Ghostty session — GPU-rendered) Pane B Panel = browser embedded web view, scriptable via CLI localhost:3000 Levels Workspace — sidebar entry; groups splits. ⌘N · ⌘1–9 · $CMUX_WORKSPACE_ID Pane — split region inside a workspace. ⌘D split→ · ⌘⇧D split↓ · ⌥⌘←→↑↓ focus Surface — tab within a pane. ⌘T · ⌘[ ⌘] · ⌃1–9 · $CMUX_SURFACE_ID Panel — the content: a Ghostty terminal session or a web view. Workspace = “tab” in UI copy. Workspace groups: collapsible named sections w/ anchor workspace, pins, custom icons and colors.
One cmux window. Workspaces live in the sidebar; the active workspace's panes tile the canvas; each pane holds surface tabs; each surface renders one panel.
LevelWhat it isCreateNavigate
WindowA macOS window holding independent workspaces⌘⇧Nstandard macOS
WorkspaceSidebar entry grouping split panes (called “tabs” in the UI); identified by CMUX_WORKSPACE_ID⌘N⌘1⌘9, ⌘P go-to
PaneA split region within a workspace; holds multiple surfaces⌘D right, ⌘⇧D down⌥⌘+arrows
SurfaceA tab within a pane — one terminal or browser session; identified by CMUX_SURFACE_ID⌘T⌘[/⌘], ⌃1⌃9
PanelThe content inside a surface: a Ghostty terminal session or an embedded web view (mostly internal concept)

Source: docs/concepts · docs/workspace-groups

4 · Architecture internals

cmux is a native Swift/AppKit application that embeds libghostty as a rendering library — the way apps embed WebKit. Around that core it adds an AppKit UI shell, a WebKit browser surface type, a notification engine fed by terminal escape sequences, a state snapshot store, and a JSON control plane over a Unix socket.

Control plane Agents & scripts Claude Code, Codex, your shell, CI hooks, another cmux pane… cmux CLI cmux send / notify / browser… Unix socket /tmp/cmux.sock newline-terminated JSON {method, params} Access modes: off · cmux child processes only (default, ancestry-verified) · allowAll cmux.app — native Swift + AppKit (no Electron) UI layer (AppKit) Vertical-tab sidebar (branch · PR · cwd · ports · unread) · notification panel · command palette canvas & overview · diff viewer · global search · dock · task manager · TextBox composer GPU-accelerated, fast start, low memory — the anti-Electron pitch Terminal surfaces libghostty core (forked) — GPU rendering, PTY sessions, scrollback (readable via API) reads ~/.config/ghostty/config Browser surfaces embedded web views: navigate, click, fill, eval JS, screenshots, console, cookies/storage, state to JSON imports cookies/history from 20+ browsers Services Notification engine — parses OSC 9 / 99 / 777 escape sequences from any pane; rings, badges, desktop alerts, JSON hook filters · Session restore — versioned snapshots · Sparkle auto-update · SSH workspaces w/ detachable PTY daemon · agent hibernation · AI auto-naming of workspaces External state & peers ~/.config/ghostty/config themes & fonts (shared with Ghostty) ~/Library/Application Support/cmux/ versioned layout/session snapshots iOS companion app real-time sync, unread indicators SSH remotes remote workspaces; browser via remote net; tmux mirroring (beta)
Anything that can write JSON to a Unix socket — including an agent running inside a cmux pane — can drive the whole app.

Design choices worth remembering

  • Escape sequences as a first-class channel. Notifications ride the terminal protocol itself (OSC 9/99/777), so any program in any pane can raise pane-addressable alerts — no SDK needed.
  • Terminals all the way down. The terminal an agent drives can itself contain another agent — real, addressable terminals rather than an SDK abstraction over hidden processes.
  • Socket security by ancestry. Default mode only lets cmux child processes connect; allowAll opens it to any local process (opt-in).
  • Session restore restores layout, not computation. Windows, workspaces, panes, directories, and scrollback come back after relaunch — but arbitrary process state (a tmux or vim session) is not checkpointed.

Sources: GitHub README · docs/api · docs/session-restore · docs/ssh

5 · Install & setup

Requirements: macOS 14.0+ (Apple Silicon or Intel).

  1. Install the app — either download the DMG from cmux.com (auto-updates via Sparkle), or:
    brew tap manaflow-ai/cmux
    brew install --cask cmux
  2. Link the CLI so scripts and agents outside cmux can reach it:
    sudo ln -sf "/Applications/cmux.app/Contents/Resources/bin/cmux" /usr/local/bin/cmux
  3. Verify — launch: you should see the vertical-tab sidebar, one active workspace, and a Ghostty-powered terminal. Then cmux ping from a pane.
  4. Optional: teach your agents cmux — install the official skills so Claude Code & co. know the CLI:
    npx skills add manaflow-ai/cmux -g -y
    # or the simpler script:
    curl -fsSL https://raw.githubusercontent.com/manaflow-ai/cmux/main/skills.sh | bash
  5. Optional: keep your Ghostty look — cmux reads ~/.config/ghostty/config automatically; existing themes and fonts just apply.

Sources: docs/getting-started · docs/skills

6 · Core workflows

Workflow 1 — Run agents in parallel, one workspace each

  1. ⌘N new workspace per task/repo (or ⌘O to open a folder). Rename with ⌘⇧R; the sidebar shows branch, PR status, cwd, and ports automatically.
  2. Launch an agent in each: claude, codex, opencode — any CLI agent works, cmux is agent-agnostic.
  3. Split when a task needs company: ⌘D terminal right (tests/logs), ⌥⌘D browser right (visual check).
  4. Jump between tasks with ⌘1⌘9 or fuzzy go-to ⌘P. Group related workspaces with ⌘⇧G.
  5. Track state in the sidebar: mark done ⌘;, cycle status ⌘⇧;. Since v0.64.16, AI auto-naming titles workspaces from the agent conversation.

Workflow 2 — Never babysit: the notification loop

Agent in a pane finishes / needs input OSC 9 · 99 · 777 or: cmux notify … Notification engine optional hooks in cmux.json: JSON in → modified effects out (mute, filter, change sound); trust prompt before first run ring on the exact pane unread badge on workspace tab entry in notification panel desktop alert (suppressed if window focused / ws active) You ⌘⇧U jump to latest ⌘I panel · ⌘⇧H flash viewing clears unread
Escape sequences in, attention out. Any process in any pane can raise a pane-addressable alert.

Three ways a process can notify:

# 1. the CLI (simplest)
cmux notify --title "Task Complete" --body "Your build finished"

# 2. OSC 777 (rxvt protocol) — plain escape, works from any language
printf '\e]777;notify;My Title;Message body here\a'

# 3. OSC 99 (kitty protocol) — supports subtitles and IDs
printf '\e]99;i=1;e=1;d=1;p=body:All tests passed\e\\'

Hook it to Claude Code by creating ~/.claude/hooks/cmux-notify.sh and registering it in ~/.claude/settings.json for the Stop (and optionally PostToolUse) events — every finished agent turn rings its own pane. Copilot CLI has equivalent lifecycle hooks (agentStop, errorOccurred, …).

Workflow 3 — Review & verify without leaving the terminal

  • Diff viewer ⌃⌘⇧D — vim-style j/k scrolling, G/gg, / search; branch picker and inline review comments landed in v0.64.15–17.
  • Browser split ⌥⌘D — open the dev server next to the agent; DevTools ⌥⌘I, JS console ⌥⌘C; “React Grab” ⌘⇧G to pick components.
  • Global search ⌥⌘F across sessions; copy mode ⌘⇧M for keyboard text selection.

Workflow 4 — Claude Code Teams as native splits

Claude Code (teams on) thinks it's inside tmux; split-window · select-pane… tmux shim script prepended to PATH by cmux claude-teams Socket API surface.split workspace.create… Native splits sidebar metadata + notifications per teammate
The shim maps: new-session/new-window → cmux workspaces · split-window → pane split · select-pane → focus.
cmux claude-teams              # launches Claude Code with agent teams enabled
cmux claude-teams --continue --model sonnet

Teammate agents appear as native cmux splits — with sidebar metadata and per-teammate notifications — instead of raw tmux panes. Similar wrappers exist for other agents: oh-my-opencode, oh-my-codex, oh-my-pi, oh-my-claudecode.

Sources: docs/notifications · docs/keyboard-shortcuts · docs/claude-code-teams · docs/changelog

7 · Keyboard shortcuts that matter

Curated high-value set. Full list (rebindable since v0.64.15, with context clauses): docs/keyboard-shortcuts.

EssentialsWorkspaces
⌘⇧PCommand palette⌘N / ⌥⌘NNew workspace / new browser workspace
⌘PGo to workspace (fuzzy)⌘1⌘9Jump to workspace 1–9
⌘BToggle sidebar⌃⌘[ / ⌃⌘]Previous / next workspace
⌥⌘FGlobal search⌘⇧RRename workspace
⌘⇧NNew window⌘; / ⌘⇧;Mark done / cycle status
⌘OOpen folder⌘⇧G / ⌃⌘GGroup selected / new group
Panes & surfacesNotifications
⌘D / ⌘⇧DSplit right / down⌘⇧UJump to latest unread
⌥⌘D / ⌥⌘⇧DSplit browser right / down⌘IShow notification panel
⌥⌘←→↑↓Focus pane by direction⌥⌘UToggle unread
⌘⇧↩Zoom pane⌘⇧HFlash panel (find it visually)
⌘T / ⌘WNew / close surface tab⌃⌘UMark oldest unread
⌃1⌃9Pick surface tab
BrowserDiff viewer & misc
⌘⇧LOpen browser⌃⌘⇧DOpen diff viewer
⌘LFocus address barj/k, gg/G, /Scroll / top-bottom / search in diff
⌥⌘I / ⌥⌘CDevTools / JS console⌘⇧MCopy mode
⌘⇧GToggle React Grab⌃⌘C / ⌃⌘OCanvas / overview
⌥⌘↩Browser focus mode⌃⌘SSave layout as template

Source: docs/keyboard-shortcuts

8 · Programmability: CLI, socket, skills, fleets

The socket protocol

One newline-terminated JSON request per call to /tmp/cmux.sock (override with CMUX_SOCKET_PATH):

{"id":"ws-list","method":"workspace.list","params":{}}
→ {"id":"ws-list","ok":true,"result":{"workspaces":[…]}}

The cmux CLI wraps the same methods. Useful flags: --json, --workspace ID, --surface ID, --socket PATH. Inside a pane, CMUX_WORKSPACE_ID and CMUX_SURFACE_ID are auto-set, so a script always knows where it lives.

Command map

AreaCLI / socket methodWhat it does
Workspaceslist-workspaces · new-workspace · select-workspace · current-workspace · close-workspaceFull workspace lifecycle (workspace.*)
Panes & surfacesnew-split left|right|up|down · list-panels · focus-panel · close-surfaceSplit, enumerate, focus, kill (surface.*, pane.*)
Typingsend "text" · send-key enter|tab|escape|…Drive any terminal — including one running another agent
Readingread-screen · cmux eventsRead a surface's output incl. scrollback; stream events instead of polling
Sidebar metadataset-status · set-progress 0–1 --label · log --level info|success|error · sidebar-stateStatus pills, progress bars, and logs on the workspace row
Notificationsnotify · list-notifications · clear-notificationsRaise and manage alerts
Browsercmux browser open|navigate|click|fill|eval|…Full web automation: waits, screenshots, DOM snapshots, console logs, cookies/storage, state-to-JSON
Utilityping · capabilities · identifyHealth check, method discovery, focused-context info

The fleet pattern: agents driving agents

Because cmux terminals are addressable, a primary agent can stand up, prompt, observe, and tear down a whole fleet of other agents. Four verbs form the control loop (pattern popularized by disler/learning-cmux-with-agents, 31 prompts from single-workspace basics to multi-window fleets):

Unix socket API orchestrator agent ↔ cmux 1 · Stand up new-workspace · new-split 2 · Prompt send "fix tests" · send-key enter 3 · Observe cmux events · read-screen 4 · Report set-status · set-progress · log 5 · Tear down close-surface · close-workspace
Fan-out/fan-in sharding, broadcast prompts, racing agents against each other, event-driven loops — all compositions of these five steps.
  • Event-driven > polling: subscribe with cmux events instead of re-reading screens.
  • Secrets: inject credentials with --env-file rather than typing them into panes; per-workspace env vars since v0.64.16.
  • Reproducible layouts: declarative cmux.json defines project-specific commands and team bootstraps; save any layout as a template with ⌃⌘S.
  • Visual identity: per-workspace colors/icons to tell fleet roles apart at a glance.

Official skills (teach your agent cmux)

Seven skills ship with cmux: Core (topology control), Workspace (current-workspace automation), Settings, Customization (actions, layouts, buttons, shortcuts), Diagnostics (CLI/socket health), Browser (webview automation), Markdown Viewer (live-reloading panels).

Sources: docs/api · docs/browser-automation · docs/skills · learning-cmux-with-agents

9 · cmux vs everything else

The key sorting question: which layer does the tool live at? Terminal (rendering + panes), multiplexer (session persistence), orchestrator (worktrees, task queues, review flows), or cloud agent (autonomous remote engineer). cmux is a terminal that borrows tricks from all layers while refusing to become an orchestrator.

ToolLayerVs cmux
GhosttyTerminal enginecmux embeds (a fork of) Ghostty's libghostty and reads the same config. Ghostty = raw, minimal, cross-platform; cmux adds vertical tabs, notifications, browser, socket API — at some cost (users report heavier scrolling/CPU than plain Ghostty).
iTerm2 / kitty / WezTerm / AlacrittyGeneral terminalsMature, cross-platform (except iTerm2), huge feature sets — but no agent-aware unread model, no pane-addressable notification rings, no scriptable embedded browser.
tmuxMultiplexertmux runs inside any terminal, is cross-platform and remote-native; cmux is native UI with notifications and browser automation. Not mutually exclusive: cmux ships a tmux shim (for Claude Code Teams) and remote tmux mirroring over SSH (beta).
WarpAI terminalWarp builds AI into the terminal itself (its own agent workflows, cloud features); cmux stays agent-agnostic and local-programmable — bring any agent.
ConductorMac orchestratorConductor manages parallel Claude Code runs with isolated workspaces and a built-in review flow — opinionated and Claude-centric. cmux gives you the primitives and workflow freedom, but you assemble the flow yourself.
Manaflow (ex-cmux)Containerized orchestratorEach agent in an isolated VS Code workspace (Docker/cloud), Crown evaluator auto-picks the best of N parallel runs. Different layer — can conceptually sit behind cmux.
Devin / Codex cloudCloud agentsFully-hosted autonomous engineers you delegate to; cmux is for local supervision — watching, steering, and verifying agents yourself.
VS Code / Cursor / Zed / WindsurfEditors/IDEsEditor-centric agent UX (inline diffs, extensions); cmux is terminal-first supervision with browser verification. Many people run both.

When to pick what

You want…Reach for
Run 5+ CLI agents on your Mac and always know who needs youcmux
Fastest bare terminal, no extrasGhostty / Alacritty
Session persistence over SSH on Linux serverstmux (possibly mirrored into cmux)
Opinionated parallel-Claude workflow with built-in reviewConductor
Fan one task to N agents in containers, auto-pick the winnerManaflow (or similar orchestrator)
Delegate whole tickets to a remote autonomous agentDevin / Codex cloud
Windows/Linux team standardNot cmux (macOS-only) — tmux/WezTerm/amux-style tools

Sources: cmux.com/compare (16 official comparisons) · Ry Walker research note · amux 2026 multiplexer survey

10 · Power tips & gotchas

Power tips

  • Wrap long commands: a notify-after npm run build-style wrapper (docs show the pattern) auto-rings when anything slow finishes — not just agents.
  • Notification hooks as filters: cmux.json hooks receive each notification as JSON on stdin and return modified effects — mute noisy panes, change sounds, filter history. Hooks trigger a trust prompt before first execution.
  • Templates: build your ideal review layout (agent + tests + browser) once, save with ⌃⌘S, stamp it out per task.
  • Agent hibernation (v0.64.11+) parks idle sessions to save resources; detachable SSH PTY daemon keeps remote sessions alive across disconnects.
  • iOS app: check unread agent notifications and switch between multiple Macs from your phone (TestFlight beta since v0.64.14).
  • Vault, TextBox, Task Manager, Dock, custom sidebars: newer subsystems worth exploring in the docs — vault, textbox (composer, ⌘⇧A), task-manager, dock.

Gotchas

macOS 14+ only. No Windows, Linux, or web version — a blocker for mixed-OS teams.

  • Not an orchestrator, on purpose. No git-worktree management, agent lifecycle, or task scheduling. If you expected the 2025 cmux, that's Manaflow now.
  • Session restore ≠ process restore. Layout, directories, and scrollback survive relaunch; running processes (tmux, vim) do not.
  • Performance trade-off: third-party review reports laggier scrolling / higher CPU than plain Ghostty, and a large open-issue count reflecting very fast release velocity (multiple releases per week). Pin expectations accordingly.
  • Licensing: GPL-3.0-or-later — organizations that can't comply with copyleft need a commercial license from Manaflow.
  • Socket security: default access is cmux child processes only (ancestry-verified). allowAll lets any local process control your terminal, type keystrokes, and read screens — enable only when you understand that.
  • Old articles describe the old cmux. Anything mentioning Docker containers, VS Code instances, or Crown evaluation predates Feb 2026.

Sources: docs/changelog · docs/notifications · docs/session-restore · Ry Walker research note (third-party assessment)

11 · Self-test quiz

Reveal each answer, then score yourself honestly. Aim for 10/12 before calling yourself dangerous.

Score: 0 / 0 answered (12 total)
Q1Recite the cmux containment hierarchy, top to bottom.
Window → Workspace → Pane → Surface → Panel. Workspaces are sidebar entries; panes are splits; surfaces are tabs within a pane; a panel is the content (Ghostty terminal or web view).
Q2New workspace, jump to workspace 3, split terminal right, split browser right — four shortcuts?
⌘N · ⌘3 · ⌘D · ⌥⌘D
Q3An agent finished in some pane, somewhere. Fastest keystroke to get there?
⌘⇧U — jump to the workspace with the most recent unread notification. (⌘I opens the full panel.)
Q4Which three escape-sequence protocols can raise cmux notifications, and what's the CLI equivalent?
OSC 9, OSC 99 (kitty — subtitles/IDs), OSC 777 (rxvt). CLI: cmux notify --title "…" --body "…".
Q5Default socket path and wire protocol?
/tmp/cmux.sock; one newline-terminated JSON object per request with method and params fields (override path via CMUX_SOCKET_PATH).
Q6The four verbs of the fleet control loop?
send (type text) · send-key (press keys) · read-screen (read output incl. scrollback) · close-surface (tear down). Plus cmux events to observe without polling.
Q7How does cmux claude-teams make Claude Code teammates appear as native splits?
It prepends a tmux shim script to PATH and sets env so Claude Code believes it's in tmux; the shim translates split-window/select-pane/new-session into cmux socket calls (pane splits, focus, workspaces).
Q8What did “cmux” mean in 2025, and where did that product go?
A containerized orchestrator: one task fanned out to several agents, each in an isolated VS Code workspace (Docker/cloud), with the Crown evaluator picking the best run. It lives on as Manaflow (manaflow-ai/manaflow); the cmux name moved to the terminal in Feb 2026.
Q9What survives a cmux relaunch, and what doesn't?
Survives: windows, workspaces, panes, directories, scrollback, metadata (versioned snapshots in ~/Library/Application Support/cmux/). Doesn't: arbitrary process state — your tmux or vim session inside a pane is not checkpointed.
Q10Default socket access mode, and what does allowAll change?
Default: only cmux child processes may connect (verified by process ancestry). allowAll: any local process can connect — full keystroke/screen control, so opt in deliberately.
Q11Name the two env vars every cmux pane exports, and why they matter for scripts.
CMUX_WORKSPACE_ID and CMUX_SURFACE_ID — a script or agent always knows its own address, so it can target itself (or siblings) through the CLI/socket without discovery.
Q12Why is cmux “deliberately not an orchestrator”? What's the claimed benefit?
GUI orchestrators lock you into their workflow (and are often Electron-slow). As a programmable native terminal, cmux is a primitive: any agent works, and you compose your own workflow via shortcuts, templates, and the socket API.

12 · Sources

Everything above traces to these, fetched 2026-07-09.

Official

Community & third-party