Claude Code Monitor(onikan27/claude-code-monitor) は、同時に走っている複数のClaude Codeセッションを、1つのターミナルUIとスマートフォンのWebから一括で監視・操作できる、macOS向けのオープンソースツールです。ライセンスはMIT、実装は主にTypeScript、GitHubのスターは247(本稿執筆の2026年7月12日 JST 時点)。npx claude-code-monitor だけで今すぐ試せます。

Claude Codeを本気で使い始めると、多くの人が同じ壁にぶつかります。「気づいたらClaude Codeを3つも4つも同時に走らせていて、どれが今止まっているのか分からない」という壁です。片方のタブでファイル編集の許可を待って処理が止まっているのに、別のタブを見ていて気づかない――この“見えない待ち時間”が、並行作業の効率を静かに削っていきます。Claude Code Monitorは、その一点を解くために作られたツールです。

▲ Claude Code Monitorのターミナルデモ。8つのセッションが「Running/Done」つきで一覧され、上部に「●実行中 ◐許可待ち ✓完了」のカウンタが並ぶ。矢印キーで選び、Enterまたは番号キーでその端末に切り替わる(出典:onikan27/claude-code-monitor README)。

本稿は公式リポジトリ(README)をもとに、当サイトの読者がいつも知りたい①このOSSは結局何ができるのか、②何を解決するのか、③何を代替できるのかの3点を軸に、仕組みからコピペで動く導入手順まで噛み砕いて解説します。

Claude Code自体の使いこなしから整理したい方は、まず Claude Codeベストプラクティス2026|設定・CLAUDE.md・ワークフロー完全ガイド もあわせてどうぞ。本稿はその「複数セッションを並行で回す」局面に絞って掘り下げます。

30秒でわかるポイント
  • 課題:複数のClaude Codeを並行で回すと、どのセッションが許可待ちで止まっているかが分からず、タブを目視で巡回する羽目になる。
  • 解決:Claude Code Monitorが全セッションを1画面のTUIに集約し、実行中/許可待ち/完了を色分け表示。1〜9キーで目的の端末へ即フォーカス。
  • スマホ対応:同一Wi-FiやTailscale越しに、スマホのブラウザから同じ監視・許可・メッセージ送信ができる(QR+トークン認証)。
  • 仕組み:APIサーバを持たないサーバレス設計。Claude Codeのフックファイルベースの状態管理、端末制御はAppleScript
  • 前提macOS専用/Node.js 18以上/Claude Code本体が必要。MITライセンスで npx claude-code-monitor から。

Claude Code Monitorとは?複数のClaude Codeセッションを一括監視するTUI

まず①「結局何ができるのか」から。Claude Code Monitorがやることは、驚くほどシンプルに一言でまとめられます。「今マシンの中で動いている全部のClaude Codeを、1つの画面に並べて見せる」――これだけです。

具体的には、ccm を起動すると、ターミナルの中に監視用のダッシュボード(TUI)が立ち上がります。そこには、あなたが別々のタブやウィンドウで開いている各Claude Codeセッションが、行ごとに並びます。各行には次の情報が出ます。

状態:実行中(Running)/許可待ち/完了(Done)を色とアイコンで表示
最終更新:「4秒前」のように、そのセッションが最後に動いた時刻
作業ディレクトリ~/hobby/api-gateway のように、どのプロジェクトのセッションかが一目で分かる
連番[1]〜のインデックス。これがそのまま1〜9キーのフォーカス番号になる

画面上部には「●実行中の数 ◐許可待ちの数 ✓完了の数」のカウンタが常に出ているので、視線を1箇所に置いたまま「今、誰かが自分の入力を待っていないか」を把握できるのがキモです。冒頭のデモ動画がまさにその画面で、8セッションが並び、3番だけが「Done」になっている様子が確認できます。

Claude Code Monitorの動作フロー:ccm setupでフックを登録→各セッションが状態をファイルに記録→TUI/スマホで監視→1キーで端末をフォーカス
フックがセッションの状態をファイルに記録し、監視プロセスがそれを1画面に集約。選んだセッションの端末を直接フォーカスするところまでが一連の流れ。

