cmux — 並列 AI コーディングエージェント用の macOS ターミナル¶
作成日: 2026-06-29 出典 / きっかけ: cmux(manaflow-ai 製)の使い方・活用法リサーチ。公式 README / cmux.com / 実体験ブログを裏取り 関連: Fable5_3日間で300万円課金_並列エージェント運用の物理的課題 / loop_engineering_cli調査 / llm_agent_sandbox_隔離技術
0. 要点(3行)¶
- cmux は「複数の AI コーディングエージェント(Claude Code 等)を同時に走らせる」ことに特化した macOS ネイティブターミナル。libghostty で GPU 描画する Swift/AppKit 製で、Electron ではない。
- 本質は「どのエージェントが今あなたを待っているか」を一目で分かるようにすること。サイドバーに各ワークスペースの git ブランチ・PR 番号・ポート・最新通知を並べ、待ち状態のペインは青いリングで光り
⌘⇧Uで飛べる。「Claude is waiting for your input」通知の洪水を解決するのが出発点。 - 強みは「可視化 + スクリプタビリティ」。Unix ソケット API でペイン生成・入力送信・画面読み取り・スクショ・組み込みブラウザ操作まで自動化でき、エージェントのオーケストレーションを組める。macOS 専用・無料・OSS(GPL-3.0)。
1. cmux とは何か¶
| 項目 | 内容 |
|---|---|
| 一言で | AI コーディングエージェント並列運用に特化した macOS ネイティブターミナル |
| 開発元 | manaflow-ai(GitHub org) |
| 技術 | Swift + AppKit、libghostty(Ghostty の描画エンジン)で GPU 加速。Electron 不使用(構成比 Swift 82.8% / Python 6.6% / TS 4.8%) |
| プラットフォーム | macOS のみ(Linux / Windows / Android は計画中・ウェイトリスト) |
| ライセンス | GPL-3.0-or-later(公式 README)。商用ライセンスも提供。※一部記事は AGPL-3.0 と記載 — 要確認 |
| 価格 | 無料・OSS。早期機能の「Founders Edition」サブスクあり(cmux AI / iOS アプリ / クラウド VM 等の先行アクセス) |
| 設定流用 | 既存の ~/.config/ghostty/config(テーマ・フォント・色)をそのまま読む |
Mitchell Hashimoto(Ghostty 作者)いわく「cmux は libghostty の描画エンジンの上に作られた別アプリ」。tmux の代替を狙った汎用マルチプレクサではなく、エージェント運用専用に作られている点がポイント。
コミュニティ反応: 2026年2月ローンチ、Hacker News で2位、開発元 Manaflow は YC S24。2026年6月時点で GitHub 2.1万スター超と、並列エージェント界隈で急速に注目されている(数値は各レビュー記事ベース・要追跡)。
なぜ生まれたか(解く課題)¶
作者 Daniel Dewhurst の出発点が分かりやすい — 「複数の Claude Code セッションを Ghostty のタブ/分割で回していると、macOS 通知が全部『Claude is waiting for your input』で、どのセッションが待っているのか分からない」。この通知疲れ・コンテキストスイッチのコストを潰すために設計された。
2. 中核機能¶
2-1. 通知システム(cmux の主役)¶
- 待ち状態のペインの周囲が青いリングで光る。サイドバーの該当タブも点灯し、未読バッジ+通知本文が出る。
⌘⇧Uで直近の未読エージェントへジャンプ。通知パネル(⌘I)で保留中の全アラートを一覧。- 発火元: 端末エスケープシーケンス(OSC 9 / 99 / 777)/
cmux notifyCLI / エージェントの hook。macOS デスクトップ通知にも出る。
何が嬉しいか(イメージ): 普通のターミナルで Claude を 4〜5 個並走させると、macOS 通知は全部「Claude is waiting for your input」でどれが鳴ったか分からない。結局タブを1枚ずつ見て回ることになる。cmux だと「待っている子だけが青く光る」ので、視線を投げるだけでどれに応じればいいか分かる。
【普通のターミナル】通知が来る → どのタブ? → ①開く ②開く ③開く … 全部確認 ← 割り込みコスト大
【cmux】 通知が来る → 青く光ったペインへ ⌘⇧U で直行 ← 割り込みコスト最小
- 効果は「ペインを常時見張る → 別の作業をして、呼ばれたら応じる」へのモード転換。並列数が増えるほど効く(4〜5 個で体感が変わる、と複数レビュー)。
- リング色そのものは状態別に変えられない(公式スキーマ
cmux.schema.jsonを確認。待機/完了/エラーで色を出し分ける設定は無い。一部レビューの「緑/黄/赤」は不正確)。色で区別したいなら次の2軸: workspaceColors.colors(16色パレット)でワークスペース単位に色を割り当てる — サイドバーで色分けして見分けるworkspaceColors.notificationBadgeColorで未読バッジの色を上書き- 通知の ON/OFF・挙動は
notifications.*で調整(unreadPaneRingリング表示、paneFlashペイン点滅、sound通知音、dockBadgeDock バッジ など)。
2-2. 垂直タブ(サイドバー)= ワークフローの俯瞰¶
各ワークスペースについて以下をライブ表示する。6 個のエージェントを別リポで回していても一目で状況が掴めるのが効く。
- git ブランチ名(例: feature/auth-refactor)
- 紐づく PR のステータス / 番号(例: PR #42)
- 作業ディレクトリ
- リッスン中のポート(例: :3000)
- 最新の通知テキスト
何が嬉しいか(イメージ): 普通のターミナルのタブは「ターミナル」「ターミナル 2」のように中身が分からない。どれがどのタスクか思い出すのにタブをホバー/クリックして確かめる必要がある。cmux のサイドバーは1行に「何のブランチ・PR は今どの状態・どのポートで動いてる」が出るので、feature/auth-refactor — PR #42 — :3000 を見た瞬間に「あ、認証リファクタの子、PR 出てて 3000 番で dev server 上がってる」と分かる。
┌─ 普通のタブ ─┐ ┌──────────── cmux サイドバー ────────────┐
│ zsh │ │ ● feat/auth-refactor PR#42 :3000 待機 │ ← 一行で全部分かる
│ zsh 2 │ → │ ○ fix/cache-bug PR#51 :3001 実行 │
│ zsh 3 │ │ ○ docs/readme — — 完了 │
└──────────────┘ └─────────────────────────────────────────┘
中身が見えない ブランチ/PR/ポート/状態が常時可視
- 効きどころは「思い出すコストの排除」。複数リポ・複数タスクを行き来しても「今どれが何で、人間の対応待ちはどれか」を頭で覚えておかなくてよい。サイドバー=並列運用のダッシュボードになる。
2-3. 分割ペイン¶
- 水平・垂直の両方向に分割可能。
- エージェントがサブエージェント/teammate を spawn すると、隠れたバックグラウンドプロセスではなく cmux のネイティブなペイン/分割になる — 全エージェントが見えて操作できる。
2-4. 組み込みスクリプタブルブラウザ¶
agent-browserから移植された API 付きの内蔵ブラウザ。- エージェントが DOM/アクセシビリティツリーのスナップショット取得・要素 ref 取得・クリック・フォーム入力・JS 評価・ネットワーク/コンソール監視を実行できる。
- → Claude Code が dev server や PR・CI をブラウザ越しに直接触れる(ターミナルから出ずに)。
2-5. SSH / リモートワークスペース¶
cmux ssh user@remoteでリモートワークスペースを作る。- ブラウザペインがリモートのネットワーク経由になるので、リモートの localhost にそのままアクセスできる。画像のドラッグで SCP アップロード。
2-6. Claude Code Teams(tmux 不要)¶
cmux claude-teamsで Claude Code の teammate モードを起動。ネイティブ分割+サイドバーのメタデータで、tmux なしでチーム運用できる。- oh-my-opencode のマルチモデルオーケストレーションにも対応。
2-7. プログラマビリティ(CLI + Unix ソケット API)¶
これが「ただの綺麗なターミナル」と一線を画す部分。スクリプトから:
- ワークスペース/タブの生成、ペイン分割、キーストローク(入力)送信
- 画面内容の読み取り(cmux read-screen)、スクリーンショット取得
- ブラウザで URL を開く・ブラウザ自動化
- エージェントは環境変数 CMUX_WORKSPACE_ID / CMUX_SURFACE_ID で自分がどのペインにいるか自己認識できる
- 再利用可能な「skills」(cmux-skills リポジトリ)/ cmux.json でプロジェクト固有コマンドをコマンドパレットに登録
2-8. セッション永続化¶
- セッションを自動保存し、再起動時にウィンドウレイアウト・作業ディレクトリ・スクロールバック・ブラウザ履歴を復元。
- hook がネイティブのセッション ID を保存していれば、エージェントセッションも resume(Claude Code / Codex / Grok / OpenCode / Pi / Amp / Cursor CLI / Gemini / Rovo Dev / Copilot / CodeBuddy / Factory / Qoder に resume 連携あり)。
- ⚠️ 制約: 復元されるのは「レイアウト」であって「動いていたプロセス」ではない(再起動でライブプロセスは失われる、と実体験ブログ)。
2-9. その他¶
- iOS コンパニオンアプリ(TestFlight ベータ・端末をリアルタイム同期)。
- Agent Hibernation(アイドルセッションの一時停止)、detachable SSH PTY daemon、
cmux diffの CodeView ビューア など随時追加。
3. 対応エージェント¶
ターミナルで動くエージェントなら基本何でも: Claude Code / Codex / OpenCode / Gemini CLI / Kiro / Aider / Goose / Amp / Cline / Cursor Agent、その他任意の CLI エージェント。
4. インストール¶
- DMG(推奨): Releases から DMG を落として cmux を Applications にドラッグ。Sparkle で自動更新。
- Nightly ビルドは安定版と並走する別アプリとして入れられる。
- 調査時点の最新は v0.64.17 系。
5. 主要キーボードショートカット¶
| 操作 | ショートカット |
|---|---|
| 新規ワークスペース | ⌘ N |
| ワークスペース番号切替 | ⌘ 1〜8 |
| 右に分割 | ⌘ D |
| 下に分割 | ⌘ ⇧ D |
| サイドバー切替 | ⌘ B |
| 通知を表示 | ⌘ I |
| 直近の未読へジャンプ | ⌘ ⇧ U |
| 組み込みブラウザを分割で開く | ⌘ ⇧ L |
| 検索 | ⌘ F |
| スクロールバッククリア | ⌘ K |
※端末側のキーバインドは Ghostty 設定由来。cmux 固有のショートカットは Settings でカスタム可。
6. セットアップの勘所・Tips¶
6-1. まず通知を hook で自動化する(これが一番効く)¶
通知は手で打たなくても、エージェントのライフサイクル hook から自動発火させるのが本筋。Claude Code なら入力待ち/許可待ちの Notification イベント(や完了時の Stop)で cmux notify を呼ぶ。
cmux notify のフラグは --title --subtitle --body と宛先(--surface / --workspace)のみ(色フラグは無い)。Notification フックは stdin で JSON が渡り、.message に「何の確認待ちか」が入る。実際に組んだスクリプトの要点(~/.claude/scripts/cmux-notify.sh):
#!/usr/bin/env bash
set -u
# stdin JSON の .message を本文に。cmux 未導入でも Claude を止めない(fail-open, exit 0)
message="$(jq -r '.message // empty')" # 取れなければ汎用文言にフォールバック
cmux notify --surface "${CMUX_SURFACE_ID:-}" \
--title "Claude Code" --subtitle "要対応" --body "${message:-入力待ちです}"
呼び出し元ペインを確実に光らせるため、CMUX_SURFACE_ID(cmux が各ペインに注入)を --surface に渡すのがコツ。これを ~/.claude/settings.json の hooks.Notification に bash $HOME/.claude/scripts/cmux-notify.sh として登録すれば、確認待ちのたびにそのペインが青リングで光る(手動介入ゼロ)。fail-open なので cmux を使っていない端末でも事故らない。
6-2. 通知の出し方は3系統(環境に合わせて選ぶ)¶
| 方法 | 例 | 使いどころ |
|---|---|---|
| CLI(最も簡単) | cmux notify --title "Build" --body "webpack done" |
hook・スクリプトから |
| OSC 777(言語非依存) | printf '\e]777;notify;Title;Body\a' |
任意の言語/プロセスから |
| OSC 9 / 99 | (Kitty 系プロトコル) | 既存ツールが対応していれば自動で拾われる |
6-3. Ghostty 設定がそのまま効く¶
cmux は ~/.config/ghostty/config を読むので、フォント・テーマ・色は再設定不要。Ghostty ユーザーは入れた瞬間に見た目が揃う。
6-4. 環境変数でエージェントに「自分の居場所」を教える¶
CMUX_WORKSPACE_ID / CMUX_SURFACE_ID が各ペインに入るので、オーケストレーション用スクリプトがどのペインで動いているか自己認識できる。ソケット API(cmux read-screen 等)と組み合わせて結果回収・自動操作に使う。
6-5. 並列衝突は git worktree で隔離してから割り当てる¶
cmux 自体はワークスペースを分けるだけで、ファイルの衝突は防がない。タスクごとに git worktree を切ってから cmux のワークスペースに割り当てるのが定石(llm_agent_sandbox_隔離技術)。
7. いい活用方法(おすすめパターン)¶
┌──────────── cmux サイドバー ────────────┐
⌘N で │ ● feat/auth PR#42 :3000 "待機中" ◀─ 青リング = 今あなたを待ってる
ワークスペース│ ○ fix/cache PR#51 :3001 "実行中"
量産 │ ○ docs/readme — — "完了"
│ ○ spike/x — :3002 "実行中" ⌘⇧U で待機中へ即ジャンプ
└─────────────────────────────────────────┘
| 状況 | 推奨アプローチ |
|---|---|
| 複数リポ/タスクで 6 個のエージェントを並走 | サイドバーで branch / PR# / port を俯瞰。待ちは青リング+⌘⇧U で巡回 |
| 「Claude is waiting」通知の洪水で疲弊 | cmux の文脈付き通知に置換。どのペインが待っているか即特定 |
| Claude Code のチーム/サブエージェント運用 | cmux claude-teams。tmux 不要、サブエージェントが見えるペインになる |
| エージェントに PR レビュー・CI 確認・dev server 操作までさせたい | 組み込みスクリプタブルブラウザで PR を開かせ diff/CI を読ませる |
| エージェントの自動オーケストレーション | ソケット API でペイン生成→タスク割当→cmux read-screen で結果回収。env var で自己識別 |
| リモートマシンで開発 | cmux ssh user@remote。リモート localhost にブラウザがそのまま到達 |
| 並列エージェントの変更衝突を防ぐ | 各タスクを git worktree で隔離してから cmux のワークスペースに割当(llm_agent_sandbox_隔離技術 参照) |
自分の運用への接続メモ¶
- 並列エージェント運用は「課金が一気に膨らむ」「物理リソース(メモリ・トークン)が律速になる」という別の壁がある(Fable5_3日間で300万円課金_並列エージェント運用の物理的課題)。cmux はそこを直接は解決しない — cmux が効くのは「同時に走らせた時の認知負荷(どれが待ちか)」の方。
- 兄弟プロダクトの manaflow(web 版)は各 run を「クラウド or ローカル Docker の隔離 VS Code ワークスペース」で立てる方式。Docker をかなり食うので、Docker メモリが逼迫しやすい環境(自分のローカル基盤検証など)では、ネイティブな cmux ターミナルの方が軽いという相対的な利点がある。
loop系の無人運用(loop_engineering_cli調査)と組み合わせるなら、cmux のソケット API(read-screen・通知 hook)は「ループの状態を外から覗く窓」として使える。
8. 注意点・既知の制約¶
- macOS 専用(他 OS は未提供・計画のみ)。
- セッション復元はレイアウトのみで、動作中プロセスは復元されない(再起動で失われる)。
- 開発が活発な分、既知バグも多い(実体験ブログでは「400+ の既知バグ」との記述)— production の主力ではなく個人の並列開発ワークフロー高速化ツールとして捉えるのが妥当。
- ライセンス表記が資料間で GPL-3.0 / AGPL-3.0 と揺れる — 商用利用前に最新の LICENSE を確認すること。
cmux(ターミナル)と manaflow(web)の混同に注意¶
manaflow-ai は紛らわしい 2 製品を持つ。記事によって取り違えがあるので分けて理解する。
| cmux | manaflow | |
|---|---|---|
| 形態 | macOS ネイティブターミナル | web アプリ(Claude Code web / Codex Cloud / Devin 系の代替) |
| 隔離単位 | ターミナルのペイン/ワークスペース(+ git worktree 推奨) | クラウド or ローカル Docker の VS Code ワークスペース(git diff・dev server preview 付き) |
| 本ノートの対象 | ✅ こちら | (兄弟プロダクト・参考) |
9. まとめ — いつ使うか¶
「複数の AI エージェントを同時に回し始めたが、どれが待っていて何のブランチか分からなくなった」瞬間が導入の合図。 cmux は (1) サイドバーでの状態俯瞰、(2) 文脈付き通知+⌘⇧U の巡回、(3) ソケット API による自動化、の 3 点で並列運用の認知負荷を下げる。Claude Code を主力にしていて macOS なら相性が良い。逆に「並列の課金・リソース律速」「クラウド隔離実行」を解決したいなら cmux ではなく manaflow(web)側を見る。
参考リンク¶
公式・一次資料¶
- cmux 公式サイト: https://cmux.com/
- GitHub(本体): https://github.com/manaflow-ai/cmux
- Releases: https://github.com/manaflow-ai/cmux/releases
- manaflow-ai org: https://github.com/manaflow-ai
- 兄弟プロダクト manaflow(web): https://github.com/manaflow-ai/manaflow
実体験・解説ブログ(Tips が濃いもの)¶
- 実体験ブログ(Daniel Dewhurst)— 並列ワークフローの設計思想と限界: https://ddewhurst.com/blog/cmux-purpose-built-terminal-for-parallel-agent-workflow/
- DEV Community(arshtechpro)— hook 連携・通知3系統・ショートカット: https://dev.to/arshtechpro/cmux-the-native-macos-terminal-built-for-running-ai-coding-agents-in-parallel-52il
- scriptbyai — 並列エージェント運用の全体像: https://www.scriptbyai.com/coding-agents-parallel-manaflow/
- vibecoding.app レビュー(2026)— 4〜5並列での体感変化: https://vibecoding.app/blog/cmux-review
- Gardenee Blog 完全ガイド: https://agmazon.com/blog/articles/technology/202603/cmux-terminal-ai-guide-en.html
- Ry Walker のリサーチメモ: https://rywalker.com/research/cmux
比較・周辺¶
- awesome-agent-orchestrators(並列エージェントツール一覧): https://github.com/andyrewlee/awesome-agent-orchestrators
- Solo vs cmux(代替ツール比較): https://soloterm.com/solo-vs-cmux
- Agentmaxxing: Run Multiple AI Agents in Parallel(2026): https://vibecoding.app/blog/agentmaxxing
作成: 2026-06-29 / 最終更新: 2026-06-29