// compare
mmux vs Zellij
Both are terminal multiplexers written in Rust. Zellij is a general terminal workspace with tiled, floating and stacked panes, tabs, layouts, plugins and a web client. mmux is narrower: a sidebar of coding agents, terminals and dev processes per project directory, with a built-in git panel, running inside an invisible tmux session.
Last checked against Zellij 0.45.1 on .
// tl;dr
Pick Zellij if you want a general multiplexer: split, floating and stacked panes, tabs, KDL layouts, WebAssembly plugins, a browser client with session sharing, or native Windows support. As a terminal workspace it does far more than mmux.
Pick mmux if your terminal mostly hosts coding agents next to a dev server and git: a sidebar that shows which agent is working, ready or waiting on a question, agents that resume their conversation after a quit, a native git panel, and git worktrees as their own projects.
They are not exclusive. mmux is a program in a terminal, so it runs fine inside a Zellij pane. See using both.
At a glance
| Capability | mmux | Zellij |
|---|---|---|
| Sessions survive closing the terminal or dropping SSH | yes: runs in a per-directory tmux session | yes: its own server; detach and reattach |
| Restore after a quit or crash | partly: Claude, Codex, Pi and Grok agents resume their conversation; terminals reopen as fresh shells | partly: layout and pane commands restored; commands wait for Enter; viewport and scrollback opt-in |
| Split, floating and stacked panes, tabs | no: one focused program in the main pane | yes: tiled, floating, stacked and pinned panes, tabs |
| Declarative setup file | partly: mmux.yaml lists agents and processes, not a pane layout |
yes: KDL layouts with panes, tabs, commands and plugins |
| Agent state at a glance (working, ready, needs input) | yes: spinner, green ready, yellow ? on a question |
partly: not agent-aware; marks bells from unfocused panes and tabs |
| Desktop notifications from programs | yes: bell and OSC 9, 777, 99, also over SSH | yes: forwards OSC 9, 777 and 99 to the host terminal |
| Git panel and worktrees | yes: native panel; each worktree opens as its own project | no: not part of Zellij itself |
| Scripting from the command line | yes: mmux ls, read, wait, ask, with agent states |
yes: zellij run --blocking, list-panes --json, subscribe |
| Plugins | no: none | yes: WebAssembly plugins, first-class Rust API |
| Browser access and session sharing | no: terminal only; a narrow layout for SSH from a phone | yes: built-in web client, HTTPS attach, read-only tokens |
| Platforms and dependencies | partly: macOS (Apple Silicon), Linux arm64 and x86_64; needs tmux | yes: Linux, macOS (Intel and Apple Silicon), native Windows; no tmux |
| License and cost | GPLv3, free | MIT, free; optional paid hosted sharing (Zellij.online, beta) |
Zellij facts from its documentation, release notes and default config at v0.45.1; mmux facts from its docs at 0.13.13. Both are written in Rust.
What is Zellij?
Zellij describes itself as "a terminal workspace with batteries included" [1]. It is an MIT-licensed multiplexer written in Rust with its own client and server, so sessions keep running when you detach and you attach to them again later. On top of tiled panes and tabs it offers floating, stacked and pinned panes, command panes that show an exit code and re-run on Enter, KDL layout files, a session manager with session resurrection, and a WebAssembly plugin system that also implements parts of its own interface [2].
Recent releases widened its reach. 0.43.0 added a built-in web client for opening sessions in a browser [3]. 0.44.0 (March 2026) brought native Windows support, terminal-to-terminal attach over HTTPS, read-only sharing tokens and a much larger automation CLI [4]. 0.45.0 (August 2026) added first-class nested sessions, the Kitty graphics protocol, OSC 133 shell integration, desktop notification forwarding and a mobile web UI [5]. The maintainers also run Zellij.online, a paid hosted sharing service with a free tier that is in closed beta, and state that Zellij itself stays free and open source [6].
Where Zellij is better
- Pane layouts. Zellij tiles, floats, stacks and pins panes across tabs, and a KDL layout file can describe a whole environment with commands and plugins [2] [7]. mmux shows one program at a time in its main pane.
- Extensibility. Third-party WebAssembly plugins can read pane scrollback, highlight text and drive the session through a permissioned API [4]. mmux has no plugin system.
- Browser and shared sessions. The built-in web client serves sessions over HTTPS with authentication, other terminals can attach over HTTPS, and read-only tokens let someone watch without typing [3] [4]. 0.45 adds a touch interface for phones [5]. mmux works only in a terminal, with a single-column layout for narrow screens such as SSH from a phone.
- Platforms and dependencies. Zellij ships prebuilt binaries for Linux, macOS on Intel and Apple Silicon, and Windows [8] [9], and needs nothing else. mmux needs tmux on your
PATH, has no Windows build, and covers Intel Macs only through Homebrew or a source build. - Terminal features. Sixel and Kitty graphics, jumping between shell prompts, copying a command together with its output, and opening scrollback in your
$EDITOR[2] [5]. mmux copy is drag-select only; there is no keyboard copy mode yet.
Where mmux is better
- Built for agents. Agents, terminals and processes each get a sidebar section, and you start an agent from your configured list with one keypress. A busy agent shows a gray spinner, a finished one turns green, and one blocked on a question shows a yellow
?, so the colored rows are the ones that need you. Zellij panes have no notion of an agent's state. - Conversations come back. After a quit, a crash or a restart to update, reopening the directory restores your agents, and Claude, Codex, Pi and Grok agents resume their conversation. Zellij resurrection restores the layout and the pane commands, which wait for Enter before they run again [10].
- Native git panel. Changes, branches and recent commits sit in the right column. You stage, commit (with an AI-suggested message), branch and push without another tool, and clicking a file shows its diff in the main pane.
- Worktrees as projects.
wcuts a git worktree that opens as its own project box with its own agents, terminals, processes and git panel. Only one checkout of a repository runs a given process at a time, so every branch reuses the same dev server ports.Mmerges it back, and finished worktrees clean themselves up. - Agents can drive it. Zellij's CLI controls panes [12]. mmux's CLI also knows agent states:
mmux waitreturns when an agent is done or needs input,mmux answerpicks an option on its prompt, andmmux askhands a prompt to a new agent and prints its reply. - One session per directory. Running
mmuxin a project attaches to the session that already exists there.mmux attachlists running and recent sessions, and a workspace manifest puts several projects in one sidebar.
When to use which
Choose Zellij when
- you want several programs visible side by side, in tabs and splits
- you describe environments as layout files or extend the tool with plugins
- you share sessions with others, or open them in a browser
- you work on Windows, or cannot install tmux
Choose mmux when
- you run several coding agents and want to see which one needs you
- you want agents to pick up their conversation after a restart
- you commit and branch from the same screen as your agents
- you work in parallel git worktrees, each with its own agents and dev server
Using Zellij and mmux together
If Zellij is already your terminal workspace, keep it and run mmux in one of its panes for the agent work.
- In a Zellij pane, set up the project once and open mmux:
cd ~/some/project mmux init mmux - Zellij's default config binds
Ctrl bto its tmux mode [11], and mmux usesCtrl-bas its leader in a focused pane. PressCtrl gto lock Zellij while you work in mmux, and again to unlock it. - Closing the Zellij pane only detaches mmux. Its tmux session keeps running, and
mmux attachfrom any shell brings it back.
Commands you used to start from a Zellij layout, such as a dev server, become processes in mmux.yaml:
processes:
- name: Dev server
cmd: npm
args: ["run", "dev"]
autostart: false
FAQ
Is mmux built on Zellij?
No. mmux runs its own Rust TUI inside an invisible, per-directory tmux session and needs tmux on your PATH. Zellij is a separate multiplexer with its own server and does not use tmux.
Can I run mmux inside Zellij?
Yes. mmux is a program in a terminal, so it runs in a Zellij pane. Zellij's default config binds Ctrl b to its tmux mode, which overlaps mmux's Ctrl-b leader, so lock Zellij with Ctrl g while you work in mmux.
Which one restores my session after a quit or crash?
Both, in different ways. Zellij saves the layout and the command in each pane every second and recreates them, with each command waiting for Enter before it runs again. mmux restores your agents and terminals: Claude, Codex, Pi and Grok agents resume their conversation, terminals reopen as fresh shells in the directory you left, and processes come back through autostart or a click.
Does Zellij run on Windows? Does mmux?
Zellij runs natively on Windows since 0.44.0 (March 2026) and publishes Windows builds with each release. mmux publishes builds for macOS on Apple Silicon and for Linux on arm64 and x86_64.
Is Zellij free?
Yes. Zellij is MIT licensed and free. Its maintainers also run Zellij.online, a paid hosted session sharing service with a free tier, in closed beta as of October 2026, and state that Zellij itself stays free and open source. mmux is free under the GPLv3.
Sources
- Zellij repository: README, license (MIT) and description
- Zellij features
- Zellij 0.43.0 release notes: web client
- Zellij 0.44.0 release notes: Windows, remote attach, read-only tokens, CLI automation, plugin APIs
- Zellij 0.45.0 release notes: nested sessions, Kitty graphics, OSC 133, notifications, mobile web UI
- Zellij.online and the open source project
- Zellij documentation: layouts
- Zellij documentation: installation
- Zellij 0.45.1 release and its prebuilt binaries
- Zellij documentation: session resurrection
- Zellij 0.45.1 default config (keybindings)
- Zellij documentation: controlling Zellij through the CLI
- mmux documentation (usage, configuration, notifications)
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 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 tmuxThe general-purpose terminal multiplexer mmux itself runs on: panes, windows and full configuration, with no notion of agents.
- mmux vs WarpA desktop terminal with its own AI agent, cloud agents and paid usage; mmux runs inside any terminal and keeps your agent CLIs alive in tmux.
- 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.
Try mmux
One binary for macOS, Linux and WSL. Run mmux in any project directory.
curl -fsSL https://mmux.org/install.sh | sh