大事なのは、これが「見るだけ」で終わらないことです。一覧から行を選んでEnterを押す(または番号キーを押す)と、Claude Code Monitorは実際にそのセッションが動いているターミナルのウィンドウ/タブを最前面に持ってきます。「4番が許可待ちだ」と気づいたら 4 を押すだけで、その端末に飛んで許可を出せる。監視と操作が地続きになっている点が、単なる一覧ツールとの決定的な差です。

ここが実用的:Claude Code Monitorは「通知を送るだけ」のツールではありません。状態の可視化(どれが待ちか)と、アクション(その端末へ飛ぶ)が1つのキー操作でつながっているので、「気づく→対応する」までの距離がほぼゼロになります。

なぜ必要か:複数セッションの“許可待ち”が見えない問題

次に②「何を解決するのか」。ここが、このツールの存在理由そのものです。

Claude Codeは、ファイルの書き込みやコマンド実行など、影響の大きい操作の前にあなたの許可を求めて一時停止します。これは安全のために不可欠な仕組みですが、セッションを複数走らせた瞬間に「待ちの見落とし」という副作用を生みます。1つのタブに集中している間、別の2つのタブは静かに許可待ちで止まっているかもしれない。そのことに、あなたはタブを見に行くまで気づけません。

つまり並行作業のボトルネックは、Claude Codeの処理速度ではなく、「人間が、止まっているセッションに気づくまでの時間」に移ります。タブを1つずつクリックして巡回する――この“ポーリング”を人力でやっている状態が、多くのClaude Codeヘビーユーザーの実態です。

従来はタブを1つずつ目視巡回し許可待ちを見逃していたが、Claude Code Monitorでは全セッションを1画面に集約し許可待ちをその場で検知、1〜9キーで即フォーカス、スマホから遠隔操作できる
解くのは「速度」ではなく「気づくまでの時間」。目視巡回を、一箇所で待ちを検知して即フォーカスする形に置き換える。

Claude Code Monitorは、この“人力ポーリング”を「1画面に集約された状態表示」に置き換えます。カウンタの ◐(許可待ち)が0以外になったら、どこかのセッションがあなたを待っている合図。番号を見て、その番号キーを押すだけ。タブを探し回るコストが消えます。

この課題は、Claude Codeを何十体も並列で走らせるような使い方をすると、いっそう深刻になります。エージェントの数だけ「待ち」の発生源が増えるからです。関連する考え方は Claude Codeで40体のAIエージェントを並列実行する でも触れていますが、並列度を上げるほど「監視のコスト」が主役になる――Claude Code Monitorは、その監視コストを一手に引き受けるためのツールだと理解すると腑に落ちます。

Claude Code Monitorが速くするのは「AIの処理」ではなく「あなたの反応」。並行セッションが増えるほど効いてくる、地味だが本質的な最適化です。

主要機能:TUI・モバイルWeb・端末フォーカス切替

機能を、実際に使う順に整理します。

1. ターミナルUI(TUI)とキーボード操作

起動後の主戦場はTUIです。マウスは不要で、Vim風のキーバインドで完結します。

キー 動作
/ k 上へ移動
/ j 下へ移動
Enter / f 選択中のセッションにフォーカス(その端末を最前面へ)
19 番号で即選択&フォーカス
h QRコードの表示/非表示(スマホ接続用)
c 全セッションをクリア
q / Esc 終了

jkで選んでEnter、あるいは番号一発。手をホームポジションから動かさずに、監視から端末への移動が完了します。

2. モバイルWeb:スマホから監視・許可・送信

h を押すとQRコードが表示され、スマホのカメラで読み取ると、同じLAN内のスマホブラウザに監視画面が開きます(デフォルトポートは3456)。ここが地味に効きます。コーヒーを淹れに行っている間や、別室のソファからでも、スマホでセッションの状態を確認し、許可プロンプトに応答し、追加の指示メッセージを送れるのです。

