cmux 是一款面向 AI 编程智能体的开源 macOS 终端应用,基于 Ghostty 的终端渲染库 libghostty 构建,使用 Swift 与 AppKit 原生开发,而非 Electron 或 Tauri。它的目标用户是需要在多个终端会话中并行运行 Claude Code、Codex 等编程智能体的开发者。
主要能力
- 垂直与水平标签页:侧边栏以垂直标签展示每个工作区的 git 分支、关联 PR 状态与编号、工作目录、监听端口以及最新通知文本。
- 通知系统:通过标准终端转义序列(OSC 9/99/777)或 cmux CLI 触发通知,智能体等待输入时窗格显示蓝色通知环,侧边栏标签亮起,并弹出通知面板与 macOS 桌面通知。Cmd+Shift+U 可跳转到最近未读通知。
- 内置可编程浏览器:可在终端旁拆分真实浏览器窗格,支持导航、DOM 快照、点击、输入、执行 JavaScript,并读取控制台与网络活动,智能体可借此验证自己的 Web 改动。
- 浏览器导入:可从 Chrome、Firefox、Arc 等 20 多种浏览器导入 Cookie、历史记录和会话,使浏览器窗格启动时已处于登录状态。
- 自定义命令:在 cmux.json 中定义项目专属操作,并从命令面板启动。
- 可编程性:通过 CLI 和 Unix socket API 创建工作区、拆分窗格、发送按键、读取屏幕内容、截图以及驱动浏览器。
- 原生性能:Swift + AppKit 构建,启动快、内存占用低,使用 libghostty 实现 GPU 加速渲染。
- Ghostty 兼容:读取现有的 ~/.config/ghostty/config,继承主题、字体、颜色和光标设置。
- 键盘快捷键:为工作区、拆分、浏览器等提供大量快捷键,终端键位绑定来自 Ghostty 配置,cmux 专属快捷键可在设置中自定义。
- 开源免费:GPL 许可。
使用方式 推荐通过 DMG 安装:打开 .dmg 并将 cmux 拖入 Applications 文件夹,之后通过 Sparkle 自动更新。首次启动时 macOS 可能提示确认打开来自已识别开发者的应用,点击“打开”即可。另有 NIGHTLY 版本,使用独立 bundle ID,可与稳定版并存,从最新 main 提交自动构建并自动更新。
会话恢复 退出 cmux 时会保存当前会话,重新启动后恢复窗口/工作区/窗格布局、工作目录、终端回滚缓冲(尽力而为)以及浏览器 URL 和导航历史。cmux 不会保存任意活动进程状态;普通终端、tmux、vim、shell 等会作为普通终端重新打开。若需在 cmux 退出、崩溃和更新之间保持本地会话存活,可选用 cmux local-tmux 或 cmux local-zellij。支持的智能体在钩子保存原生会话 ID 后可恢复会话,使用 cmux hooks setup 安装钩子。
适用场景
- 同时运行多个 AI 编程智能体,需要快速识别哪个智能体在等待输入。
- 需要将浏览器与终端并排使用,让智能体直接与开发服务器交互。
- 通过 SSH 打开远程工作区并附加到远程 tmux 会话,在远程主机上运行智能体。
- 需要可编程、可脚本化的终端环境来自动化工作流。
限制
- 目前仅支持 macOS。
- iOS 应用处于 beta 阶段,通过 TestFlight 以 cmux BETA 发布,早期访问包含在 cmux Founders Edition 中。
- 本地 tmux 服务器无法在注销、重启、关机或断电后存活;若需在 Mac 离线时保持所有者在线,需使用 cmux ssh-tmux、cmux mosh-tmux 或持久云 VM。
- 会话恢复不保留任意活动进程状态。
- 浏览器 Cookie 和登录信息按安装实例隔离,不会随会话导入迁移。
cmux 与 Ghostty 的关系:cmux 不是 Ghostty 的分支,而是将 libghostty 作为终端渲染库使用,类似应用使用 WebKit 渲染网页。Ghostty 是独立终端,cmux 是基于其渲染引擎构建的另一款应用。