Claude Code を 2 つ 3 つと並列で走らせるようになると、すぐに同じ壁に当たります。どのセッションが作業中で、どれが入力待ちなのか、タブを順に巡回しないと分からないのです。エージェントは数分単位で人の判断を求めてくるため、見落とした時間はそのまま待ち時間になります。せっかく並列にしたのに、人間の巡回がボトルネックになるわけです。
この問題をターミナル側の設計で解いたのが cmux です。2026 年 2 月の公開直後に Hacker News で 2 位に入り、執筆時点 (2026 年 6 月) で GitHub スターは 2 万を超えています。この記事では、cmux の何がすごいのかを設計思想から整理し、インストール、Claude Code との組み合わせ、tmux との使い分けまでを解説します。
cmux とは|Ghostty ベースの AI エージェント専用ターミナル
cmux は、Manaflow AI が開発している macOS 向けのターミナルアプリです。無料で使えて、ソースコードは GPL-3.0-or-later ライセンスで GitHub に公開されています。レンダリングには GPU 加速ターミナル Ghostty のコアライブラリ libghostty を採用し、アプリ本体は Electron ではなく Swift + AppKit のネイティブ実装です。既存の Ghostty ユーザーなら、テーマやフォントの設定がそのまま読み込まれます。
見た目はサイドバー付きのターミナルですが、本質は「複数のコーディングエージェントを 1 ウィンドウで管制するためのワークスペース」です。対応エージェントは公式いわく「コマンドラインで動くものすべて」で、Claude Code・Codex・Gemini CLI・Aider・Cline・Cursor Agent などを区別なく扱えます。特定のエージェント専用 GUI ではなく、ターミナルという土台ごと並列運用に最適化した点が、類似ツールとの分かれ目です。
エージェントの使い分け自体に興味がある方は、Claude Code・Cursor・Copilot の比較記事 もあわせてどうぞ。
同名ツールに注意|「cmux」は複数ある
検索やインストールの前に、ひとつ交通整理が必要です。「cmux」という名前のツールは複数あります。
- manaflow-ai/cmux は、本記事で扱う Ghostty ベースの GUI ターミナルです
- craigsc/cmux は、「tmux for Claude Code」を名乗る CLI で、Git worktree の作成から削除までをワンコマンド化します
- coder/mux は、旧名が cmux の並列エージェント開発向けデスクトップアプリです
このほか Go 言語には同名のコネクションマルチプレクサライブラリ (soheilhy/cmux) もありますが、こちらは無関係です。記事や SNS で「cmux が便利」と見かけたときは、GUI ターミナルの話か worktree 管理 CLI の話かを確かめてから試すのが安全です。
すごさ 1: どのエージェントが待っているかが一目で分かる
cmux の中核は通知の扱いです。エージェントが入力待ちになると、そのペインに青いリングが表示され、サイドバーの該当タブも点灯します。複数の分割やタブの裏で動いているエージェントでも、「いま自分を呼んでいるのはどれか」がウィンドウを見た瞬間に分かります。通知はパネルにも集約されるので、未対応の呼び出しを取りこぼすこともありません。
仕組みとしては、ターミナルの通知シーケンス (OSC 9/99/777) を拾うほか、cmux notify という CLI をエージェントのフックに仕込めます。並列運用の実態は「人間がボトルネック」なので、エージェントの完了や質問にどれだけ早く気づけるかが、並列数を増やす意味をそのまま左右します。通知をターミナルの一級機能に据えたこの設計が、cmux の評価の核心です。
なお、Claude Code 純正にも、入力待ちを含む全セッションを一覧する Agent View という機能があります (Claude Code 2026 年 5 月アップデートまとめ で解説しています)。Claude Code だけを使うなら純正でも足りますが、cmux はエージェントの種類を問わず、ターミナルと通知という土台側で同じ課題を解くアプローチです。
要点
エージェントの並列運用で詰まるのは実行性能ではなく、人間が「待たれていること」に気づくまでの時間です。cmux はここをターミナルの仕事と定義し、通知リング・タブ点灯・通知パネルの三段構えで解決します。
すごさ 2: サイドバーがエージェントの管制板になる
cmux のサイドバーは縦タブ式で、各ワークスペースに Git ブランチ・リンクされた PR の番号とステータス・作業ディレクトリ・listening 中のポート・最新の通知テキストが表示されます。タブ名の文字列だけで「これはどの作業だったか」を思い出す運用から抜けられます。
これは Git worktree で並列開発しているときに特に効きます。worktree ごとにブランチもディレクトリも違うため、従来のターミナルでは自分がどこにいるのか混乱しがちでした。サイドバーを見れば「feature ブランチ A は PR がレビュー待ち、B はポート 3001 で dev サーバが起動中」と、各ラインの状態が読み取れます。エージェントを並べるダッシュボードとしての完成度は、汎用ターミナルと一線を画します。
すごさ 3: ターミナル自体をエージェントが操作できる
cmux は Unix ドメインソケット + JSON の API を持ち、cmux CLI から全機能を操作できます。つまり、ターミナルの中で動くエージェント自身が、ターミナルの UI を制御できるのです。
# ブラウザペインを開いて dev サーバを表示する
cmux browser open http://localhost:3000
# 人間を呼ぶ (macOS 通知 + サイドバー点灯)
cmux notify --title "実装完了" --body "レビューをお願いします"
# サイドバーにステータスを出す
cmux set-status build "compiling" --icon hammer --color "#ff9500"Claude Code に「終わったら cmux notify で知らせて」と頼んでおく、あるいは hooks に組み込んで通知を自動化する、といった使い方が素直にはまります。たとえば Claude Code 側の設定はこの程度で済みます。
// ~/.claude/settings.json (抜粋)
{
"hooks": {
"Notification": [
{
"hooks": [
{
"type": "command",
"command": "cmux notify --title 'Claude Code' --body '入力待ちです'",
},
],
},
],
},
}hooks の設計パターン自体は Claude Code の hooks 実用パターン集 で整理しているので、そちらの考え方がそのまま流用できます。
すごさ 4: 内蔵ブラウザまでエージェントの手が届く
cmux には WebKit ベースのブラウザペインが組み込まれていて、これにもスクリプト API が付いています。エージェントはアクセシビリティツリーのスナップショットを取り、要素の参照を得て、クリック・フォーム入力・JavaScript の実行までコマンドで行えます。
# ページの読み込みを待ち、操作可能な要素一覧を取得する
cmux browser surface:2 wait --load-state complete
cmux browser surface:2 snapshot --interactive
# 要素参照を指定して入力・クリックする
cmux browser surface:2 fill e10 "Hello World"
cmux browser surface:2 click e14これが意味するのは、「実装する → dev サーバを隣のペインで開く → 画面を確認して直す」というループを、1 ウィンドウの中でエージェントが自走できるということです。従来は Playwright MCP などを別途つないでいた開発中の画面確認を、ターミナルが標準機能として持っている格好です。エンジンは WebKit のため Chromium 前提の E2E テスト資産の置き換えにはなりませんが、実装中の確認ループには十分です。全体の構造を図にすると次のようになります。
flowchart LR
subgraph cmux["cmux (macOS ネイティブ)"]
UI["ペイン / 縦タブ / サイドバー"]
Browser["内蔵ブラウザ (WebKit)"]
Notify["通知リング / 通知パネル"]
end
Agent["Claude Code などのエージェント"] -- "cmux CLI" --> Socket["Unix ソケット API"]
Socket --> UI
Socket --> Browser
Socket --> Notify
Notify -- "入力待ちを可視化" --> Human["人間"]
Human -- "指示・承認" --> Agent
インストールと Claude Code チーム機能の起動
導入は Homebrew なら 2 コマンド、または 公式サイト の DMG をドラッグするだけです。
brew tap manaflow-ai/cmux
brew install --cask cmuxふだんのターミナルとしてそのまま使えるので、まずは普段の作業ごと cmux に引っ越し、エージェントを 2 本並べるところから始めるのが定着しやすい順序です。Claude Code 自体の初期設定がまだの方は Claude Code セットアップガイド を先に済ませてください。
注目機能が cmux claude-teams コマンドです。Claude Code の実験的なエージェントチーム機能 (teammate モード) を、環境変数の設定込みでワンコマンド起動できます。
# claude-teams 以降の引数はそのまま Claude Code に渡される
cmux claude-teams --model sonnetClaude Code のチーム機能は、tmux 環境ではチームメイトを tmux のペインに開きます。cmux は tmux 互換のシムを挟んでこの動きを引き受け、tmux なしで各エージェントをネイティブの分割ペインとして開きます。サイドバーのメタデータや通知もそのまま効くため、「リーダーが複数の部下エージェントを率いる」構成を画面ごと管制できます。
tmux との使い分けと導入前に知るべき制約
cmux は万能ではありません。導入判断で押さえておきたい点を挙げます。
まず macOS 専用です。Linux や Windows では動かないため、その環境では tmux や Zellij が引き続き選択肢になります。次にセッションの性質です。tmux はサーバ常駐型で、SSH が切れてもセッションが生き続けることに強みがあります。cmux にも SSH サポートやセッション復元はありますが、リモートサーバ上で長時間回し続ける用途なら tmux の安定感が勝ります。手元の Mac での並列管制は cmux、リモートの永続セッションは tmux という整理が現実的です。
もうひとつ、エージェントのサンドボックスとの相性があります。エージェント側の実行サンドボックスが cmux のソケットへのアクセスを塞ぎ、CLI 連携が効かないことがあるのです。どこまで許可するかは、各エージェントの権限設定とあわせて設計してください。考え方は Claude Code の permissions 設定 の整理と同じです。
注意
ソケット API はエージェントにターミナル操作の権限を渡す仕組みでもあります。通知や進捗表示は低リスクですが、ペイン操作やブラウザ操作まで許すかは用途ごとに線を引き、権限設定とセットで運用してください。
ライセンスは GPL-3.0-or-later です。社内ツールとして使う分には支障が出にくい一方、自社製品への組み込みなどでは商用ライセンスの問い合わせが必要になります。
FIXIT
Tsumikiエージェントが 1 本ならそうです。並列にした瞬間、どれが待っているか分からなくなるんですよ。
FIXITえっ、通知が付くだけでそんなに変わるってこと?
Tsumiki手元では巡回がなくなって、呼ばれたときだけ見にいく形に変わりました。並列数も増やしやすくなります。
FIXIT
Tsumikiリモートのセッション維持は tmux の領分です。手元の並列管制は cmux、と使い分けるのが今は良いと思います。
まとめ|「人間の気づき」を速くするターミナル
cmux のすごさは、個々の機能よりも問題設定にあります。AI コーディングエージェントの並列運用で律速になるのは、モデルの速度ではなく「人間が呼ばれたことに気づくまでの時間」だと見抜き、通知リング・サイドバー・ソケット API・内蔵ブラウザという形でターミナルの責務を再定義しました。Ghostty ベースのネイティブ実装で日常のターミナルとしても快適に使えるため、乗り換えのコストも小さく済みます。
エージェントを 2 本以上並べる働き方が当たり前になるほど、この種の「管制ツール」の価値は高まります。まずは普段の作業を cmux に移し、通知フックを 1 本仕込むところから試してみてください。
FIXIT は AI 駆動開発のクリエイティブスタジオとして、Claude Code をはじめとするエージェントの並列運用やツールチェーン設計を実プロジェクトで磨いています。チームへの導入を検討している方は AI 開発ツール導入支援 をご覧ください。