A macOS-native AI coding terminal built on Ghostty, featuring vertical tabs, notification system, and embedded browser for multi-agent workflows.
cmux is a macOS-native terminal app designed for multi-tasking AI coding agent workflows, built on Ghostty's libghostty rendering engine (Swift + AppKit, not Electron). Developed by manaflow-ai, current version v0.63.2, licensed under GPL-3.0-or-later.
Core Capabilities#
Notification System#
- Notification Rings: Blue halo on panes when agents need attention, sidebar tabs light up
- Notification Panel: Centralized view of pending notifications,
Cmd+Shift+Ujumps to latest unread - Triggers: Auto-detects OSC 9/99/777 escape sequences, or via
cmux notifyCLI and Claude Code hooks
Vertical Tabs & Sidebar#
- Sidebar shows: git branch, PR status/number, working directory, listening ports, latest notification text
- Horizontal/vertical split panes, multi-workspace support (Workspaces 1-8)
Embedded Browser#
- Split-pane browser, API ported from agent-browser
- Accessibility tree snapshots, element references, click, form fill, JS execution
- WebAuthn / Passkey / FIDO2 support
- Import cookies, history, sessions from 20+ browsers (Chrome, Firefox, Arc, etc.)
SSH Remote Development#
cmux ssh user@remotecreates remote machine workspaces- Browser pane routes through remote network, localhost directly accessible
- Drag-and-drop image upload via scp to remote sessions
Claude Code Teams#
cmux claude-teamsone-command launch for Claude Code teammate mode- Teammates start as native split panes with sidebar metadata and notifications, no tmux needed
Scripting & Automation#
- CLI and socket API: create workspaces, split panes, send keystrokes, control browser
- Custom commands: define project-specific actions via
cmux.json, launch from command palette - GPU-accelerated rendering (based on libghostty)
Ghostty Compatibility#
- Auto-reads themes, fonts, colors, and keybindings from
~/.config/ghostty/config
Architecture#
- Rendering: libghostty as library (not fork), bridged to Swift via
ghostty.h/cmux-Bridging-Header.h - UI: Swift + AppKit native macOS app, Xcode project (
GhosttyTabs.xcodeproj) - Browser Engine: Embedded WebKit (macOS native), API ported from agent-browser
- Notifications: OSC 9/99/777 escape sequence detection + CLI hook dual channel
- Automation: CLI + socket API dual-channel control
- SSH Remote:
daemon/remotedirectory for remote proxy and browser network routing - Distribution: Sparkle framework, nightly and stable independent channels (nightly has separate bundle ID)
- Package Management: Homebrew tap (
homebrew-cmuxsubmodule) - CI/CD: GitHub Actions automated build and signing
- Website: Next.js deployed on Vercel
Installation#
DMG (recommended): Download .dmg from GitHub Releases, drag to Applications, auto-updates via Sparkle.
Homebrew:
brew tap manaflow-ai/cmux
brew install --cask cmux
Nightly: Standalone app with separate bundle ID, coexists with stable version.
Keyboard Shortcuts#
| Category | Shortcut | Function |
|---|---|---|
| Workspace | ⌘N | New workspace |
| ⌘1-8 | Switch to workspace 1-8 | |
| ⌘B | Toggle sidebar | |
| Split | ⌘D | Split right |
| ⌘⇧D | Split down | |
| Notifications | ⌘I | Show notification panel |
| ⌘⇧U | Jump to latest unread | |
| Browser | ⌘⇧L | Open browser in split |
| Terminal | ⌘K | Clear scroll buffer |
Ecosystem Compatibility#
Compatible with all major terminal AI agents: Claude Code, Codex, OpenCode, Gemini CLI, Kiro, Aider, Goose, Amp, Cline, Cursor Agent, etc.
Known Limitations#
- macOS only; Linux/Windows support unconfirmed
- Does not restore active process state inside terminals (e.g., tmux/vim sessions), noted as "not resumed after restart yet"
- iOS app, Cloud VMs, and Voice mode mentioned in Founder's Edition but no publicly verifiable release or timeline
- socket API protocol documentation and full
cmux.jsonschema not detailed in public materials