記事一覧に戻る
cmux入門 — AIコーディングエージェント時代のターミナル活用ガイド

cmux入門 — AIコーディングエージェント時代のターミナル活用ガイド

ZenChAIne·
AIターミナル開発ツールClaude Code

はじめに

Claude Code、Codex、Gemini CLI——2025年以降、ターミナル上で動作するAIコーディングエージェントが急速に普及しています。しかし、複数のエージェントを並行して走らせると、「どのタブで何が動いているか分からない」「エージェントが入力待ちになっていることに気づかない」という問題に直面します。

そんな課題を解決するために登場したのが cmux です。cmux は macOS ネイティブのターミナルアプリケーションで、Ghostty のレンダリングエンジン(libghostty)をベースに、AIエージェントとの協働に特化した機能を備えています。

この記事では、cmux の導入から実践的な使い方まで、ステップバイステップで解説します。

なぜ「IDE の外」でエージェントを動かすのか

2024〜2025年にかけて、AIコーディングエージェントは Cursor や VS Code の拡張機能として使うのが主流でした。IDE に統合されていれば、エディタと同じ画面で完結するので直感的です。

しかし、エージェントを本格的に使い込むと IDE 内ターミナルの限界が見えてきます。

リソース消費の問題: VS Code のウィンドウを2つ開いて Claude Code を動かすと、RAM 消費は 8GB を超え、入力にラグが出始めます。一方、Ghostty ベースのターミナルなら同じ2プロジェクトで 500MB 以下。プロジェクト数が増えるほど差は広がります。

マルチエージェントの壁: IDE は「1つのプロジェクトを1つのウィンドウで開く」設計です。3つ、5つとエージェントを並行して走らせたいとき、IDE ウィンドウをその数だけ開くのは現実的ではありません。ターミナルなら軽量なペイン分割で何セッションでも立ち上がります。

Unix 哲学との親和性: ターミナルで動くエージェントは、パイプやリダイレクトで他のコマンドと組み合わせられます。git diff | claude "このdiffをレビューして" のようなワークフローは、GUI の IDE では実現できません。

こうした背景から、Ghostty のような高速ネイティブターミナルが注目を集め、さらにその上に AI エージェント専用の機能を載せた cmux が登場しました。

cmux とは何か

cmux は Manaflow AI が開発する、macOS 専用のネイティブターミナルアプリケーションです。Swift + AppKit で構築されており、Electron ベースのアプリと比べて軽量かつ高速に動作します。

主な特徴を整理すると:

  • GPU アクセラレーション: Ghostty の libghostty による高速レンダリング
  • 通知システム: エージェントが入力待ちになるとペインに青いリングが表示され、サイドバーのタブもハイライト
  • 縦タブ型サイドバー: Git ブランチ、PR ステータス、作業ディレクトリ、リスニングポートを一覧表示
  • 組み込みブラウザ: ターミナルの隣にブラウザを分割表示でき、スクリプタブルな API も搭載
  • セッション復元: 再起動時にウィンドウレイアウト、作業ディレクトリ、スクロールバックを復元
  • 無料 & オープンソース: AGPL-3.0 ライセンスで GitHub にソースコード公開

対応するAIエージェントは Claude Code、Codex、OpenCode、Gemini CLI、Kiro、Aider、Goose、Amp など、コマンドラインから起動できるものすべてです。

インストール手順

cmux のインストールは2通りの方法があります。

方法1: DMG(推奨)

公式サイト または GitHub Releases から cmux-macos.dmg をダウンロードし、Applications フォルダにドラッグ&ドロップします。Sparkle による自動アップデートに対応しているため、一度インストールすれば手動更新は不要です。

方法2: Homebrew

bash
brew tap manaflow-ai/cmux
brew install --cask cmux

アップデートは brew upgrade --cask cmux で行います。初回起動時に macOS の開発者確認ダイアログが出る場合は「Open」をクリックしてください。

