// compare
mmux vs CCManager
CCManager is a TUI for running several coding agent CLIs in parallel across git worktrees and projects, without tmux. mmux covers similar ground from inside a per-directory tmux session, so agents outlive the terminal, and adds shells, dev processes and a git panel next to them.
Last checked against CCManager 4.4.6 on .
// tl;dr
Pick CCManager if you want an agent switcher with no tmux dependency, you work on Windows, you run agents inside a devcontainer, or you want to carry a Claude Code conversation into a new worktree. It installs with one npm install -g.
Pick mmux if agents should keep running after you close the terminal or lose SSH, you want dev servers and shells in the same sidebar as the agents, or you want a git panel and a command line that scripts and other agents can drive.
The two are not exclusive: CCManager runs fine inside an mmux terminal row, see below.
At a glance
| Capability | mmux | CCManager |
|---|---|---|
| Agents survive closing the terminal or SSH | yes: runs in a tmux session; detach and reattach | no: closing it ends the agents it started |
| Sessions after a quit or crash | yes: Claude, Codex, Pi and Grok resume their conversation | partly: reruns each session's command; conversation not restored |
| Runs without tmux | no: needs tmux on PATH |
yes: self-contained |
| Platforms | partly: macOS and Linux | yes: macOS, Linux and Windows x64 |
| Agent state in the list | yes: working, needs input, idle | yes: busy, waiting, idle, detected per CLI |
| Create, merge and remove worktrees | yes: plus cleanup of finished worktrees | yes: plus creation in the background |
| Carry a Claude Code conversation into a new worktree | no: not built in | yes: copies the session data on creation |
| Shells and dev servers beside the agents | yes: Terminals and Processes rows | no: built around agent sessions |
| Git view | yes: panel with diffs, commit, push | partly: per-worktree line counts, ahead/behind |
| Command line for scripts and agents | yes: mmux ls, read, ask, wait |
no: interactive TUI only |
| Devcontainer integration | no: not built in | yes: agents in the container, manager on the host |
| License, language, install | GPLv3, Rust, single binary | MIT, TypeScript, npm |
CCManager facts from its README, docs and source at tag v4.4.6. mmux facts from its docs at 0.13.13.
What is CCManager?
CCManager describes itself as a CLI application for managing multiple AI coding assistant sessions across git worktrees and projects [1]. It started as a Claude Code manager and now documents Claude Code, Gemini CLI, Codex CLI, Cursor Agent, Copilot CLI, Cline CLI, OpenCode, Kimi CLI and MiniMax Code, with a state detection strategy per tool that marks each session busy, waiting or idle [1]. It is written in TypeScript, MIT licensed, and installed with npm install -g ccmanager or run with npx ccmanager; the npm package pulls in a prebuilt binary for macOS (arm64, x64), Linux (arm64, x64) or Windows x64 [2]. The latest release at the time of writing is v4.4.6 from 2026-10-10 [8].
The interface is a menu: pick a worktree, work with its agent, press Ctrl+E to return to the menu [1]. From that menu you create, merge and delete worktrees; a multi-project mode (--multi-project with CCMANAGER_MULTI_PROJECT_ROOT) discovers every git repository under a root directory [6]. Settings live in ~/.config/ccmanager/config.json with a per-repository .ccmanager.json on top [1].
CCManager deliberately avoids tmux. Each agent runs in a pseudo-terminal owned by the CCManager process, so the README notes that closing CCManager kills the processes it started. It records the open sessions and offers to start them again on the next launch, which reruns each command in its worktree but does not bring back the conversation or the terminal output [1].
Where CCManager is better
- No tmux. CCManager needs nothing besides itself. mmux requires tmux on your
PATH, which is one more dependency and one more thing to keep apart if you already have a tmux setup. - Windows. CCManager ships a Windows x64 binary [2]. mmux runs on macOS and Linux only.
- Devcontainers. With
--devc-up-commandand--devc-exec-command, CCManager stays on the host and runs the agents inside a container, so a flag like--dangerously-skip-permissionsonly reaches the sandbox [5]. mmux has no equivalent built in. - Conversation context in new worktrees. When it creates a worktree, CCManager can copy the Claude Code session data from
~/.claude/projectsof the source checkout, so the new branch starts with the existing conversation [1]. A new mmux worktree starts its agents fresh. - Status hooks. CCManager runs a command of your choice whenever a session changes between idle, busy and waiting, with the old and new state and the worktree in environment variables [3]. That makes it easy to post to Slack or log time per state. mmux notifications are triggered by the bell or a notification escape from the program, not by every state change.
- Wider list of detected agents. CCManager has state detection for Cursor Agent, Copilot CLI, Cline CLI, Kimi CLI and MiniMax Code, none of which mmux ships a preset for [1].
- Experimental auto approval. CCManager can ask a model (Claude Haiku by default, or your own command) whether a permission prompt is safe and approve it, falling back to manual approval on errors [4]. mmux leaves approval to each agent's own permission modes.
Where mmux is better
- Agents outlive the terminal. mmux runs inside an invisible tmux session per directory. Close the terminal window or drop SSH and every agent keeps working; run
mmuxagain, ormmux attachfrom anywhere, to rejoin. - Conversations come back after a quit. After a quit, a crash or a restart to update, reopening the directory resumes the conversations of Claude, Codex, Pi and Grok agents, not just their commands. Terminals reopen in the directory you left them in.
- More than agents. The sidebar also holds Terminals and Processes (dev servers, scripts) defined in
mmux.yaml, with optionalstop:teardown commands. Across worktrees only one checkout runs a given process at a time, solocalhost:3000is always the branch you last started it in. - A git panel. A native panel shows changes, branches and commits, a live diff preview, commits with an AI-suggested message, scheduled commits and push. CCManager shows line counts and ahead/behind numbers per worktree.
- Scriptable from outside.
mmux ls,mmux read,mmux ask,mmux waitandmmux startlet a script or another agent list sessions, read a dev server's output, hand a prompt to a new agent and wait for its answer. CCManager's CLI accepts only startup flags and requires an interactive terminal [7]. - Worktrees that tidy up. A worktree opens as its own project box, with gitignored files such as
.envcopied at every depth and an optionalsetup:command. A finished worktree (clean, merged or pushed, idle) is removed after 30 minutes by default. - Notifications over SSH without setup. A bell or notification escape from any session becomes a native desktop notification on the machine your terminal runs on, even when mmux runs on a remote box.
When to use which
Choose CCManager when
- you do not want tmux installed or involved
- you work on Windows
- agents should run inside a devcontainer while the manager stays on the host
- you branch a Claude Code conversation into several worktrees
- you use Cursor Agent, Copilot CLI, Cline CLI or Kimi CLI and want their state detected
Choose mmux when
- you work over SSH and agents must keep running when the connection drops
- you want agent conversations resumed after a quit or a crash
- dev servers and shells should live next to the agents, per worktree
- you want to stage, commit and push without leaving the TUI
- scripts or other agents should be able to start, read and wait on sessions
Moving from CCManager to mmux
- Install mmux and make sure tmux is on your
PATH(Homebrew installs it for you). - Run
mmux initin a project, ormmux init workspacein the parent folder to get several repositories in one sidebar, similar to CCManager's multi-project mode. - Move your command presets to
agents:in~/.mmux/config.yaml: each entry has aname,cmdandargs. - Your
.worktreeincludeentries map toworktrees.copy, and a post-creation worktree hook maps toworktrees.setupinmmux.yaml. - Press
wto create a worktree,Mto merge it back,Xto remove it.
# ~/.mmux/config.yaml
agents:
- name: Claude
cmd: claude
- name: Codex
cmd: codex
# ./mmux.yaml
worktrees:
copy: [.env, .env.local]
setup: pnpm install
To keep CCManager and still get persistence, open a terminal row in mmux and run npx ccmanager there. The row lives in mmux's tmux session, so CCManager and its agents keep running when you detach.
FAQ
Does CCManager need tmux?
No. CCManager is self-contained and runs each agent in its own pseudo-terminal, so tmux is not required. mmux does need tmux on your PATH, because it runs inside an invisible tmux session per directory. Homebrew installs tmux for you.
Do my agents keep running when I close the terminal?
In mmux, yes: closing the terminal or dropping SSH detaches, and running mmux again in the directory reattaches to the same agents. In CCManager, closing the app ends the agent processes it started. On the next launch it offers to start those sessions again, which reruns their commands but does not restore the conversation or the terminal output.
Does CCManager or mmux run on Windows?
CCManager publishes prebuilt binaries for Windows x64 as well as macOS and Linux. mmux supports macOS and Linux only.
Which agent CLIs do they support?
CCManager documents Claude Code, Gemini CLI, Codex CLI, Cursor Agent, Copilot CLI, Cline CLI, OpenCode, Kimi CLI and MiniMax Code, each with its own state detection. mmux ships presets for Claude, Codex, Pi, Gemini, Amp, opencode and Grok, and any command can be configured as an agent. mmux resumes the conversation of Claude, Codex, Pi and Grok agents after a restart.
Can I use CCManager and mmux together?
Yes. CCManager is a terminal program, so you can start it in an mmux terminal row. Because that row lives in mmux's tmux session, CCManager and its agents then keep running when you detach or lose SSH.
Are CCManager and mmux free?
Both are free and open source. CCManager is MIT licensed and installed from npm. mmux is GPLv3-or-later and installed as a single binary. Neither repository mentions a paid tier.
Sources
- CCManager README at v4.4.6
- CCManager package.json at v4.4.6: license and platform binaries
- CCManager docs: status change hooks
- CCManager docs: auto approval
- CCManager docs: devcontainer integration
- CCManager docs: multi-project mode
- CCManager source: src/cli.tsx (flags and TTY check)
- CCManager release v4.4.6
- 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 ConductorA Mac app by Melty Labs that runs Claude Code, Codex and other agents in parallel worktrees, built around pull request review.
- mmux vs SupersetAn Electron app for parallel CLI agents in worktrees, with a CLI, SDK and hosted MCP server; mmux is a single-binary TUI on 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