CLI tool
manaflow-ai/cmux avatar
manaflow-ai/cmux

cmux: A Ghostty-Based macOS Terminal Built for AI Agent Workflows

cmux is an open-source macOS terminal built on Ghostty, with vertical tabs and notification rings that flag when AI coding agents need attention.

28,779 stars2,664 forksSwiftLicense varies

At a glance

What is it?
cmux is a native Swift/AppKit terminal that wraps Ghostty with vertical tabs, notification rings, and a scriptable browser. It targets developers running many Claude Code or Codex sessions who need to track which agent is waiting.
Who is it for?
Adopt cmux if you are a macOS developer running multiple AI coding agents in parallel and you want a native terminal that reads your existing Ghostty config, adds visual notification cues, and exposes a CLI/socket API for automation. Skip it if you need Linux or Windows support, or if you prefer a terminal that stays close to stock Ghostty without extra layers.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Swift, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • manaflow-ai/cmux28,779 ★ · +3,513
Star history
Repository2026-07-282026-11-13
manaflow-ai/cmux25.3k28.8k

3,513 Stars in the last 108 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

The Problem: Agent Notifications Without Context

The README's author describes a concrete pain: running many Claude Code and Codex sessions in Ghostty splits, relying on macOS notifications that only say 'Claude is waiting for your input' with no detail. With enough tabs, titles become unreadable. cmux solves this by adding a sidebar with vertical tabs that show git branch, linked PR status, working directory, listening ports, and the latest notification text per workspace. It also draws a blue ring around a pane and lights up the tab when an agent needs attention. This is for developers who live in the terminal and want to know which of several agents is blocked without hunting through every split.

How It Works: libghostty, Sidebar, and Notification Sequences

cmux is a native macOS app written in Swift and AppKit. It uses libghostty for terminal rendering and reads your existing ~/.config/ghostty/config for themes, fonts, and colors. The notification system listens for terminal escape sequences, specifically OSC 9, OSC 99, and OSC 777. It also provides a CLI command, cmux notify, that you can wire into agent hooks for tools like Claude Code and OpenCode. When an agent emits one of those sequences, the pane gets a blue ring and the tab lights up. Cmd+Shift+U jumps to the most recent unread notification. The sidebar is not static: it updates with git branch, PR status, working directory, listening ports, and the latest notification text for each workspace.

Getting Started: DMG, Homebrew, and First Launch

The recommended install is a DMG download from the releases page. Open the .dmg and drag cmux to your Applications folder. The app auto-updates via Sparkle, so you only download once. Alternatively, use Homebrew: brew tap manaflow-ai/cmux then brew install --cask cmux. To update later, run brew upgrade --cask cmux. On first launch, macOS may ask you to confirm opening an app from an identified developer. The README shows a button labeled Open. After install, cmux reads your existing Ghostty config, so themes and fonts carry over without extra setup. For SSH, you run cmux ssh user@remote to create a workspace for a remote machine, with an optional --command flag to run an initial command in the first remote terminal.

The Scriptable Browser and CLI/Socket API

cmux includes an in-app browser that can be split alongside the terminal. The browser has a scriptable API ported from agent-browser, originally from Vercel Labs. Agents can snapshot the accessibility tree, get element refs, click, fill forms, and evaluate JavaScript. The README gives an example: split a browser pane next to your terminal and have Claude Code interact with your dev server directly. Everything is scriptable through the CLI and a socket API. You can create workspaces and tabs, split panes, send keystrokes, and open URLs in the browser. This is a different approach from GUI orchestrators that lock you into a workflow; cmux provides primitives and leaves the workflow to you.

Limitations and Wrong Use Cases

cmux is macOS-only. The README describes it as a native macOS app built with Swift and AppKit. If you need a cross-platform terminal, this is not it. The project is also in active nightly development; the release list shows a Nightly (cmux-next) build from 2026-10-04 and cmux-app-ffi builds tagged 2026-11-03. The nightly cadence suggests frequent changes, which could mean instability or breaking changes. Another limitation: the notification system depends on agents emitting OSC 9/99/777 sequences. If your agent does not emit those, you must wire cmux notify into hooks manually.

Alternative: Stock Ghostty or tmux-Based Setups

The README's author came from Ghostty with split panes and native macOS notifications. That is the direct alternative: use Ghostty as-is and rely on its native split support and macOS notifications. The difference is that Ghostty does not have the sidebar, notification rings, or the in-app browser. Another alternative is tmux, which the README mentions in the context of Claude Code Teams: cmux claude-teams runs Claude Code's teammate mode without tmux required. If you already use tmux for session management, you can get similar multitasking, but you lose the native macOS integration and the scriptable browser. The trade-off is between a purpose-built tool with agent-specific features and a general-purpose terminal multiplexer that you configure yourself.

Maintenance, License, and Upgrade Costs

The README states the project is GPL-licensed, and package.json declares GPL-3.0-or-later. That has implications if you plan to redistribute or embed code, though this is not legal advice. The project has a nightly release channel (Nightly (cmux-next)) alongside the DMG download. Auto-updates via Sparkle mean you get updates without manual intervention, but that also means you may receive changes without review. The Homebrew cask path requires tapping manaflow-ai/cmux, so you depend on that tap staying maintained.

Editorial conclusion

Adopt cmux if you are a macOS developer running multiple AI coding agents in parallel and you want a native terminal that reads your existing Ghostty config, adds visual notification cues, and exposes a CLI/socket API for automation. Skip it if you need Linux or Windows support, or if you prefer a terminal that stays close to stock Ghostty without extra layers. Before adopting, verify the GPL license fits your distribution plans, check the nightly release cadence for stability, and confirm that the OSC 9/99/777 notification sequences work with your specific agent hooks.

Frequently asked questions

Is cmux better than Ghostty?

cmux is built on Ghostty rather than competing with it: it uses libghostty for terminal rendering and reads your existing `~/.config/ghostty/config` for themes, fonts and colors. What it adds over plain Ghostty is the vertical-tab sidebar and the notification system, which the author says he added after plain Ghostty panes could not be told apart when several agent sessions were waiting.

Why use cmux?

The stated reason is parallel agent sessions. The notification system picks up the terminal sequences OSC 9, OSC 99 and OSC 777, or you wire `cmux notify` into an agent's hooks, and a waiting pane then gets a blue ring with its tab lit in the sidebar. Cmd+Shift+U jumps to the most recent unread.

What is an alternative to cmux for Linux?

cmux itself is not a Linux option: the README describes it as a native macOS app built with Swift and AppKit, with a DMG download and a Homebrew cask as its install routes.

How do I use cmux?

Download the DMG and drag cmux into your Applications folder, which auto-updates via Sparkle, or run `brew tap manaflow-ai/cmux` followed by `brew install --cask cmux` and later `brew upgrade --cask cmux`. On first launch macOS may ask you to confirm opening an app from an identified developer.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/manaflow-ai-cmux.svg)](https://hysenlabs.com/projects/manaflow-ai-cmux)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/manaflow-ai-cmux.svg)](https://hysenlabs.com/projects/manaflow-ai-cmux)

Was this useful?