之前写过 Agent OrchestratorClaude Squad,它们解决的都是同一个问题:同时跑多个 Coding Agent 时怎么管理。前者用 git worktree 做隔离,后者用 tmux + worktree 做分屏。但这两个方案有一个共同的局限——它们是在终端之上加了一层编排逻辑。

cmux 换了个思路:直接造一个为 AI Agent 设计的终端。不是 tmux 套壳,不是 Electron 应用,而是用 Swift + AppKit 写的原生 macOS 应用,底层用 libghostty 做终端渲染。当你同时跑 5 个 Claude Code、2 个 Codex、1 个 Gemini CLI 的时候,每个 Agent 需要你关注的瞬间,对应标签会亮蓝光、pane 边框出现通知环。Cmd+Shift+U 直接跳到最紧急的那个。

24.7K Star,半年做到的。

它到底解决了什么问题

用 Claude Code 或 Codex 的人都有过这种体验:你在窗口 A 跑着一个 Agent 改后端,窗口 B 跑另一个 Agent 写前端测试,窗口 C 还有一个在查 bug。突然窗口 B 的 Agent 停了——它在等你确认一个文件覆盖。但你不知道,因为你在看窗口 A。

macOS 的原生通知能告诉你"Claude is waiting for your input",但不告诉你是哪个窗口、哪个项目、在做什么。标签栏太窄的时候,标题也看不见。

cmux 的通知系统解决了这个信息断层:

通知的触发机制是标准终端转义序列(OSC 9/99/777),也支持 CLI 命令 cmux notify 手动触发。Claude Code、Codex、OpenCode、Gemini CLI 这些主流 Agent 都已经兼容。

竖向标签栏:不只是换个方向

横标签栏能显示 8-10 个 tab 的标题,竖标签栏能显示 3-4 个。看起来竖标签更浪费空间?实际上 cmux 的竖标签显示的信息密度远超横标签:

信息横标签cmux 竖标签
标题截断到 15 字符完整显示
Git 分支
关联 PR 状态✅(open/merged/conflict)
工作目录
监听端口
最新通知

这意味着你扫一眼侧边栏就知道:Agent A 在 feature/auth 分支上,PR #142 已经 merge 了;Agent B 在 fix/timeout 上,PR #156 有冲突;Agent C 跑着 dev server 在 3000 端口。不需要切过去看。

内置浏览器:Agent 能直接操作网页

这是 cmux 最让我意外的功能。它内置了一个浏览器 pane,可以跟终端并排分屏,而且这个浏览器是可编程的——通过 socket API,Agent 可以:

这个 API 是从 Vercel Labs 的 agent-browser 项目移植过来的。实际场景:你让 Claude Code 写一个登录页面,它写完之后可以直接在旁边的浏览器 pane 里打开 localhost:3000,自己填表单、点按钮、验证功能是否正常。不需要你手动去浏览器里看。

浏览器 pane 还支持从 Chrome、Firefox、Arc 等 20+ 浏览器导入 cookie、历史和会话,所以你的 Agent 打开需要登录的页面时,不需要重新认证。

SSH 和远程工作

cmux ssh user@remote 会在远程机器上创建工作区,浏览器 pane 自动通过远程网络路由(localhost 直接可用)。拖拽图片到远程会话会自动通过 SCP 上传。

更实用的是远程 tmux 附加:cmux 可以直接 attach 到远程 tmux session,这意味着你可以在服务器上跑 Agent,从 cmux 里操控,享受 cmux 的通知和标签系统。

Session Restore:重启不丢上下文

退出 cmux 会保存当前 session 布局。重新打开时恢复:窗口、工作区、pane 布局、工作目录、终端 scrollback、浏览器 URL 和导航历史。甚至支持 Claude Code、Codex、OpenCode 等 Agent 的 session 恢复——前提是安装了对应的 hooks:

cmux hooks setup
cmux hooks setup codex
cmux hooks setup --agent opencode

支持 resume 的 Agent 包括:Claude Code、Codex、Grok、OpenCode、Pi、Amp、Cursor CLI、Gemini、Rovo Dev、Copilot、CodeBuddy、Factory、Qoder。Claude Code 的 resume 由 cmux 的 Claude wrapper 处理(需要在 Settings 里启用 Claude 集成)。

跟 tmux、iTerm2、Warp 比