▲ モバイルWebのデモ。スマホから各セッションの状態を確認し、画面キャプチャをピンチズームで拡大、許可プロンプトの操作やメッセージ送信までできる(出典:onikan27/claude-code-monitor README)。

モバイル側でできることは、READMEによると次の通りです。

画面キャプチャの確認:セッションの現在の画面を見られる。ピンチズームで細部まで拡大可能
許可プロンプトの操作:スマホから許可/拒否のナビゲーションができる
端末フォーカスの遠隔指示:どのセッションを前面に出すかをスマホから選べる
メッセージ送信:セッションに追加の指示テキストを送れる

3. 端末フォーカスの対応ターミナル

フォーカス切り替えは、どのターミナルアプリを使っているかで方式が変わります。現在サポートされているのは以下の3つです。

ターミナル フォーカス 方式
iTerm2 ✅ 対応 TTYベースでウィンドウ/タブを特定
Terminal.app ✅ 対応 TTYベースでウィンドウ/タブを特定
Ghostty ✅ 対応 Windowメニュー経由でタイトルベースに特定

Claude Code本体のアップデート事情(/recap やスキル経由のコマンド自動起動など)は Claude Code v2.1.108解説 にまとめていますが、Claude Code Monitorはそうした本体の進化とは独立して、「複数セッションの横断監視」というレイヤーを足してくれる、という位置づけです。

仕組み:フック+ファイルベース状態管理+AppleScript

「なぜサーバも立てずに、複数セッションの状態が分かるのか?」――ここが技術的にいちばん面白いところです。Claude Code Monitorはサーバレスを掲げており、常駐APIサーバを持ちません。代わりに、次の3つの部品を組み合わせています。

Claude Code Monitorの4層アーキテクチャ:UI層(TUI/モバイルWeb)、通信層(WebSocket/トークン認証)、状態層(ファイルベース状態管理)、収集層(Hooks/AppleScript)
サーバレスな4層構成。APIサーバを持たず、フックで集めた状態をファイルに書き、TUIとモバイルWebがそれを読む。端末制御だけAppleScriptが担う。

① フック(Hooks)でイベントを拾うccm setup を実行すると、~/.claude/settings.json にClaude Codeのフックが登録されます。以降、各セッションでツール実行や許可待ちなどのイベントが起きるたびに、そのフックが発火して「今このセッションはこういう状態」という情報を書き出します。Claude Code側の公式な拡張ポイントに乗っているので、Claude Codeの内部を無理にこじ開けているわけではありません。

② ファイルベースの状態管理:フックが書き出した各セッションの状態は、ファイルとして保存されます。監視プロセス(ccm)は、そのファイル群を読んで一覧を組み立てます。「書き手(各セッションのフック)」と「読み手(監視TUIやモバイルWeb)」がファイルを介して疎結合になっているため、常駐サーバもソケットの取り合いも要りません。これがサーバレスと呼ばれる所以です。

③ AppleScriptで端末を制御:番号キーを押したときに「実際にそのターミナルを最前面に持ってくる」のは、macOSのAppleScriptの仕事です。iTerm2やTerminal.appではTTY(端末デバイス)を手がかりに、Ghosttyではウィンドウのタイトルを手がかりに、目的のウィンドウ/タブを特定してフォーカスします。このAppleScript依存こそが、Claude Code MonitorがmacOS専用である理由です。

スマホ連携の部分は、この状態をWebSocketでリアルタイムに配信し、接続時に固有トークンで認証する層が担当します。全体像を図にすると次の通りです。

