// compare
mmux vs tmux
tmux is a general-purpose terminal multiplexer: sessions, windows and panes that you arrange and configure yourself. mmux is a terminal UI for AI coding agents and dev processes that runs inside an invisible tmux session, one per project directory. The difference is scope: tmux gives you building blocks for any workflow, mmux gives you one fixed layout built around agents.
Last checked against tmux 3.8 on .
// tl;dr
Pick tmux if you want a general multiplexer you shape yourself: split and floating panes, many windows, your own key bindings and status line, scripting, and every platform tmux supports, including the BSDs and Solaris. It has been developed since 2007, and binary packages exist for many platforms.
Pick mmux if your terminal mostly holds coding agents, a dev server and git, and you want them in one sidebar per project that shows which agent is waiting on you, sends a desktop notification when one finishes, and brings Claude or Codex conversations back after a quit or crash.
It is not either/or: mmux needs tmux and runs on top of it, and you can launch mmux from inside your own tmux session.
At a glance
| Capability | mmux | tmux |
|---|---|---|
| Sessions survive closing the terminal or an SSH drop | yes: Runs inside a tmux session per directory | yes: Detach and reattach is its core feature |
| Split panes, windows, custom layouts | no: Fixed layout: sidebar, one program in the main pane, git panel | yes: Tiled and floating panes, windows, layouts |
| Shows which agent is waiting on you | yes: Idle agents turn green, a blocked question shows ? |
partly: Activity, silence and bell alerts per window, not agent-aware |
| Desktop notifications | yes: Native popup on bell or notification escapes, also over SSH | no: Alerts in the status line; no desktop notifications of its own |
| Restore after quit, crash or reboot | yes: Reopens agents and terminals; Claude, Codex, Pi and Grok resume their conversation | partly: Not built in; third-party plugins such as tmux-resurrect |
| Named dev processes from a config file | yes: processes: with start, stop, restart and a stop: teardown |
partly: Any command in any pane, wired up via config or shell scripts |
| Built-in git UI | yes: Git panel: stage, commit, branches, push, worktrees | no: Run git or a git TUI in a pane |
| Scripting and remote control | yes: mmux ls, read, send, ask, wait, aimed at agents |
yes: Full command language, hooks, control mode (used by iTerm2) |
| Custom key bindings and options | no: Fixed keys; YAML configures agents, processes, workspaces | yes: Every binding, option and status line in ~/.tmux.conf |
| Platforms | partly: macOS (Apple Silicon) and Linux arm64/x86_64 binaries | yes: OpenBSD, FreeBSD, NetBSD, Linux, macOS, Solaris |
| Dependencies | tmux (git for the git panel) | libevent 2.x, ncurses |
| Price and license | Free, GPLv3 or later | Free, ISC |
tmux facts from its README, CHANGES, man page and wiki at tag 3.8 (released 2026-09-09). mmux facts from its docs at 0.13.13.
What is tmux?
tmux describes itself as "a terminal multiplexer: it enables a number of terminals to be created, accessed, and controlled from a single screen", which "may be detached from a screen and continue running in the background, then later reattached" [1]. Every terminal lives in a pane, panes live in windows, and windows are grouped into sessions; commands are reached through a prefix key, Ctrl-b by default, and the server reads ~/.tmux.conf at startup [4].
The project started in 2007 [2], is written in C, is ISC licensed [3], and runs on OpenBSD, FreeBSD, NetBSD, Linux, macOS and Solaris [1]. Version 3.8, released on 2026-09-09, extended floating and modal panes, added built-in light and dark themes, and added monitor hooks that fire when a format changes [2] [7]. Control mode lets other programs drive tmux over a text protocol; iTerm2 uses it to show tmux panes as native windows [5].
GNU Screen is the older tool in the same category: it multiplexes one terminal between several processes, keeps a scrollback buffer per window, and keeps programs running while the session is detached [9]. Its latest release is 5.0.2 (July 2026) [10]. Everything on this page about tmux versus mmux applies to Screen in broad strokes, with one difference: mmux is built on tmux, so it needs tmux installed even if you use Screen for everything else.
Where tmux is better
- Layout freedom. tmux splits a window into as many panes as you like, tiled or floating, across as many windows as you like, so you can watch several programs side by side. mmux shows one program at a time in its main pane.
- It fits any workflow. tmux knows nothing about agents, projects or git, which is the point: the same tool works for a database console, a log tail on a server, or a pair session with several clients attached to one session [4].
- Configuration depth. Every key binding, option, hook and status line element is yours to change, and third-party plugins such as tmux-resurrect build on it [8]. mmux's keys are fixed; its YAML only describes agents, processes and workspaces.
- Scripting depth. tmux has a full command language and control mode, which terminals like iTerm2 build on [5]. mmux's CLI is narrower and aimed at listing, reading and prompting its own sessions.
- Platforms and footprint. tmux runs on the BSDs and Solaris as well as Linux and macOS, and binary packages exist for many of them [1]. mmux ships binaries for macOS on Apple Silicon and Linux, and itself depends on tmux.
- Maturity. tmux has been developed since 2007 [2]. mmux is a young project at version 0.13.
Where mmux is better
- It knows which agent needs you. A working agent shows a gray spinner, an agent that finished or waits on you turns green, and one blocked on a question shows a yellow
?. tmux can flag activity or silence in a window, but it has no notion of an agent's state. - Desktop notifications, also over SSH. When a program rings the bell or emits a notification escape (Claude Code does when it is done), mmux raises a native desktop notification on the machine your terminal runs on.
- Sessions come back after a quit. After
q, a crash or a restart-to-update, reopening the directory restores the agents and terminals you had open. Claude, Codex, Pi and Grok agents resume their conversation; terminals reopen in the directory you left them in as fresh shells. - Dev processes as named rows. Processes from
mmux.yamlstart, stop and restart from the sidebar, can autostart, and can carry astop:teardown such asdocker compose downthat runs on stop or quit. - Git and worktrees built in. A git panel stages, commits (with an AI-suggested message), switches branches and pushes.
wopens a git worktree as another project in the same sidebar with its own agents, andMmerges it back. - One session per directory, no setup.
mmuxin a project opens or reattaches that project's session, andmmux attachpicks from every running session and recent directory. With tmux you name and track sessions yourself. - Agents can drive it.
mmux askstarts an agent, waits and prints its reply;mmux readreturns a dev server's recent output. Each action shows up in your sidebar.
When to use which
Choose tmux when
- you want several programs visible at once in split panes
- you work on servers, BSDs or anywhere a single package install is the limit
- you already have a tuned
~/.tmux.confand want to keep every binding - your work is not centered on coding agents
- you need several people attached to the same session
Choose mmux when
- you run several coding agents per project and lose track of which one is done
- you want a notification when an agent finishes, even on a remote box
- you want agent conversations back after a quit, crash or update
- a dev server, its logs and git belong next to the agents
- you work across several worktrees or projects in parallel
Using tmux and mmux together
mmux already uses tmux underneath: each project directory gets an invisible tmux session with its status bar and prefix turned off. Those options are set on mmux's sessions only; the one server-level change is enabling extended-key support. You can keep tmux for everything else and use mmux for agent work:
- Install mmux. tmux must be on your
PATH, which it already is if you use it. - In any tmux pane,
cdinto a project and runmmux. It unsetsTMUXwhen it attaches, so it works inside another tmux. - Both tools use
Ctrl-bby default, and your outer tmux sees it first. PressCtrl-btwice to pass it through to mmux (tmux's defaultsend-prefixbinding [6]), or give your outer tmux a different prefix. - Inside mmux,
Ctrl-b bsends a literalCtrl-bto the focused program, for a tmux running in an mmux terminal. - Put your agents in
~/.mmux/config.yamland the project's processes inmmux.yaml. Closing the outer tmux pane only detaches mmux; runmmuxagain to reattach.
# ~/.mmux/config.yaml
agents:
- name: Claude
cmd: claude
# ./mmux.yaml
processes:
- name: Dev server
cmd: npm
args: ["run", "dev"]
FAQ
Is mmux a replacement for tmux?
No. mmux needs tmux and runs inside a tmux session, one per project directory. It replaces the part of a tmux setup where you juggle coding agents, a dev server and git in panes, not tmux itself.
Can I just run Claude Code or Codex in a tmux pane?
Yes, and it works well: the agent keeps running after you detach. What tmux does not do is tell you which agent is done or waiting on you, send a desktop notification when it is, or resume the conversation after the tmux server stops. mmux adds those on top of the same tmux persistence.
Can I run mmux inside my existing tmux session?
Yes. mmux unsets TMUX when it attaches, so it works when launched inside another tmux. Both use Ctrl-b by default and the outer tmux receives it first, so press Ctrl-b twice to reach mmux, or change your outer tmux prefix.
Does tmux restore sessions after a reboot?
Not by itself. tmux sessions live in the tmux server process and end when it stops. The third-party tmux-resurrect plugin saves and restores sessions, windows, pane layouts and a default list of programs such as vim and less. mmux restores its own agents and terminals after a quit or crash, and Claude, Codex, Pi and Grok agents resume their conversation.
What about GNU Screen?
GNU Screen is the older terminal multiplexer, with detach, reattach and scrollback per window; its latest release is 5.0.2 from July 2026. The comparison on this page applies to it in broad strokes. mmux is built on tmux, so it needs tmux installed even if you use Screen.
Are tmux and mmux free?
Both are free and open source. tmux is ISC licensed; mmux is GPLv3 or later.
Sources
- tmux README at tag 3.8
- tmux CHANGES at tag 3.8 (3.8 changes, and the 2007 initial import at the end)
- tmux COPYING (ISC license)
- tmux wiki: Getting Started
- tmux wiki: Control Mode
- tmux man page at tag 3.8 (default key bindings)
- tmux 3.8 release, 2026-09-09
- tmux-resurrect (third-party plugin) README
- GNU Screen homepage
- GNU Screen release downloads (screen-5.0.2, 2026-07-11)
- mmux documentation
Other comparisons
- mmux vs Agent DeckA Go session manager on tmux with agent status, forks, MCP and skill management and a web UI; mmux works per project, with dev processes and a git panel.
- mmux vs Claude SquadRuns each agent in its own tmux session and git worktree; mmux creates worktrees on demand and adds dev processes and a git panel.
- mmux vs cmuxA native macOS terminal by Manaflow, built on libghostty, with tabs, splits, a browser and notifications; a separate project from mmux despite the name.
- mmux vs workmuxA CLI that pairs each git worktree with a tmux window and uses tmux as the interface; mmux puts its own TUI on a hidden tmux session.
- mmux vs ZellijA Rust terminal workspace with tiled, floating and stacked panes, layouts, plugins and a web client; mmux trades layout freedom for an agent sidebar.
Try mmux
One binary for macOS, Linux and WSL. Run mmux in any project directory.
curl -fsSL https://mmux.org/install.sh | sh