cmux

Ghostty ベースのネイティブ macOS ターミナル。縦タブ・通知リング・組み込みブラウザで、並列の AI コーディングエージェント作業を支援する(manaflow-ai/cmux)

1 — 概要
macOS
Swift / AppKit
libghostty
GPU ターミナル
CLI + Socket
自動化 API
GPL-3.0
オープンソース

cmux は Electron ではなく Swift/AppKit で書かれたターミナルアプリ。既存の ~/.config/ghostty/config を読み込み、テーマ・フォント・色をそのまま使える。サイドバーに縦タブを置き、各ワークスペースの Git ブランチ・PR 状態・作業ディレクトリ・待受ポート・最新通知を一覧できる。

複数の Claude Code / Codex セッションを並列で走らせると、どのペインが入力待ちか判別しづらい——という課題から生まれた。ターミナルシーケンス(OSC 9/99/777)と cmux notify CLI でエージェントフックと連携し、待機中のペインに青いリング、タブをハイライトする。

設計思想: cmux は「プリミティブの束」——ターミナル、ブラウザ、通知、ワークスペース、分割、CLI。特定のエージェントワークフローを押し付けず、開発者が CLI で組み合わせる前提(The Zen of cmux)。
2 — 構成
flowchart TD
  subgraph app["cmux.app (Swift / AppKit)"]
    UI["Sidebar / Splits / Notifications"]
    WS["Workspace & TabManager"]
    BR["Built-in Browser"]
  end
  subgraph term["Terminal"]
    GT["libghostty"]
    CFG["~/.config/ghostty/config"]
  end
  subgraph auto["Automation"]
    CLI["cmux CLI"]
    SOCK["Unix Socket API"]
    HOOK["Agent Hooks"]
  end
  subgraph agents["Coding Agents"]
    CC["Claude Code"]
    CX["Codex / OpenCode / Pi …"]
  end
  UI --> WS
  WS --> GT
  CFG --> GT
  CLI --> SOCK
  SOCK --> WS
  HOOK --> CLI
  CC --> HOOK
  CX --> HOOK
  BR --> SOCK
  agents --> GT
        
Sources/AppKit UI、ワークスペース、ターミナル、ブラウザ、通知
CLI/cmux コマンド実装(ソケット経由でアプリを操作)
Packages/エージェント起動、Vault、拡張キット等の Swift パッケージ
docs/CLI 契約、イベント、フック、リモートデーモン仕様
skills/エージェント向け cmux 操作スキル(workspace / browser 等)
web/公式サイト・Cloud VM バックエンド(Next.js)
3 — 主な機能
通知リング エージェントが入力待ちになるとペインに青いリング、サイドバータブが点灯。⌘⇧U で最新未読へジャンプ。
通知パネル 保留中の通知を一覧表示。⌘I で開く。
組み込みブラウザ agent-browser 由来のスクリプト API。A11y ツリー取得、クリック、フォーム入力、JS 評価。
縦タブ + 分割 Git ブランチ、PR、CWD、ポート、最新通知テキストをタブ行に表示。水平・垂直分割。
SSH ワークスペース cmux ssh user@remote でリモート用ワークスペース。ブラウザはリモートネットワーク経由、画像 D&D で scp アップロード。
Claude Code Teams cmux claude-teams で teammate モードを tmux なしでネイティブ分割起動。
ブラウザインポート Chrome / Firefox / Arc 等 20+ ブラウザから Cookie・履歴・セッションを取り込み。
カスタムコマンド プロジェクトの cmux.json でコマンドパレット用アクションを定義。
4 — インストール

DMG(推奨)

最新リリース DMG を Applications にドラッグ。Sparkle で自動更新。

Homebrew

brew tap manaflow-ai/cmux
brew install --cask cmux
brew upgrade --cask cmux   # 更新時

Nightly

別バンドル ID の NIGHTLY ビルド は安定版と共存可能。main 先端の自動ビルド。

初回起動時に macOS が開発元確認を求める場合は Open を選択。
5 — CLI と自動化

cmux CLI は Unix ソケット経由で実行中のアプリを操作する。ワークスペース作成、ペイン分割、キーストrokes 送信、ブラウザ URL オープン、通知送信などが可能。

グローバルオプション(抜粋)

オプション / 変数用途
--socket <path> / CMUX_SOCKET_PATHソケットパス上書き
--password / CMUX_SOCKET_PASSWORDソケット認証
--jsonJSON 出力(対応コマンド)
--id-format refs|uuids|bothハンドル形式
--window対象ウィンドウ指定

代表コマンド

コマンド概要
cmux openファイル・ディレクトリ・URL を開く
cmux notify通知を送る(エージェントフックから)
cmux hooks setup対応エージェントのフックをインストール
cmux claude-teamsClaude Code Teams 起動
cmux sshSSH ワークスペース作成
cmux restore-session保存済みセッションを復元
cmux configcmux.json 検証・リロード
cmux feedキーボードファーストの Feed TUI

エージェントフック

cmux hooks setup
cmux hooks setup codex
cmux hooks setup --agent opencode

Claude Code、Codex、OpenCode、Pi、Amp、Cursor CLI、Gemini、Rovo Dev などの resume 連携に対応。詳細は 公式ドキュメント とリポジトリ内 docs/agent-hooks.md。

6 — キーボードショートカット(抜粋)

ワークスペース

ショートカット操作
⌘N新規ワークスペース
⌘1–8 / ⌘9ワークスペース 1–8 / 最後へ
⌃⌘] / ⌃⌘[次 / 前のワークスペース
⌘Bサイドバー表示切替

分割・通知

ショートカット操作
⌘D / ⌘⇧D右 / 下に分割
⌥⌘←→↑↓方向キーでペイン focus
⌘I通知パネル
⌘⇧U最新未読へジャンプ
⌘⇧L分割内ブラウザを開く

全ショートカットは Settings → Keyboard Shortcuts でカスタマイズ可能。README の表が正。

7 — セッション復元

終了時にレイアウトをスナップショット保存。再起動で以下を復元する(ベストエフォート含む):

  • ウィンドウ / ワークスペース / ペイン構成
  • 作業ディレクトリ、ターミナル scrollback
  • ブラウザ URL とナビゲーション履歴

tmux / vim 等の任意プロセス状態はチェックポイントしない。フックで native session ID が保存されたエージェントは、設定が有効なら resume コマンドを自動実行。

# 手動で前回セッションを復元
cmux restore-session
# または File → Reopen Previous Session / ⌘⇧O

スナップショットは ~/Library/Application Support/cmux/、エージェントマッピングは ~/.cmuxterm/ に保存。自動 resume を止める例:

{
  "terminal": {
    "autoResumeAgentSessions": false
  }
}

(~/.config/cmux/cmux.json または Settings → Terminal)