// compare

mmux vs workmux

Both tools give each parallel agent task its own git worktree. workmux is a CLI that pairs every worktree with a tmux window and treats tmux as the interface; mmux is a TUI of its own (sidebar, main pane, git panel) that runs on a hidden tmux session. The real question is whose interface you want to live in.

Last checked against workmux v0.1.276 on .

// tl;dr

Pick workmux if you already work in tmux (or kitty, WezTerm, Zellij) and want worktree-per-task automation added to that setup, if you want agents sandboxed in containers or VMs, or if you want merge options such as rebase, squash or merging into a branch other than main.

Pick mmux if you want one app per project that holds agents, terminals, dev servers and git without learning tmux, that restores your agents when you reopen it after a quit or crash, that hands the dev server to whichever worktree you start it in, and that sends desktop notifications even over SSH.

Both are free, open source and written in Rust. Each one wants to own worktree creation and cleanup, so in practice you pick one of them per repository.

At a glance

mmux 0.13.13 and workmux v0.1.276, as of 2026-10-14.
Capability mmux workmux
Interface Its own TUI on a hidden tmux session, with its own keys Your tmux windows (or kitty, WezTerm, Zellij tabs), plus an optional sidebar and popup dashboard
Worktree plus agent in one step yes: w, or mmux worktree new --prompt yes: workmux add -A "prompt", branch name generated from the prompt
New worktree setup yes: worktrees.copy list and one setup command yes: Copy and symlink lists, post_create hooks, pane layouts
Merge and clean up partly: M merges into the base branch; finished worktrees are removed after idle yes: workmux merge with --rebase, --squash, --into
Agent status at a glance yes: Sidebar row colors, read from the terminal, no hooks yes: Window name icons, sidebar, dashboard; hooks via workmux setup
Dev servers yes: Process rows; one dev stack per repo, so ports stay the same partly: Commands in tmux panes per worktree; port isolation is a documented recipe
Diff review and staging yes: Git panel with per-file staging, branches, commits yes: Dashboard diff view with per-hunk staging
Agent sandboxing no: Not offered yes: Docker, Podman, Apple Container or Lima VM
Restore after a crash yes: Automatic on reopen, also after a quit yes: workmux resurrect after a tmux or computer crash
Desktop notifications yes: From bells and OSC 9/777, also over SSH partly: merge --notification; no general agent alert found in the docs
Prebuilt binaries macOS Apple Silicon, Linux arm64 and x86_64 macOS arm64 and Intel, Linux arm64 and amd64
License GPLv3, free MIT, free

workmux facts from its documentation, README and the v0.1.276 release assets. "Not found in the docs" means we searched its full documentation and changelog and did not find the feature; it is not a confirmed absence.

What is workmux?

workmux, by Raine Virta, describes itself as "git worktrees + tmux windows for zero-friction parallel dev" [1][2]. One command, workmux add, creates a branch, a git worktree and a matching tmux window, copies or symlinks files such as .env and node_modules, runs post-create hooks and lays out your panes; workmux merge merges the branch and removes the worktree, the window and the local branch [1][4]. tmux is the main backend, with kitty, WezTerm and Zellij (experimental) as alternatives [1].

Its stated philosophy is that "tmux is the interface": instead of a separate app, agent status shows up as icons in tmux window names, in an optional sidebar pinned to every tmux window, and in a dashboard you open as a tmux popup [1][5][6][7]. Status comes from hooks that workmux setup installs for Claude Code, OpenCode, Codex, Copilot CLI, Pi, Oh My Pi, Gemini CLI, Grok and Antigravity CLI [5]. It also ships agent skills (/worktree, /coordinator, /merge) and optional sandboxing in containers or Lima VMs [8][9].

workmux is a Rust CLI under the MIT license, installed with a shell script, Homebrew, Cargo, mise or Nix. Version v0.1.276 was released on 2026-10-14 with binaries for macOS and Linux [2][3][10].

Where workmux is better

Where mmux is better

When to use which

Choose workmux when

  • You live in tmux, kitty, WezTerm or Zellij and want worktree automation on top of it
  • Agents should run in a container or VM, away from your SSH keys and credentials
  • Your team merges with rebase or squash, or stacks branches with --into
  • You want PR and CI check status next to each agent
  • You are on an Intel Mac or install tools through Nix

Choose mmux when

  • You want one window per project without building a tmux setup first
  • Dev servers and scripts belong next to the agents, with logs agents can read
  • Several worktrees should share one dev stack on the same ports
  • You work over SSH and want notifications on your own machine
  • You want agents back, mid-conversation, after a quit or crash without running anything

Moving from workmux to mmux

  1. Finish open workmux worktrees with workmux merge, or clean them up with workmux remove. mmux creates its own worktrees under ~/.mmux/worktrees/.
  2. Install mmux and run mmux init in the project.
  3. Carry over your .workmux.yaml: files you copied or symlinked go into worktrees.copy (files are copied, directories symlinked), a post_create install step becomes worktrees.setup, and dev server panes become processes. Agents go in ~/.mmux/config.yaml.
  4. Run mmux and press w for a new worktree, or start one with an agent from the shell.
# ./mmux.yaml
name: my-project
processes:
  - name: Dev server
    cmd: npm
    args: ["run", "dev"]
worktrees:
  copy: [.env, .env.local, node_modules]
  setup: pnpm install
mmux worktree new fix-auth --prompt "fix the login bug"

FAQ

What is the main difference between mmux and workmux?

Whose interface you work in. workmux is a CLI that creates a git worktree and a matching tmux window per task, and tmux (or kitty, WezTerm or Zellij) stays your interface. mmux is its own TUI with a sidebar of agents, terminals and dev processes, a main pane and a git panel, running on a hidden tmux session that you never have to configure.

Do I need to know tmux to use workmux or mmux?

workmux is built on the idea that tmux is the interface, so you navigate windows, panes and popups with tmux itself, or with kitty, WezTerm or Zellij as alternative backends. mmux needs tmux installed but keeps it out of sight: you move around with mmux's own sidebar keys and the mouse.

Do agents survive closing the terminal or a crash?

In both, agents keep running when the terminal closes, because they live in tmux. After a tmux or computer crash, workmux resurrect reopens the worktrees that had agents and resumes them. mmux restores its agents and terminals automatically when you reopen the directory, after a quit, a crash or a restart-to-update, and Claude, Codex, Pi and Grok agents resume their conversation.

Can either tool sandbox AI agents?

workmux can run agents in containers (Docker, Podman or Apple Container) or Lima VMs scoped to the worktree, isolated from host secrets such as SSH keys. mmux has no sandboxing; agents run as your user in the project or worktree directory.

Are mmux and workmux free?

Yes. Both are open source and written in Rust. mmux is licensed under GPLv3 and workmux under MIT. Neither project lists a paid tier.

Sources

  1. workmux documentation: What is workmux?
  2. workmux repository and README on GitHub (MIT license)
  3. workmux v0.1.276 release and binaries (2026-10-14)
  4. workmux documentation: merge command
  5. workmux documentation: status tracking
  6. workmux documentation: sidebar
  7. workmux documentation: dashboard
  8. workmux documentation: skills
  9. workmux documentation: sandbox
  10. workmux documentation: installation
  11. workmux documentation: patch mode
  12. workmux documentation: monorepos
  13. workmux documentation: resurrect command
  14. mmux documentation (usage, configuration, notifications)

Other comparisons

all comparisons

Try mmux

One binary for macOS, Linux and WSL. Run mmux in any project directory.

curl -fsSL https://mmux.org/install.sh | sh