Claude Codeを3つ並行で走らせたら、どのタブが入力待ちかわからなくなった——そんな経験はないでしょうか。エージェントが増えるほど、「どれが終わった?」「どれが詰まってる?」の把握が難しくなります。cmuxはまさにその問題を解決するために設計されたターミナルです。2026年2月19日のShow HNでは2位を獲得し、GitHubスターは公開直後から900件を超える勢いで伸びています。
cmuxとは
cmuxはmanaflow-aiが開発した、macOS専用のネイティブターミナルエミュレータです。Ghosttyのレンダリングエンジン(libghostty)をベースにしており、既存のGhostty設定がそのまま使える点が特徴です。
AIエージェントを並行して走らせる開発スタイルを前提に設計されており、3つの課題を解決します。
通知リング——エージェントが入力待ちになると、サイドバーのタブに青いリングが点滅します。どのワークスペースに注意が必要かが一目でわかります。
縦型サイドバー——公式には各ワークスペースのgitブランチ名・カレントディレクトリ・使用ポート番号がサイドバーに表示されると記載されています。タブを開かなくても状態を把握できる設計です。
ワークスペース切り替え——1エージェント・1ワークスペースの運用を前提とした高速な切り替え機能を持ちます。数字キー一発でジャンプできます。
インストールとセットアップ
インストールはHomebrewかDMGの2択です。
brew install --cask cmux
公式サイト(https://cmux.app)からDMGをダウンロードする方法もあります。
アプリ起動後、CLIコマンドを使えるようにするためのシンボリックリンクを作成します。
sudo ln -sf "/Applications/cmux.app/Contents/Resources/bin/cmux" /usr/local/bin/cmux
パスは Contents/MacOS/cmux ではなく Contents/Resources/bin/cmux が正しいので注意が必要です。間違えると後述のCLI終了問題が発生します。
Ghosttyユーザーには朗報で、~/.config/ghostty/config がそのままcmuxに引き継がれます。フォント、カラースキーム、キーバインドなど設定を一から書き直す必要がなく、移行コストがほぼゼロです。
使ってみて便利だった機能3選
ワークスペースベースのタブ切り替え
cmuxでは「1エージェント=1ワークスペース」の運用が自然にはまります。Cmd+N で新規ワークスペースを作成し、Cmd+1 から Cmd+9 で即座にジャンプできます。
公式によるとサイドバーにgitブランチ名、カレントディレクトリ、ポート番号が表示されると記載されています。「このタブで何の作業をしているか」をタイトルで管理する必要がなくなる設計で、複数のfeatureブランチを同時に走らせているときに特に効いてきます。
内蔵ブラウザ(個人的に最高な機能)
Opt+Cmd+D でターミナルの横にブラウザペインが開きます。
これが思った以上に便利でした。GitHub Issuesをブラウザで開いたまま、「このIssueをClaude Codeに振ろう」と判断してすぐにターミナルで指示を打てます。ウィンドウ切り替えのコストが消えるだけで、集中が途切れにくくなります。
私のユースケースでは、朝にGitHubのIssue一覧をブラウザペインで開き、優先度を確認しながら各ワークスペースのエージェントにタスクを割り当てる、という流れができます。ブラウザとターミナルの往復がなくなると、切り替えに割いていた注意がそのまま作業に向かいます。
通知リング(青いリング点滅)
複数エージェントを並行で走らせているときの最大の問題は「見逃し」です。エージェントが入力待ちになっているのに気づかず、数分ロスする——cmuxの通知リングはこれを解決します。
エージェントが入力待ち状態になると、サイドバーの対応するワークスペースタブに青いリングが点滅します。Cmd+Shift+U を押すと最新の未読ワークスペースへ即ジャンプします。5つ並行で走らせていても見逃しがなくなりました。
Claude Code連携
Claude Codeのhooks機能と組み合わせると、タスク完了時にcmuxへ通知を飛ばせます。
通知スクリプトを作成します。
#!/bin/bash
# cmux通知スクリプト
if [ -S /tmp/cmux.sock ] || [ -n "${CMUX_WORKSPACE_ID:-}" ]; then
cmux notify \
--title "Claude Code" \
--body "タスクが完了しました" \
--level info 2>/dev/null || true
fi
~/.claude/hooks/cmux-notify.sh として保存し、実行権限を付与します。
chmod +x ~/.claude/hooks/cmux-notify.sh
~/.claude/settings.json にhooks設定を追記します。
{
"hooks": {
"Stop": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/cmux-notify.sh"
}
]
}
]
}
}
Stopフックはエージェントのセッションが終了したタイミングで発火します。長時間かかる処理を任せているときでも、完了したら通知リングで知らせてくれるので、他の作業に集中できます。
トラブルシューティング
日本語IMEの未確定文字が表示されない
症状としては、Enterで確定するまで入力中のひらがなが画面に表示されません。
原因はターミナルエミュレータとIMEのpreedit表示の互換性問題で、開発者がissueで確認済みです。
nightlyビルドを試してみてください。改善しない場合は、GhosttyとcmuxでのIME入力を比較した動画を開発者に送るとフィードバックとして役立ちます。ワークアラウンドとしては、英語入力ベースで作業し、日本語テキストはクリップボードからペーストする方法が現実的です。
ソケット接続エラー(cmux notifyが失敗する)
外部ターミナルやスクリプトから cmux notify を実行すると接続エラーになることがあります。
# ソケットの存在確認
ls -la /tmp/cmux.sock
# cmux内から実行しているか確認
echo $CMUX_WORKSPACE_ID
CMUX_WORKSPACE_ID が空の場合、cmux外から実行しています。外部から接続したい場合は Cmd+, で設定を開き、ソケットモードを allowAll に変更してください。
CLIが terminated で即終了する
nightlyビルドに乗り換えた際、古いシンボリックリンクが残っていると発生します。
正しいバイナリが存在するか確認します。
ls "/Applications/cmux.app/Contents/Resources/bin/"
リンクを正しいパスで張り直します。
sudo ln -sf "/Applications/cmux.app/Contents/Resources/bin/cmux" /usr/local/bin/cmux
Contents/MacOS/cmux ではなく Contents/Resources/bin/cmux が正しいパスです。ここを間違えると即終了します。
Ghosttyキーバインドの競合
~/.config/ghostty/config で設定したカスタムキーバインドがcmuxの操作(Cmd+N、Cmd+Shift+U など)と競合することがあります。競合しているキーバインドを確認し、削除または別のキーに変更することで解決します。
まとめ
cmuxはAIエージェントを複数並行で動かす開発スタイルに最適化されたターミナルです。通知リング・ワークスペース管理・内蔵ブラウザの組み合わせは、エージェント管理の認知負荷を大きく下げてくれます。
Ghosttyユーザーであれば設定の移行コストがほぼゼロなので、試しやすいのも魅力です。日本語IMEの問題は現時点での課題ですが、nightlyビルドで改善が進んでいます。気になった方はぜひ試してフィードバックを送ってみてください。開発ペースを見ていると、かなり活発に動いている。