cmux is an open-source macOS terminal application for AI coding agents, built on Ghostty's terminal rendering library libghostty and developed natively with Swift and AppKit rather than Electron or Tauri. Its target users are developers who need to run coding agents such as Claude Code and Codex in parallel across multiple terminal sessions.
Main capabilities
- Vertical and horizontal tabs: The sidebar displays each workspace as a vertical tab showing its git branch, associated PR status and number, working directory, listening ports, and latest notification text.
- Notification system: Notifications are triggered via standard terminal escape sequences (OSC 9/99/777) or the cmux CLI. When an agent is waiting for input, the pane shows a blue notification ring, the sidebar tab lights up, and a notification panel and macOS desktop notification appear. Cmd+Shift+U jumps to the most recent unread notification.
- Built-in programmable browser: A real browser pane can be split alongside the terminal, supporting navigation, DOM snapshots, clicking, typing, executing JavaScript, and reading console and network activity, allowing agents to verify their own web changes.
- Browser import: Cookies, history, and sessions can be imported from more than 20 browsers, including Chrome, Firefox, and Arc, so that the browser pane starts already logged in.
- Custom commands: Define project-specific actions in cmux.json and launch them from the command palette.
- Programmability: Create workspaces, split panes, send keystrokes, read screen contents, take screenshots, and drive the browser via the CLI and Unix socket API.
- Native performance: Built with Swift + AppKit, it starts quickly and uses little memory, and uses libghostty for GPU-accelerated rendering.
- Ghostty compatibility: Reads the existing ~/.config/ghostty/config and inherits themes, fonts, colors, and cursor settings.
- Keyboard shortcuts: Provides a large number of shortcuts for workspaces, splits, the browser, and more. Terminal keybindings come from the Ghostty configuration, and cmux-specific shortcuts can be customized in settings.
- Open source and free: GPL-licensed.
How to use Installation via DMG is recommended: open the .dmg and drag cmux into the Applications folder, after which it updates automatically via Sparkle.On first launch, macOS may prompt you to confirm opening an app from an identified developer; just click "Open." There is also a NIGHTLY version that uses a separate bundle ID, can coexist with the stable version, is built automatically from the latest main commits, and updates automatically.
Session restoration When you quit cmux, the current session is saved, and on restart it restores the window/workspace/pane layout, working directories, terminal scrollback buffers (best effort), and browser URLs and navigation history. cmux does not save arbitrary running process state; regular terminals, tmux, vim, shells, etc. reopen as regular terminals. If you need local sessions to survive cmux quitting, crashing, and updates, you can use cmux local-tmux or cmux local-zellij. Supported agents can restore sessions after hooks save the native session ID; use cmux hooks setup to install hooks.
Use cases
- Running multiple AI coding agents at once and needing to quickly identify which agent is waiting for input.
- Needing to use a browser side by side with a terminal so agents can interact directly with a dev server.
- Opening a remote workspace over SSH and attaching to a remote tmux session to run agents on a remote host.
- Needing a programmable, scriptable terminal environment to automate workflows.
Limitations
- Currently only macOS is supported.
- The iOS app is in beta, released via TestFlight as cmux BETA; early access is included in the cmux Founders Edition.
- A local tmux server cannot survive logout, restart, shutdown, or power loss; if you need the owner to stay online while the Mac is offline, you need to use cmux ssh-tmux, cmux mosh-tmux, or a persistent cloud VM.
- Session restoration does not preserve arbitrary running process state.
- Browser cookies and login information are isolated per installation instance and are not migrated with session import.
Relationship between cmux and Ghostty: cmux is not a fork of Ghostty; rather, it uses libghostty as a terminal rendering library, similar to how an app uses WebKit to render web pages. Ghostty is a standalone terminal, while cmux is another app built on its rendering engine.