Ghostty の設定を引き継ぐ

既に Ghostty を使っている場合、cmux は ~/.config/ghostty/config の設定(テーマ、フォント、カラー)をそのまま読み込みます。追加の設定は不要です。

基本操作を覚える

cmux を起動したら、まず基本的なキーボードショートカットを覚えましょう。

ワークスペースとペインの管理

操作ショートカット
新しいワークスペース⌘ N
右に分割⌘ D
下に分割⌘ ⇧ D
新しいサーフェス⌘ T
次のサーフェスに移動⌃ Tab

ブラウザとの連携

操作ショートカット
ブラウザを開く⌘ ⇧ L
通知パネルを表示⌘ I
未読通知にジャンプ⌘ ⇧ U

典型的なワークフロー例

たとえば、Claude Code でフロントエンドとバックエンドを並行開発する場合:

  1. ⌘ N で新しいワークスペースを作成
  2. ⌘ D で右にペインを分割
  3. 左ペインで claude を起動してフロントエンド作業を指示
  4. 右ペインで別の claude セッションを起動してバックエンド作業を指示
  5. ⌘ ⇧ D でさらに下にペインを分割し、npm run dev で開発サーバーを起動
  6. ⌘ ⇧ L でブラウザを開き、localhost:3000 で動作確認

エージェントが入力待ちになると、対応するペインに 青いリング が表示され、サイドバーのタブもハイライトされます。複数のエージェントを走らせていても、どれが自分の入力を待っているか一目瞭然です。

AIエージェントとの実践的な使い方

複数エージェントの並行運用

cmux の最大の強みは、複数の AI エージェントを効率的に管理できることです。サイドバーには各ワークスペースの情報がリアルタイムで表示されます:

  • Git ブランチ: 各ペインの作業ブランチ
  • PR ステータス: リンクされた Pull Request の番号と状態
  • リスニングポート: 開発サーバーのポート番号
  • 最新通知: エージェントからの最新メッセージのプレビュー

CLI と Socket API でできること

cmux は CLI と Socket API(/tmp/cmux.sock 経由の IPC)を提供しています。単なるペイン分割の自動化にとどまらず、エージェント同士の連携まで実現できるのが特徴です。

活用1: エージェント完了を見逃さない(通知連携)

もっとも実用的な使い方は、Claude Code の hooks 機能と cmux notify の組み合わせです。エージェントのセッションが終了したタイミングで通知リングを光らせられます。

bash
# cmux notify の基本構文
cmux notify --title "Claude Code" --body "タスク完了" --level info

~/.claude/settings.json に Stop hook として登録しておけば、長時間のタスクを任せて他の作業に集中していても、完了時にペインの青いリングで知らせてくれます。

活用2: エージェント同士を対話させる(ペイン間通信)

cmux の Socket API でもっとも面白いのが、cmux sendcmux send-key によるペイン間のテキスト注入です。あるペインから別のペインに直接テキストを送り込めるので、エージェント同士を連携させることができます。

bash
# 自分の位置を確認
cmux identify --json
 
# 別のペインにテキストを送信
cmux send --surface surface:4 "src/auth を設計レビューして"
 
# Enter キーを送信して実行
cmux send-key enter

たとえば、左ペインの Claude Code に設計・レビューを担当させ、右ペインの Codex に実装を担当させる。Claude Code が設計方針を決めたら cmux send で Codex のペインに指示を注入する——というマルチエージェント協調のワークフローが構築できます。まだ実験的な領域ですが、ターミナルレベルでエージェント同士を連携させる基盤として注目されています。

活用3: 開発環境の一発構築

git worktree と組み合わせれば、ブランチごとに独立したワークスペースを自動構築できます。

bash
# git worktree でブランチを切り出し
git worktree add -b my-branch ../repo-my-branch
 
