A terminal that knows when Claude needs you
cmux wraps Ghostty in a native macOS app so AI agents can actually get your attention without drowning in generic notifications.

What it does cmux is a macOS terminal built on libghostty with a vertical sidebar, split panes, an in-app browser, and a notification system designed for AI coding agents. It reads your existing Ghostty config for themes and fonts, adds workspace tabs that show git branch, PR status, working directory, and listening ports, and surfaces agent notifications with context instead of the usual “Claude is waiting” noise.
The interesting bit
The author was running multiple Claude Code and Codex sessions in Ghostty splits and losing track of which needed input. Rather than accept Electron-based orchestrators, they built a Swift/AppKit wrapper that keeps the terminal experience but adds a notification ring around panes and a CLI (cmux notify) that agents can call directly. The in-app browser is scriptable via an API ported from Vercel’s agent-browser, so agents can snapshot accessibility trees and interact with dev servers without leaving the terminal.
Key highlights
- Native Swift/AppKit, not Electron; claims fast startup and low memory
- Reads existing
~/.config/ghostty/configfor themes, fonts, colors - Notification system hooks into OSC terminal sequences plus
cmux notifyCLI - In-app browser imports cookies from 20+ browsers, routes through SSH remotes
- Scriptable via CLI and socket API: create workspaces, split panes, send keystrokes, automate browser
- Session restore for layout, working directories, browser history; agent resume hooks for Claude Code, Codex, Gemini, and others
Caveats
- macOS only; no Windows or Linux builds mentioned
- Session restore is “best effort” for terminal scrollback and explicitly does not checkpoint live processes like tmux or vim
- Requires installing agent hooks after the agent CLI is on PATH for resume to work
Verdict Worth a look if you juggle multiple AI agents in the terminal and want native performance without surrendering to a closed GUI orchestrator. Skip it if you’re not on macOS or if your agent workflow is already solved by a single tmux session.