# cmux

> A native macOS terminal that shows which of your coding agents needs you

- Repository: https://github.com/manaflow-ai/cmux
- Category: Coding agents & dev tools
- Stars: 28,356 · Forks: 2,569 · Language: Swift · License: not stated
- Experience: Some experience
- Page: https://ir.adyog.com/repos/manaflow-ai/cmux/

If you run several Claude Code or Codex sessions side by side, it's hard to tell which one is waiting for you. Native macOS notifications say little, and with many tabs open the titles become unreadable. cmux is a terminal app built to solve that.

It is written in Swift and AppKit, not Electron, and uses libghostty to draw the terminal. It reads your existing Ghostty config for themes, fonts and colors. A sidebar lists each workspace with its git branch, linked PR, working directory, listening ports and latest notification. When an agent is waiting, its pane gets a blue ring and its tab lights up. Notifications come from standard terminal escape sequences or from a `cmux notify` command you can call from agent hooks.

The author says other agent orchestrators they tried were mostly Electron or Tauri apps that lock you into one workflow. cmux describes itself as a set of building blocks: a terminal, a browser, workspaces, splits, and a CLI and socket API. You decide how to combine them.

## What it does

- **Notification rings and panel**: Panes get a blue ring and tabs light up when an agent needs attention. A panel collects pending notifications, and Cmd+Shift+U jumps to the latest unread one.
- **Vertical tabs with context**: The sidebar shows git branch, linked PR status and number, working directory, listening ports and the newest notification text for each workspace. Panes split horizontally and vertically.
- **In-app scriptable browser**: You can split a browser next to your terminal. Its API, ported from agent-browser, lets agents read the accessibility tree, click, fill forms and run JavaScript against your dev server.
- **CLI and socket API**: Create workspaces, split panes, send keystrokes and open URLs from scripts. Project actions can be defined in cmux.json and launched from the command palette.
- **SSH and session restore**: `cmux ssh user@remote` opens a workspace for a remote machine, and browser panes route through its network. On relaunch, cmux restores layout, directories, scrollback and browser history, and can resume supported agent sessions through hooks.

## What you could build

- Run several Claude Code, Codex or OpenCode sessions in split panes and see at a glance which one is waiting.
- Wire `cmux notify` into agent hooks so each notification carries useful context.
- Let a coding agent test your local dev server in a browser pane beside the terminal.
- Open a workspace on a remote machine over SSH and start an agent there.
- Script workspace layouts and project-specific commands for your own repeatable setup.

## Who it's for

Developers on macOS who already use terminal-based coding agents and are comfortable with a CLI; familiarity with Ghostty or tmux helps.

## Get started

Download the DMG from the releases page and drag cmux to Applications, or install it with Homebrew. Then run `cmux hooks setup` after installing your agent CLIs so notifications and session resume work.

```
brew tap manaflow-ai/cmux
```
```
brew install --cask cmux
```
```
cmux hooks setup
```

Tags: terminal, macos, coding-agents, ghostty, multiplexer