# 新しいワークスペースを作成して、そのブランチで Claude Code を起動
ws=$(cmux new-workspace 2>&1 | awk '{print $2}')
cmux send --workspace "$ws" "cd ../repo-my-branch && claude"
cmux send-key --workspace "$ws" Enter

cmux list-panes / cmux new-pane / cmux focus-pane などを組み合わせてシェルスクリプトにしておけば、「プロジェクトを開いたら自動で3ペイン構成にして、それぞれ Claude Code / 開発サーバー / テストランナーを起動する」といった環境構築の自動化も可能です。

組み込みブラウザの活用

cmux には Vercel Labs の agent-browser から移植されたスクリプタブルなブラウザが組み込まれています。できることは以下の通りです:

  • ページのスナップショット取得(インタラクティブ要素の一覧)
  • 要素を参照 ID(Ref)で指定してクリック・入力
  • フォームの自動入力
  • JavaScript の実行と評価

「Playwright と何が違うの?」と思うかもしれません。操作の種類(クリック、入力、JS 実行)は似ていますが、設計思想がまったく異なります。

Playwright はページのアクセシビリティツリー全体をエージェントに渡します。情報量は豊富ですが、複雑なページでは数千ノードに達し、トークンを大量に消費します。Microsoft のベンチマークでは、一般的なブラウザ自動化タスクで Playwright MCP は約 114,000 トークンを消費しました。

cmux のブラウザ(agent-browser 方式) は「Snapshot + Refs」というアプローチを取ります。ページ全体のツリーではなく、操作可能な要素だけを簡潔な参照リストとして返します。これによりコンテキスト消費を最大 93% 削減でき、同じタスクを約 27,000 トークンで処理できます。エージェントのコンテキストウィンドウを圧迫しないので、長時間の開発セッションでも安定して動作します。

一方で、Playwright が得意とするクロスブラウザテスト、ヘッドレス実行、CI/CD パイプラインとの統合は cmux のブラウザではカバーされません。あくまで「開発中にエージェントが UI を確認・操作するための軽量ツール」という位置づけです。

cmux 組み込みブラウザPlaywright
用途開発中のプレビュー確認・操作E2E テスト・本格的なブラウザ自動化
トークン効率高い(Snapshot + Refs で 93% 削減)低い(アクセシビリティツリー全体)
セットアップcmux 内蔵、追加設定不要MCP サーバーまたは CLI の別途導入
クロスブラウザ非対応(組み込みブラウザのみ)Chrome / Firefox / Safari 対応
CI/CD 連携非対応対応(ヘッドレス実行)

つまり、開発中のちょっとした UI 確認やフォーム操作にはトークン効率の良い cmux ブラウザ、本番前のテストには Playwright、と使い分けるのが現実的です。

ターミナルでエージェントを動かしながら、隣のペインで開発サーバーの出力を確認し、さらに隣のブラウザでリアルタイムプレビュー——この一画面完結のワークフローが cmux の真価です。

「ファイルツリーが見えない」問題をどうするか

VS Code や Cursor に慣れている方が最初に感じるのは、「左のサイドバーにディレクトリツリーがないのが不安」ということでしょう。IDE ならファイルをクリックして中身をすぐ確認できますが、ターミナルだけだとそれができません。

実際には、いくつかの運用パターンが確立されています。

パターン1: エージェントに任せる

最もシンプルな方法です。そもそもファイルを自分で探しに行く必要がありません。

> このプロジェクトの認証まわりのファイルを一覧して
> src/auth/middleware.ts の中身を見せて
> この関数の呼び出し元を探して

Claude Code はコードベース全体を理解しているので、ファイルパスを覚えていなくても自然言語で「あのファイル」と指示すれば開いてくれます。AI エージェントと協働する前提なら、手動でのファイル探索自体が減るというのが実態です。

パターン2: エディタをペインに並べる

Neovim ユーザーに人気のスタイルです。cmux のペイン分割を使って:

  • 左ペイン: Claude Code(エージェント)
  • 右ペイン: Neovim(エディタ + ファイルツリー)
  • 下ペイン: 開発サーバーやテスト実行用