cmuxtmuxiTerm2Warp
类型原生 macOS 应用终端复用器(CLI)终端模拟器终端 + AI
渲染引擎libghostty (GPU)无(依赖宿主终端)MetalGPU
Agent 通知✅ 通知环 + 面板 + 桌面❌ 需要自己配
竖向标签 + 元数据✅ git/PR/端口/通知
内置浏览器✅ 可编程
Agent Session 恢复✅ 14 种 Agent
SSH + 远程 tmux
Ghostty 配置兼容
CLI/Socket API
平台macOS(iOS beta)全平台macOSmacOS/Linux
开源协议GPL-3.0ISCGPL-2.0闭源

cmux 的定位不是替代 tmux,而是替代"Ghostty + tmux + 手动配通知"这套组合。如果你已经用 Ghostty 作为主力终端,cmux 几乎是零迁移成本——它直接读你的 ~/.config/ghostty/config,主题、字体、颜色全部继承。

可编程性:CLI + Socket API

cmux 的每个操作都有 CLI 和 Unix socket 对应:

# 创建工作区
cmux workspace create "auth-refactor"

# 分屏
cmux pane split-right

# 发送按键
cmux pane send-keys "claude" Enter

# 读取屏幕内容
cmux pane read

# 截图
cmux pane screenshot

# 浏览器操作
cmux browser navigate "http://localhost:3000"
cmux browser snapshot
cmux browser click "#submit-btn"

这意味着你可以写 shell 脚本来自动化多 Agent 工作流。比如:启动 3 个 Agent,分别指向前端、后端、测试三个目录,等它们各自完成后汇总结果。

Claude Code Teams 集成

cmux claude-teams 一条命令启动 Claude Code 的 teammate 模式。teammate 进程自动变成 cmux 的原生分屏,侧边栏显示元数据和通知。不需要 tmux,不需要手动分屏。

上手

Homebrew 安装:

brew tap manaflow-ai/cmux
brew install --cask cmux

或者直接下载 DMG:

# https://github.com/manaflow-ai/cmux/releases/latest/download/cmux-macos.dmg

安装 hooks(让 Agent session 支持恢复):

cmux hooks setup
cmux hooks setup codex
cmux hooks setup --agent opencode

首次启动,macOS 会问你要不要打开来自已识别开发者的应用,点 Open 即可。cmux 通过 Sparkle 自动更新,装一次就行。

踩坑提醒

macOS Only——目前只有 macOS 版本,Swift + AppKit 原生开发。Linux 和 Windows 用户没戏。不过 iOS 版本在 beta 中,可以通过 TestFlight 用 iPhone 远程连接到 Mac 上的 cmux session。

GPL-3.0——如果你的公司对 GPL 敏感,需要联系他们拿商业许可。不过对于个人开发者来说完全不是问题。

需要 Ghostty 思维——cmux 的快捷键体系跟 Ghostty 一致,跟 iTerm2/Terminal.app 差别较大。Cmd+D 是分屏向右(不是关闭标签),Cmd+T 是新 surface(不是新标签)。有学习曲线。

浏览器 pane 还是 beta——可编程浏览器 API 虽然强大,但跟真实 Chrome 比还是有差距。复杂的 SPA 页面可能渲染不完整。目前更适合验证 dev server 的简单页面。

内存占用——虽然是原生应用比 Electron 省资源,但开 10+ 个 pane 每个跑 Agent 的时候,内存占用还是会涨不少。官方没有给具体数据,但建议 16GB+ 内存的机器用。

值得关注的点

cmux 的"primitive, not solution"哲学很有意思。作者在 README 里明确说:cmux 不教你应该怎么用 Agent,它给你终端、浏览器、通知、工作区、分屏、CLI 这些原语,剩下的你自己组合。这跟 tmux 的精神一脉相承,但多了 Agent 时代的特有原语(通知环、Agent session 恢复、可编程浏览器)。

另一个值得关注的是 cmux Skills(cmux-skills)——这是 cmux 的可复用工作流集合,类似 Claude Code 的 skills。但因为 cmux 有浏览器和完整的 CLI API,它的 skills 能做的事情比纯终端 Agent 的 skills 多得多,比如"自动在浏览器里验证修改"、"截图发到 Slack"。

项目状态:活跃开发中,GPL-3.0 协议,24.7K Star,有 Discord 社区和 Nightly 构建。