Cmux 终端工具:Ghostty 垂直标签管理器
基于 Ghostty 的新型终端工具,提供垂直标签和实时通知等功能,改善开发者终端体验。
基于 Ghostty 的新型终端工具,提供垂直标签和实时通知等功能,改善开发者终端体验。
一款基于 Ghostty 的 macOS 终端,提供垂直标签页,以及面向 AI 编程 Agent 的通知功能。
English | 日本語 | Tiếng Việt | 简体中文 | 繁體中文 | 한국어 | Deutsch | Español | Français | Italiano | Dansk | Polski | Русский | Bosanski | العربية | Norsk | Português (Brasil) | ไทย | Türkçe | ភាសាខ្មែរ | Українська
▶ 演示视频 · cmux 之禅
垂直 + 水平标签页
浏览器导入——从 Chrome、Firefox、Arc 等 20 多款浏览器导入 Cookie、历史记录和会话,让浏览器窗格打开时就处于已登录状态。
自定义命令——在 cmux.json 中定义项目专属操作,并通过命令面板启动。
可编程——通过 CLI 和 socket API 创建工作区、拆分窗格、发送按键,以及自动操作浏览器。
原生 macOS 应用——使用 Swift 和 AppKit 构建,而非 Electron。启动快、内存占用低。
兼容 Ghostty——读取你现有的 ~/.config/ghostty/config,沿用主题、字体和颜色。
GPU 加速——由 libghostty 提供支持,实现流畅渲染。
键盘快捷键——为工作区、分屏、浏览器等功能提供丰富的快捷键。
开源——免费,并采用 GPL 许可证。
打开 .dmg,将 cmux 拖入 Applications 文件夹。cmux 会通过 Sparkle 自动更新,因此只需下载一次。
brew tap manaflow-ai/cmux
brew install --cask cmux
brew upgrade --cask cmux
首次启动时,macOS 可能会要求你确认是否打开来自已认证开发者的应用。点击 Open 继续。
我经常并行运行大量 Claude Code 和 Codex 会话。之前我使用 Ghostty,开着一堆分屏窗格,并依靠 macOS 原生通知判断哪个 Agent 需要我介入。但 Claude Code 的通知正文永远只有一句 “Claude is waiting for your input”,完全没有上下文;而且标签页开得足够多之后,我甚至连标题都看不清了。
我试过几款编程编排工具,但其中大多数都是 Electron/Tauri 应用,性能问题让我很不舒服。我也更喜欢终端,因为 GUI 编排工具会把你限制在它们预设的工作流里。因此,我使用 Swift/AppKit 将 cmux 构建成了原生 macOS 应用。它使用 libghostty 渲染终端,并读取你现有的 Ghostty 配置,沿用其中的主题、字体和颜色。
cmux 主要新增了侧边栏和通知系统。侧边栏提供垂直标签页,会显示每个工作区的 git 分支、关联 PR 的状态和编号、工作目录、正在监听的端口,以及最新的通知文本。通知系统可以捕获终端序列(OSC 9/99/777),同时还提供 CLI(cmux notify),你可以将它接入 Claude Code、OpenCode 等 Agent 的 hook。当某个 Agent 正在等待时,它所在的窗格会出现蓝色边框,侧边栏中的标签页也会亮起,这样即使跨越多个分屏和标签页,我也能知道究竟哪个 Agent 需要我。按 Cmd+Shift+U 可以跳转到最近一条未读通知。
应用内浏览器提供了从 agent-browser 移植而来的可编程 API。Agent 可以获取无障碍树快照、获得元素引用、点击元素、填写表单和执行 JS。你可以在终端旁边拆分出一个浏览器窗格,让 Claude Code 直接与你的开发服务器交互。
所有功能都可以通过 CLI 和 socket API 编程控制——创建工作区和标签页、拆分窗格、发送按键,以及在浏览器中打开 URL。
cmux 不会规定开发者应该如何组织和使用自己的工具。它只是一个带有 CLI 的终端和浏览器,其余部分由你决定。
cmux 是一种基础构件,而不是一套解决方案。它为你提供终端、浏览器、通知、工作区、分屏、标签页,以及控制这一切的 CLI。cmux 不会强迫你按照某种固执己见的方式使用编程 Agent。如何利用这些基础构件搭建自己的工作方式,完全取决于你。
最优秀的开发者一直都在打造自己的工具。至今还没有人找到与 Agent 协作的最佳方式,那些开发封闭产品的团队显然也没有。最贴近自身代码库的开发者,反而会最先找到答案。
如果给一百万名开发者一组可组合的基础构件,他们一定能以集体探索的方式,比任何产品团队自上而下地设计方案更快找到最高效的工作流。
如需了解如何配置 cmux,请前往我们的文档。
浏览器开发者工具的快捷键遵循 Safari 默认设置,并且可以在 Settings → Keyboard Shortcuts 中自定义。命令面板的导航快捷键(包括 ⌃ P)同样可以自定义,也可以清除快捷键绑定,让按键事件传递给当前活动的终端。
cmux NIGHTLY 是一个独立应用,拥有自己的 bundle ID,因此可以与稳定版同时运行。它会根据最新的 main commit 自动构建,并通过自己独立的 Sparkle feed 自动更新。
请在 GitHub Issues 或 Discord 的 #nightly-bugs 频道中报告 nightly 版本的 bug。
退出 cmux 时,当前会话会被保存。再次启动时,cmux 会恢复由应用管理的状态:
cmux 不会对任意运行中进程的实时状态创建 checkpoint。tmux、vim、shell 以及不受支持的终端应用会作为普通终端重新打开。
如果 hook 已保存原生 session ID,受支持的 Agent 会话便可以恢复。请在安装 Agent CLI 之后再安装 hook,以确保其二进制文件已位于 PATH 中:
cmux hooks setup
cmux hooks setup codex
cmux hooks setup --agent opencode
cmux hooks setup 会安装它能够找到的受支持 Agent,并输出被跳过 Agent 的汇总信息。支持恢复集成的工具包括 Claude Code、Codex、Grok、OpenCode、Pi、Amp、Cursor CLI、Gemini、Rovo Dev、Copilot、CodeBuddy、Factory 和 Qoder。在 Settings 中启用 Claude 集成后,Claude Code 会由 cmux Claude wrapper 处理。
高级用户和集成可以为当前终端 surface 绑定自定义恢复命令。这对拥有自身持久化状态的工具很有用,例如 tmux 会话或自定义 Agent CLI:
cmux surface resume set --kind tmux --checkpoint work --shell "tmux attach -t work"
cmux surface resume show --json
cmux surface resume clear --checkpoint work
该绑定会一直附着在对应的 cmux surface 上。通过公开 CLI 或 socket 创建的绑定会被保存,以便检查和手动恢复;除非你批准某个已签名的命令前缀,否则不会自动恢复。如果绑定中包含工作目录和确切的环境变量值,获批的前缀也会与它们绑定。你可以在 Settings > Terminal > Resume Commands 中检查或编辑批准项。cmux 只会自动运行被标记为可信的恢复绑定,例如通过实时进程检测到的 tmux 绑定,或用户批准的前缀。在保存恢复绑定之前,token、密码、secret 和 API key 等敏感环境变量会被移除。
如果希望恢复后的 Agent 终端保持空闲,而不是自动执行恢复命令,请关闭 Settings > Terminal > Resume Agent Sessions on Reopen,或在 ~/.config/cmux/cmux.json 中设置:
{
"terminal": {
"autoResumeAgentSessions": false
}
}
这只会禁用 Agent 恢复命令的自动执行。cmux 仍会恢复已保存的布局、工作目录、滚动缓冲区和浏览器历史记录。
如果需要手动重新应用最近保存的快照,请使用:
File > Reopen Previous Session
在底层实现中,cmux 会将带版本号的快照写入 ~/Library/Application Support/cmux/,Agent hook 则会将会话映射写入 ~/.cmuxterm/。恢复时,cmux 会先重建布局;如果启用了 Agent 自动恢复,再执行受支持 Agent 的原生恢复命令。
完整指南请参阅 cmux session restore 文档。
cmux 不是 Ghostty 的 fork。它将 libghostty 作为终端渲染库使用,就像应用使用 WebKit 渲染 Web View 一样。Ghostty 是一个独立终端;cmux 则是基于其渲染引擎构建的另一个应用。
目前仅支持 macOS。cmux 是使用 Swift + AppKit 构建的原生应用。
支持,目前处于 beta 阶段。在 Mobile Connect 窗口中将 iPhone 与 Mac 配对,即可通过手机连接终端,还可以选择转发终端通知。它以 cmux BETA 的名称通过 TestFlight 发布。cmux Founders Edition 包含 early access 权限。详情请参阅 iOS 文档。
所有 Agent 都可以。cmux 本质上是一个终端,因此任何在终端中运行的 Agent 都能开箱即用:Claude Code、Codex、OpenCode、Gemini CLI、Kiro、Aider、Goose、Amp、Cline、Cursor Agent,以及任何其他可以从命令行启动的工具。
可以。当某个 Agent 创建 subagent 或 teammate 时,cmux 会将它们转换为原生窗格和分屏,而不是隐藏的后台进程。它支持 Claude Code teams 和 oh-my-opencode 多模型编排,因此一次运行中的每个 Agent 都清晰可见、可以控制。
可以。你可以通过 SSH 打开工作区并连接远程 tmux 会话,让 Agent 在远程主机上运行,同时通过 cmux 进行控制。详情请参阅 SSH and remote 文档。
当某个进程需要你关注时,cmux 会在窗格周围显示通知边框,在侧边栏显示未读徽标,并展示通知弹窗和 macOS 桌面通知。这些通知可以通过标准终端转义序列(OSC 9/99/777)自动触发,也可以使用 cmux CLI 和 Agent hook 手动触发。任何支持 hook 或 OSC 的 Agent 都可以使用,包括 Claude Code、Codex、OpenCode 和 pi。
可以。每项操作都可以通过 cmux CLI 和 Unix socket 执行:创建工作区、打开分屏窗格、发送输入、读取屏幕内容、截取屏幕截图,以及驱动应用内浏览器。详情请参阅 CLI reference 和 browser automation 文档。
cmux 可以在终端旁边拆分出一个真正的浏览器窗格,并且它完全可以编程控制:导航、获取 DOM 快照、点击、输入、执行 JavaScript,以及通过同一个 socket API 读取 console 和网络活动。Agent 可以用它验证自己对 Web 项目所做的修改,而无须离开 cmux。详情请参阅 browser automation 文档。
有。Skills 是一组可复用的工作流,可以提供给任何在 cmux 中运行的 Agent,用于 CLI 控制、工作区自动化、设置和浏览器 surface 等场景。你可以在 cmux-skills 中浏览开放的 Skills 集合,或阅读 Skills 文档。
终端键位绑定读取自 Ghostty 配置文件(~/.config/ghostty/config)。cmux 专属快捷键,包括工作区、分屏、浏览器和通知等功能,可以在 Settings 中自定义。完整列表请参阅默认快捷键文档。
可以。终端渲染使用你的 Ghostty 配置,因此主题、字体、颜色和光标设置都会直接沿用。cmux 自身位于 ~/.config/cmux/cmux.json 的设置可以控制侧边栏、标签栏、分屏窗格和行为,所有键盘快捷键也都可以编辑。详情请参阅 configuration 文档。
会。再次启动时,cmux 会恢复窗口、工作区、窗格、工作目录和滚动缓冲区;这些状态即使在整台计算机重启后依然能够保留,而不只是退出应用后有效。Claude Code、Codex 和 OpenCode 等 Agent 会话也会一同恢复。详情请参阅 session restore 文档。
tmux 是运行在任意终端内部的终端多路复用器。cmux 则是带有 GUI 的原生 macOS 应用:垂直标签页、分屏窗格、嵌入式浏览器和 socket API 全部内置,无须配置文件,也不需要前缀键。尽管如此,仍有许多人会愉快地将 cmux、SSH 和 tmux 搭配使用;cmux 也可以原生连接远程 tmux 会话,目前该功能处于 beta 阶段。
可以,cmux 可免费使用,源代码已发布在 GitHub 上。
cmux 是免费、开源的,而且永远都会如此。如果你希望支持项目开发,并提前体验接下来推出的功能,包括 cmux AI、iOS 应用和 Cloud VMs,可以了解 cmux Founders Edition。
我们很希望听到你的反馈。请在 GitHub 上提交 issue 或 pull request,也可以给我们发送邮件。
参与方式:
@manaflowai、@lawrencecchen 和 @austinywangcmux 是免费、开源的,而且永远都会如此。如果你希望支持项目开发,并提前体验接下来推出的功能:
获取 Founder’s Edition
cmux 采用 GPL-3.0-or-later 许可证开源。
如果你的组织无法遵守 GPL,Manaflow 对其拥有必要权利的部分可能可以提供商业许可条款。这些条款不会重新许可第三方材料,也不会涵盖 Manaflow 未获得单独授权的外部贡献。确切范围请参阅 LICENSE,详情请联系 founders@manaflow.com。