ブログ
AI 導入・活用に関する最新情報、技術トレンド、事例紹介をお届けします。
AI 導入・活用に関する最新情報、技術トレンド、事例紹介をお届けします。

AI コーディングエージェントを 3 つ 4 つ並べて動かすと、どれが作業中でどれが入力を待っているのかが分からなくなります。この記事では、AI エージェント向けのターミナルランタイム Herdr で複数のエージェントをまとめて動かし、Codex アプリを司令塔にして指示を振る運用を紹介します。
エージェントを並列で走らせる運用は、動かすところまでは簡単です。詰まるのはその後です。
tmux でペインを分けて Claude Code や Codex を並べると、ターミナルは確保できます。ただ、どのペインが処理中で、どのペインが承認待ちで止まっているのかは、ペインを開いて画面を目で見るまで分かりません。エージェントが 1 つなら問題になりませんが、数が増えるほど「今どれを見に行くべきか」の判断にコストがかかります。
外から操作する場合も同じです。tmux で別のエージェントに指示を送ろうとすると、send-keys と capture-pane を組み合わせ、出力から状態を判定する処理を自分で書くことになります。やれないことではありませんが、起動・指示・状態確認・結果回収をつなぐ接着剤のスクリプトが手元に増えていきます。
Herdr は、AI エージェントを動かすための土台になるターミナルランタイムです。
公式サイトは Herdr を「コーディングエージェントが動き続けるためのランタイム」と説明しています。tmux のようにターミナルをまとめる役割を持ちながら、その中で動いている AI エージェントの状態や操作まで扱えるところが特徴です。構成要素は 4 つで、公式ドキュメントの Concepts に定義があります。
| 要素 | 役割 |
|---|---|
| workspace | プロジェクトをまとめる場所 |
| tab | 作業をまとめる画面 |
| pane | 分割された端末 |
| agent | pane の中で動いている AI |
pane と agent が分かれているのがポイントです。pane は AI が入っていなくても存在する端末で、agent はその pane で現在動いていると認識されたコーディングエージェントを指します。この区別があるため、Herdr は「どの端末がエージェントで、そのエージェントが今どの状態か」を答えられます。
もう一つの特徴が、サーバーが端末を持つ構造です。公式の比較ページは、Herdr を「ランタイムとクライアント」と整理しています。実際の端末を保持しているのは常駐サーバーで、TUI も CLI も SSH 経由の接続もそのクライアントに過ぎません。そのため、見ている画面を閉じてもエージェントは動き続けます。
tmux は汎用のターミナルマルチプレクサで、Herdr はその考え方を AI エージェント向けに寄せたものです。重なる機能と、Herdr 側だけにある機能を並べると差分がはっきりします。
| 項目 | tmux | Herdr |
|---|---|---|
| セッションを残す | detach / reattach で可能 | サーバーがセッションを保持 |
| AI の状態を見る | ペインを開いて目視で判断 | working / blocked / done / idle を一覧表示 |
| AI を操作する API | send-keys と capture-pane を組み合わせる | read / send / wait / split を CLI と socket API で呼べる |
| 複数 AI の状態を一覧で見る | ペインを自分で見分ける | エージェントごとの状態を一覧表示 |
セッションを残す点は両方できるので、実質的な差は下の 3 行です。公式の比較ページはこの差を「tmux はペインを見る」と表現しています。tmux が持っていなかったのは、どのペインがエージェントかを知り、そのエージェントが詰まっているかを判定し、終わるまで待つ手段です。
tmux から移る場合の操作感も近いままです。プレフィックスキーは ctrl+b が既定で、ペインの移動や分割はそのまま通じます。キーバインドは設定ファイルで変更できるので、既存のキー配置に寄せることもできます。
Herdr の導入は、設定ファイルを書く前に動かし始められる構成になっています。
macOS と Linux はインストールスクリプトか Homebrew で入ります。
# インストールスクリプトcurl -fsSL https://herdr.dev/install.sh | sh# Homebrew を使っている場合brew install herdr起動は herdr と打つだけです。workspace と pane が開いた状態になり、ソケットの管理を自分でする必要はありません。あとは通常のターミナルと同じように、Claude Code を使いたければ claude、Codex CLI を使いたければ codex と打てば、その pane でエージェントが立ち上がります。状態表示・ペイン操作・セッション保持は最初から入っているため、まず動かして、必要になってから設定を足す順番で進められます。
--kind で指定できるエージェントの種類は claude・codex・gemini・cursor・copilot など 20 種類以上がドキュメントに列挙されています。手元でいつも使っているエージェントがそのまま乗る前提の作りになっています。
端末を保持しているのがサーバーなので、見ている側が消えてもエージェントの作業は続きます。
長いビルドや調査を走らせたまま離席するとき、この挙動が効きます。ターミナルを閉じても、Wi-Fi や SSH が切れても、Mac 側のバックグラウンドサーバーにセッションが残るため、接続し直せば同じ workspace と pane に戻れます。tmux の detach / reattach と同じ発想ですが、常駐と再接続の仕組みを自分で用意しなくてよい点が違います。
ただし、Mac のふたを閉じたり電源を切ったりしている間は実行そのものが止まります。復帰後にセッションの配置は戻せるので、そこからエージェントを再起動する流れになります。「離席中も動き続ける」のはマシンが起きている間に限る、と理解しておくのが正確です。詳しい復元の挙動は公式の Session stateにまとまっています。
Herdr には CLI と socket API があり、AI からの操作を前提にした公式 Skill も配布されています。
Agent automation のドキュメントは、操作の単位を layout・pane・agent の 3 つに分けています。layout は workspace や tab、pane の配置を作る操作、pane は端末そのものへのコマンド実行と入出力、agent は認識済みのエージェントに対する指示と状態の取得です。作成系のコマンドは JSON を返すので、ID は予測せずレスポンスから取ります。
# workspace を作り、返ってきた pane ID を受け取るcreated=$(herdr workspace create --cwd ~/project --label api --no-focus)pane_id=$(printf '%s\n' "$created" | jq -r '.result.root_pane.pane_id')# その pane を分割して、レビュー用の pane ID を得るsplit=$(herdr pane split "$pane_id" --direction right --no-focus)review_pane=$(printf '%s\n' "$split" | jq -r '.result.pane.pane_id')エージェント側にこの API を教える手段が公式 Skill です。Herdr はリポジトリの skills/herdr/SKILL.md に、エージェント向けの操作説明を同梱しています。インストール済みなら herdr --skill でバイナリに対応した版を出力できます。npx skills を使う場合は次のコマンドで入ります。
npx skills add herdrdev/herdr --skill herdr -gこの Skill を読み込んだエージェントは、HERDR_ENV=1 が設定されているとき、つまり自分が Herdr の管理下の pane で動いているときに herdr CLI を使います。Agent skill file のドキュメントによると、workspace や隣の pane を調べる、フォーカスを奪わずに pane を分割してコマンドを流す、pane の出力を読む、サーバーやテストや別のエージェントの完了を待つ、隣の pane に補助のエージェントを立てる、といった操作ができます。
ここまでの API と Skill を組み合わせると、UI をほとんど見ない運用になります。
実際の運用では、Herdr の Skill を Codex アプリ側で使えるようにして、Codex アプリをオーケストレーターとして扱います。依頼はまず Codex アプリに投げ、Codex アプリが Herdr の CLI を呼んで、必要な作業を他のエージェントに振ります。要件定義のレビューは Herdr 経由で立てた Claude Code の pane に任せ、実装は Cursor を使う、といった役割分担です。
Herdr の TUI を開いて状態を眺めるのではなく、状態の取得も待機も司令塔側の AI にやらせる形です。エージェントごとの状態が API で読めるため、working のものは放っておき、blocked のものだけを人間が見に行く判断ができます。
司令塔が Mac 上のアプリなので、そのアプリを遠隔操作できれば入口をスマートフォンに移せます。
iPhone の ChatGPT アプリには Remote があり、Mac 上の Codex アプリに接続できます。接続先の Codex アプリから Herdr を呼べば、複数のエージェントへの指示までスマートフォン側から届きます。使い方の解説は OpenAI Developers のブログにあります。
役割の切り分けは明確です。ファイル・権限・ローカル設定・Herdr のセッションはすべて Mac 側に残り、iPhone は進捗の確認、質問への返答、承認、次の指示を出す入口になります。移動中に承認だけ返して先に進めておく、という使い方ができます。
Herdr を使うと、複数の AI エージェントを動かす土台をほぼ設定なしで用意できます。
| やりたいこと | Herdr で得られるもの |
|---|---|
| エージェントの状態を把握する | working / blocked / done / idle の一覧表示 |
| 離席中も作業を続ける | サーバーがセッションを保持し、再接続できる |
| エージェントから別のエージェントを操作する | CLI と socket API、そして公式 Skill |
| 手元の環境を変えずに始める | 既存のターミナルの中で動き、ctrl+b の操作感も近い |
同じ仕組みは tmux とスクリプトでも組めます。判断の分かれ目は、どこまでを自分で面倒を見るかです。起動・指示・状態確認・結果回収・スマートフォンからの接続までを自作するなら、その接着剤を保守し続けることになります。Herdr はその連携部分を最初から持っているので、まず試してみて、合わなければ外すという進め方ができます。
複数の AI エージェントを実際の開発プロジェクトに組み込み、チームで自走できる状態まで持っていく支援は AIDD インハウス で行っています。お気軽にご相談ください。
※ 本記事の内容は公開時点の情報です。サービスの名称・内容・料金は予告なく改訂されることがあります。