flowchart TD A["Claude Code
セッションA"] -->|Hook発火| S["状態ファイル
(~/.claude 配下)"] B["Claude Code
セッションB"] -->|Hook発火| S C["Claude Code
セッションC"] -->|Hook発火| S S --> M["ccm(監視プロセス)"] M --> T["ターミナルUI
一覧・フォーカス"] M --> W["WebSocketサーバ
QR+トークン認証"] W -->|同一Wi-Fi / Tailscale| P["スマホのブラウザ"] T -.->|AppleScriptで端末制御| A P -.->|遠隔で許可・送信| M
このアーキテクチャの利点は壊れにくさです。監視プロセスが落ちても、各セッション自体は普通に動き続けます(フックが状態ファイルを更新しているだけなので)。監視を再起動すればファイルを読み直して一覧が復元されます。状態の“真実”がファイルにあるので、監視ツールは「いつでも捨てて立て直せる」薄い層でいられます。

セットアップ:npx / ccm setup で3分導入する手順

③の代替の話に入る前に、実際に動かす手順を通しておきます。前提はmacOS・Node.js 18以上・Claude Code本体が入っていること。

手順1:起動する(インストール不要でも可)

まずは何も入れずに試せます。

# インストール不要で即実行
npx claude-code-monitor

# 気に入ったらグローバルに入れて ccm で使う
npm install -g claude-code-monitor
ccm

手順2:フックを登録する(初回だけ)

複数セッションの状態を拾うために、Claude Code側にフックを登録します。1回やれば以降は不要です。

ccm setup

これで ~/.claude/settings.json にフックが書き込まれ、以降に起動するClaude Codeセッションが監視対象になります。

手順3:監視を起動して使う

ccm            # = ccm watch(TUI+モバイルWebを起動)
ccm watch      # 監視TUIを起動(w でも可)
ccm serve      # モバイルWebサーバだけ起動(s でも可)
ccm list       # 現在のセッション一覧をCLIで表示(ls でも可)
ccm clear      # セッション情報をクリア

起動時のオプションも用意されています。

ccm --qr       # 起動と同時にスマホ接続用QRを表示
ccm -t         # Tailscale経由で公開(外出先から使う)
ccm -p 8080    # モバイルWebのポートを指定

手順4(Ghosttyユーザーのみ):タイトル上書きを止める

Ghosttyはウィンドウのタイトルでセッションを特定するため、Claude Codeがタイトルを上書きするとフォーカスがずれます。~/.claude/settings.json に次を足して、タイトル上書きを無効化します。

// ~/.claude/settings.json
{
  "env": {
    "CLAUDE_CODE_DISABLE_TERMINAL_TITLE": "1"
  }
}
注意ccm setup~/.claude/settings.json を書き換えます。すでに独自のフックや env 設定を入れている人は、事前に settings.json をバックアップしておくと安全です。うまく監視されないときは、まず ccm list でセッションが認識されているかを確認しましょう。

つまずきやすいポイント

初回導入でよく引っかかるのは、次のようなケースです。仕組み(フック+ファイルベース状態管理)を思い出すと、どこを見ればいいかが分かります。

セッションが一覧に出ないccm setup を実行したのは「フックを登録した」だけ。監視対象になるのはsetup後に起動したセッションなので、すでに開いていたClaude Codeは一度開き直す。まず ccm list で認識状況を確認する
番号キーを押しても端末が前面に来ない:使っているターミナルが対応3種(iTerm2 / Terminal.app / Ghostty)かを確認。Ghosttyなら手順4のタイトル上書き無効化が効いているかを見る
スマホからつながらない:スマホとMacが同じネットワークにいるか、ポートが塞がれていないかを確認。別ポートを試すなら ccm -p 8080。外出先なら同一Wi-Fiではなく ccm -t(Tailscale)に切り替える
状態が更新されない:状態の“真実”はファイル側にある。監視プロセスだけ再起動すれば、各セッションを触らずに一覧を読み直せる

いずれも「セッション側(フックが書く)」と「監視側(ファイルを読む)」のどちらの問題かを切り分けるのが早道です。

スマホ監視を安全に使う:ローカルネットワークとTailscale

スマホから自分のターミナルを操作できる、というのは強力な反面、「どこまで開けているのか」を理解して使うべき機能です。ここは要件と制約として明確にしておきます。

Claude Code Monitorのモバイル連携は、外部にクラウドサーバを立てません。監視マシン自身がWebSocketサーバになり、同じネットワーク内のスマホがそこへ直接つなぎます。接続時には固有トークンによる認証がかかり、そのトークンはQRコード経由で受け渡されます。つまり、QRを見せていない第三者が勝手につなぐ設計にはなっていません。

デフォルト(同一Wi-Fi):自宅や社内など、信頼できるLAN内での利用を想定。もっとも手軽
Tailscale経由(外出先):MacとスマホにTailscaleを入れ、同じアカウントでサインインしておけば、ccm -t で外出先からでも暗号化されたVPN越しに接続できる
ポート指定-p で待ち受けポートを変更でき、環境に合わせられる

運用上の心構え:これは本質的に「自分の端末へコマンドを送れる口をネットワークに開ける」機能です。カフェや空港のような信頼できない公共Wi-Fiでは起動しない、使い終わったらプロセスを止める、外部から使うなら必ずTailscaleを挟む――この3つを守れば、利便性を活かしつつリスクを実務レベルに抑えられます。

外出先からスマホでエージェントを動かすというテーマ自体に興味があれば、モバイル起点のエージェント運用を扱った OpenPhone:スマホからAIエージェントを動かすガイド も参考になります。Claude Code Monitorは「PCで走っているセッションをスマホから面倒見る」方向、というアプローチの違いを比べると理解が深まります。

Claude Code Monitorは何を代替する?既存手段との比較と判定材料

最後に③「何を代替できるのか」。複数セッションを扱う既存の手段と並べると、Claude Code Monitorの立ち位置がはっきりします。

観点 Claude Code Monitor 素のターミナルタブ tmux Claude Code本体の監視
複数セッションの横断一覧 ✅ 1画面に集約 ❌ タブを目視巡回 △ ペイン分割で並べる ❌ 1セッション内が対象
許可待ちの検知 ✅ カウンタで即分かる ❌ 見に行くまで不明 ❌ 自分で気づく必要 △ そのセッション内のみ
番号キーで端末フォーカス ✅ 1〜9キー ❌ 手動でクリック △ プレフィックス操作
スマホから監視・操作 ✅ QR+トークン ❌ 不可 ❌ 不可 ❌ 不可
追加インストール npx で即 不要 要tmux 不要
対応OS macOSのみ 全OS 全OS 全OS

見ての通り、Claude Code Monitorはtmuxや素のタブを完全に置き換えるものではありません。tmuxはセッションの多重化・永続化の道具であって、「どれが今Claude Codeの許可待ちか」を教えてはくれません。Claude Code Monitorは、その「複数のClaude Codeを横断で監視し、許可待ちに即対応する」という一点に特化し、さらにスマホという出口を足したツールです。tmuxの上でClaude Code Monitorを動かす、という併用もごく自然です。

導入すべきかどうかは、次の判定材料で決められます。

向いている:macOSで、日常的に2つ以上のClaude Codeを並行させる。許可待ちの取りこぼしを減らしたい。席を外しがちでスマホから面倒を見たい
効果が薄い:常にClaude Codeは1つだけ。tmuxのペインを常時見ていて不便を感じていない
使えない:Windows/Linuxが主環境(AppleScript依存のため現状は非対応)

まとめ:Claude Code Monitorは、Claude Codeを「速く」するツールではなく、あなたの反応を速くするツールです。複数セッションの許可待ちという“見えない待ち時間”を、1画面のTUIとスマホに可視化し、番号キー一発で対応まで導く。macOS・Node.js 18以上・Claude Code本体という前提さえ満たせば、npx claude-code-monitor の一行で試せます。並行作業が日常になっている人ほど、入れて損のない薄い一層です。

参照ソース

onikan27/claude-code-monitor(公式GitHubリポジトリ・README)
Claude Code Hooks(Anthropic公式ドキュメント)
Tailscale(公式サイト・端末間の暗号化VPN)