Ctrl + h/j/k/l でペイン間を移動すれば、マウスなしでエージェントとエディタを行き来できます。Neovim のファイルツリープラグイン(neo-tree、nvim-tree など)を使えば、VS Code のサイドバーと同等のファイル閲覧が可能です。

パターン3: コードレビュー時だけ IDE を使う

コードの編集や生成は cmux 上の Claude Code にすべて任せ、人間がソースコードを確認するのは PR レビューのタイミングだけ という割り切りです。GitHub の diff ビューや VS Code / Cursor で PR の差分を見て、問題があればコメントやフィードバックをエージェントに返す——日常の開発フローは cmux に集約し、IDE は「レビューツール」として使い分けます。

どのパターンを選ぶかは好みですが、共通して言えるのは「AI エージェントがファイル操作を代行してくれるので、手動でファイルを探す頻度自体が大幅に減る」ということです。

注意点とTips

セキュリティソフトとの競合に注意

筆者の環境で実際に遭遇した問題です。Microsoft Defender などのセキュリティソフトが常駐していると、Ghostty や cmux でシェルコマンドが正常に動作しないケースがあります。

具体的には、cdls がホームディレクトリ直下の一部フォルダ(~/Documents~/Downloads など macOS の保護対象ディレクトリ)で Interrupted system call エラーになります。~/go のようなユーザーが作成したディレクトリでは問題なく動作するので、原因の特定に時間がかかりがちです。

bash
# こうなる
$ ls ~/Documents
ls: .: Interrupted system call
 
# こちらは問題ない
$ ls ~/go
bin  pkg  src

これは Ghostty / cmux が使う libghostty の PTY(擬似端末)処理と、セキュリティソフトのファイルアクセス監視が競合してシステムコールが中断されるために起こります。macOS の「フルディスクアクセス」権限を cmux(または Ghostty)に付与するか、セキュリティソフト側でターミナルアプリを除外リストに追加することで解決できます。

対処法:

  1. システム設定 → プライバシーとセキュリティ → フルディスクアクセス に cmux を追加
  2. セキュリティソフト側で cmux / Ghostty をスキャン除外に設定
  3. それでも解決しない場合は、セキュリティソフトのリアルタイムスキャンを一時的に無効化して切り分けを行う

企業の管理下にある Mac で開発している方は特に遭遇しやすい問題です。「cmux で ls が動かない」と思ったら、まずセキュリティソフトとの競合を疑ってみてください。

セッション復元の制限

cmux は再起動時にウィンドウレイアウトと作業ディレクトリを復元しますが、ライブプロセスの状態は復元されません。つまり、Claude Code や tmux、vim のセッションは復元対象外です。重要な作業中は、エージェントのセッションを適切に保存してから cmux を終了しましょう。

Ghostty ユーザーへの移行パス

既に Ghostty を使っている開発者にとって、cmux への移行はスムーズです。テーマ、フォント、カラー設定がそのまま引き継がれるため、見た目に違和感なく使い始められます。

macOS 限定

現時点で cmux は macOS 専用です。Linux や Windows で同様のワークフローを実現したい場合は、tmux + カスタム通知スクリプトなどの代替手段を検討する必要があります。

まとめ

cmux は「AIコーディングエージェント時代のターミナル」として、従来のターミナルが抱えていた課題——通知の見逃し、マルチエージェント管理の煩雑さ、開発サーバーとブラウザの行き来——を一つのアプリケーションで解決します。

導入は Homebrew で一行、Ghostty の設定もそのまま使えるため、試すコストは低いです。Claude Code や Codex を日常的に使っている方は、ぜひ一度試してみてください。

ZenChAIne では、AIエージェントを活用した開発ワークフローの最適化にも取り組んでいます。ターミナル環境の改善はその第一歩です。