herdr Documentation

The runtime your coding agents live on

RAW Doc

Docker & Self-Hosted Deployment Verified OCI

Deploy herdr on any server, homelab, or cloud container platform.

1-Click Terminal Command
bash (docker run)
docker run -d --name herdr -p 80:80 --restart always herdrdev/herdr:latest

File: README.md

herdr


https://github.com/user-attachments/assets/043ec09f-4bdd-41d5-aee0-8fda6b83e267

the runtime your coding agents live on.

  • detach without stopping work — herdr keeps terminals running in a background server when you close the client or lose your SSH connection. after a server or machine restart, herdr restores the saved layout and can resume supported agent sessions; the original processes do not survive. session state →
  • several machines, one window — keep local work and saved ssh machines together, with a combined agent list and independent reconnects. remote machines →
  • never hunt for the stuck one — every pane is marked working, blocked, or idle. when an agent stops and needs an answer, herdr says so.
  • agent-native — agents drive herdr through the cli and socket api: they can spawn panes, prompt each other, and wait until another agent is genuinely blocked. agent skill →
  • runs what you already run — claude code, codex, cursor, opencode, grok and the rest. herdr doesn't wrap or replace them; it owns their terminals. building an agent? add herdr support →
  • keyboard and mouse, both first-class — tmux-style prefix keys and click, drag, split. pick per moment, not per tool.
  • plugins — extend panes and workflows. browse the marketplace →
  • one rust binary, no electron — runs in whatever terminal you already use.

install

bash
curl -fsSL https://herdr.dev/install.sh | sh

or brew install herdr · mise use -g herdr · windows: powershell -ExecutionPolicy Bypass -c "irm https://herdr.dev/install.ps1 | iex" · endpoint-protected Windows · binaries

then start it where the work lives:

bash
herdr

run your agents, split panes, walk away. ctrl+b q detaches, herdr reattaches. quick start →

docs

everything lives at herdr.dev/docs: quick start · concepts · supported agents · keyboard · configuration · session state · connecting machines · remote · integrations · add herdr support to your agent · plugins · socket api

thanks

every past sponsor and backer is listed in SPONSORS.md — thank you 🐑

enterprise / partnership: [email protected]

agent instructions

if you are an ai agent helping with this repository, read AGENTS.md before making changes and read CONTRIBUTING.md before opening issues or PRs.

development

bash
git clone https://github.com/herdrdev/herdr
cd herdr
cargo build --release

just test        # unit tests
just check       # formatting, tests, and maintenance checks

license

Herdr is licensed under the Apache License 2.0.


File: docs/versions/0.7.5/website/src/content/docs/ja/agent-automation.mdx


title: エージェント自動化

Herdr はコーディングエージェントの自動化レイヤーとして使えます。スクリプトから制御することも、ひとつのエージェントから別のエージェントへ作業を渡し、状態を確認して結果を集めることもできます。重要なのは、目的に合うプリミティブを選ぶことです。

3 つのプリミティブ

プリミティブ 責務
レイアウト(workspace、tab、ペイン構成) ターミナルの場所を作成し、整理する。
ペイン 生のターミナルを制御する。コマンド実行、入力送信、出力読み取り、出力待機を行う。
エージェント 認識済みコーディングエージェントを、名前またはペインとライフサイクル状態に基づいて制御する。

ペインは、エージェントが入っていなくても存在します。エージェントは、ペイン内で現在実行されていると Herdr が認識したプロセスです。そのため agent start には既存のシェルペインが必要で、レイアウトの作成、分割、移動は行いません。

ワークスペースを作成すると最初のタブとルートペインも作られ、タブを作成するとそのルートペインも作られます。最初のプロセスには返されたペイン ID を使い、そのレイアウトに別のターミナルが必要なときだけ分割します。

作成コマンドは JSON を出力します。ID を推測せず、レスポンスから取得してください:

bash
created=$(herdr workspace create --cwd ~/project --label api --no-focus)
pane_id=$(printf '%s\n' "$created" | jq -r '.result.root_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')

workspace create は .result.workspace、.result.tab、.result.root_pane を返します。tab create は .result.tab と .result.root_pane を返し、pane split は新しいペインを .result.pane として返します。

ペインを別のワークスペースへ移動すると、ワークスペース修飾付きのペイン ID が変わります。pane move の後は .result.move_result.pane.pane_id を使い、以前の値が必要なら .result.move_result.previous_pane_id を参照してください。実行中プロセスは起動時の Herdr 環境を保ちますが、以前の HERDR_PANE_ID はそのターミナルの別名として残るため、--current は引き続き安全に使えます。移動後に始めるコマンドはエージェント名で解決できますが、すでに進行中の待機は agent_not_running で終了します。

シェル、テスト、サーバー、CI ウォッチャーなどの通常のターミナルプロセスにはペインコマンドを使います。どのエージェントが動いているか、または状態が working、blocked、done、idle、unknown のどれかを Herdr に判断させる場合はエージェントコマンドを使います。

エージェントの識別子と起動

w1:p2 のようなペイン ID はターミナルの場所を識別します。reviewer のようなエージェント名は、そのペインに現在いるエージェントの扱いやすい別名です。名前は [a-z][a-z0-9_-]{0,31} に一致し、ライブエージェント間で一意でなければなりません。エージェントが終了、解放、または置換されると別名は消えます。ペイン自体の恒久的な名前ではありません。

エージェントコマンドは、一意なライブ名、または現在そのエージェントをホストしているペイン ID のどちらでも指定できます。

利用可能なシェルペインとは、対話シェルのプロンプトに戻っており、フォアグラウンドをシェル自身が所有し、フォアグラウンドのコマンド、エディタ、エージェントが動いていないペインです。agent start の前にプロンプトへ戻してください。

--kind は対応済みエージェントとその標準実行ファイルを選びます。対応する kind は pi、claude、codex、gemini、cursor、devin、agy、cline、omp、mastracode、opencode、copilot、kimi、kiro、droid、amp、grok、hermes、kilo、qodercli、maki です。-- より後の引数は、その実行ファイルへそのまま渡されます。

agent start は、同じターミナルで期待したエージェントを検出し、対話入力の準備ができたと Herdr が判断してから返ります。起動待機はデフォルトで 30 秒です。--timeout は 3000 より大きく 300000 以下のミリ秒で指定します。

bash
herdr agent start reviewer --kind codex --pane "$review_pane" -- -m gpt-5.4

手動で起動したエージェントも自動検出され、ペイン ID で指定できます。人が読みやすい安定した対象名が必要なら名前を付けます:

bash
herdr agent get w1:p2
herdr agent rename w1:p2 reviewer

操作面を選ぶ

目的 コマンド
シェルコマンドを実行して送信する pane run
Enter を付けずに文字列を送る pane send-text
ターミナルキーや修飾キーの組み合わせを送る pane send-keys
文字列や正規表現を待つ pane wait-output
既存のペインで対応済みエージェントを起動する agent start
プロンプトを送信し、必要なら完了を待つ agent prompt
エージェントの対話 UI にキーを送る agent send-keys
エージェントのライフサイクル状態を待つ agent wait

agent prompt は文字列とエンコード済み Enter を送信し、ターミナルの現在の bracketed paste モードを尊重します。working 中のエージェントにも送信できます。esc、up、enter、ctrl+c のような操作には agent send-keys を使います。escape も esc のエイリアスとして使えます。意図的に生のターミナルを操作したい場合は、ペイン入力コマンドを使ってください。

ペイン入力は、現在のプロセスに関係なくターミナルを指定します。エージェント入力はライブエージェントを解決し、そのエージェントがペインを制御しなくなっていれば操作を拒否します。

agent prompt --wait はプロンプトをすぐ送信します。エージェントが non-working 状態から始まる場合、Herdr はまず 5 秒以内にライフサイクル変化が観測されることを要求します。状態シーケンスが進まなければ、無期限に待たず agent_prompt_stalled を返します。呼び出し側の --timeout が 5 秒以下なら、通常の timeout エラーを返します。活動を観測した後、要求された安定状態を待ちます。個々のターンは追跡しません。エージェントがすでに working の場合、進行中ターンの完了が待機を満たすことがあります。単独の agent wait は現在のエージェントを監視し、すでに状態が一致していれば即座に返ります。どちらもデフォルトでは idle、done、blocked を待ちます。複数の正確な状態を許可するには、--until idle --until done のように --until を繰り返します。unknown が必要な場合は --until unknown を明示してください。agent prompt では --until に --wait が必要です。

idle は、エージェントが入力待ちで、そのタブがフォーカス中の Herdr UI ですでに表示済みであることを示します。done は同じ基礎的な idle 状態ですが、バックグラウンド作業が完了してから、そのタブをフォーカスするか pane focus / agent focus で対象にするまで使われます。CLI で読み取るだけでは表示済みになりません。blocked は承認または質問 UI を Herdr が認識した状態です。unknown はエージェントが存在するもののライフサイクルを確実に分類できない状態で、成功完了を意味しません。違いが重要なら正確な --until を指定してください。

pane wait-output はエージェントのライフサイクルを解釈しません。選択したターミナルスナップショットをポーリングし、最初にすぐ検索するため、すでに存在する文字列も一致します。デフォルトのソース名は recent で、直近 80 行の描画済みターミナル行を折り返し前の出力として扱います。--lines でその行数を変更でき、--regex は Rust の正規表現構文で 1 行ずつ一致します。

CLI では、pane read と agent read のどちらもターミナルテキストを直接出力します。デフォルトは ANSI エスケープを除去した UTF-8 テキストです。ソースに装飾が含まれる場合、--format ansi または --ansi でエスケープを残します。detection ソースは常にプレーンテキストです。recent 系ソースでは、--lines N は折り返し解除の前に末尾の N 描画行を選び、省略時は 80 行です。visible と detection では、省略時にスナップショット全体を返し、指定時は改行で区切られた末尾 N 行を返します。socket API ではテキストを .result.read.text に返します。

既知の注意点: 代替画面の出力

Claude Code や OpenCode などの全画面エージェントは、ターミナルの代替画面に描画することがあります。代替画面の行は Herdr のホスト側スクロールバックには入りません。応答が表示中のペインを超えると、アプリが表示しなくなった行を recent や recent-unwrapped で復元することはできません。--lines を増やしても、その履歴は取得できません。フォントが大きい場合やペインが小さい場合は、より起こりやすくなります。

エージェントに簡潔な応答を求めるか、ペインを広げる、フォントを小さくする、またはエージェント自身のトランスクリプトやスクロール操作を使ってください。エージェント内でスクロールした後、--source visible を使うと、現在描画されているページを読み取れます。

成功した agent start、agent prompt、agent wait は現在のエージェントを .result.agent に返します。pane wait-output は .result.pane_id、.result.matched_line、一致したスナップショット .result.read を返します。

wait コマンドにはデフォルトのタイムアウトがなく、無期限に待機できます。タイムアウトやサーバーエラーでは JSON エラーを stderr に出して終了コード 1、CLI 構文エラーでは終了コード 2 を返します。

レシピ

補助エージェントを起動して作業を渡し、その作業が落ち着くまで待ちます:

bash
split=$(herdr pane split --current --direction right --no-focus)
review_pane=$(printf '%s\n' "$split" | jq -r '.result.pane.pane_id')
herdr agent start reviewer --kind codex --pane "$review_pane" -- -m gpt-5.4
herdr agent prompt reviewer "Review the current diff" --wait --timeout 120000
herdr agent read reviewer --source recent-unwrapped --lines 120

エージェントが入力を求めるまで待ち、内容を確認して対話 UI を操作します:

bash
herdr agent wait reviewer --until blocked --timeout 120000
herdr agent read reviewer --source recent-unwrapped --lines 80
herdr agent send-keys reviewer esc

通常のプロセスを実行し、エージェントとして扱わずに出力を待ちます:

bash
herdr pane run w1:p3 "just test --watch"
herdr pane wait-output w1:p3 --regex "passed|failed" --timeout 120000

コマンドとオプションの完全な一覧は CLI リファレンス を参照してください。シェル補完でも同じコマンドツリーを対話的に確認できます。


File: docs/versions/0.7.5/website/src/content/docs/ja/agent-skill.mdx


title: エージェントスキルファイル

Herdr は再利用可能なエージェントスキルファイルを SKILL.md として提供しています。

このファイルを、再利用可能なスキルやカスタム指示に対応した任意のコーディングエージェントにインストールしてください。このスキルは、Herdr のペイン内から Herdr を制御する方法をエージェントに教えます。

Herdr は別の用途向けに herdr.dev/agent-guide.md というガイドも提供しています。こちらは、人間が Herdr を学習・セットアップ・トラブルシューティングするのをエージェントが手伝うためのものです。スキルは Herdr を操作するエージェントのため、ガイドは人間に教えるエージェントのためのものです。

スキルがすること

このスキルは、HERDR_ENV=1 が設定されているときに herdr CLI を使うようエージェントに指示します。これは、エージェントが Herdr 管理下のペイン内で動作しており、ローカルの Herdr ソケットと安全に通信できることを意味します。

スキルをインストールすると、エージェントは次のことができます:

  • ワークスペース、タブ、ペイン、隣のエージェントを調べる
  • フォーカスを奪わずにペインを分割してコマンドを実行する
  • ペインの出力と最近のログを読む
  • サーバー、テスト、別のエージェントの完了を待つ
  • 隣のペインでヘルパーエージェントを起動する

このスキルは独立したアプリやサービスではありません。エージェント向けの markdown 指示ファイルです。

インストールする

npx skills でスキルをインストールします:

bash
npx skills add herdrdev/herdr --skill herdr -g

-g フラグは、対応エージェントにグローバルインストールします。現在のプロジェクトにインストールする場合は -g を省略してください。

手動でのフォールバックおよび信頼できるソースとしては、リポジトリのコピーを使ってください:

text
https://github.com/herdrdev/herdr/blob/master/SKILL.md

スキルシステムを持つエージェントには、このファイルを herdr という名前のスキルとしてインストールしてください。スキルシステムを持たないエージェントには、ファイルの内容をプロジェクト指示またはユーザー指示に貼り付けてください。

インストール後、Herdr の中でエージェントを起動します:

bash
herdr
claude

他のコーディングエージェントを Herdr のペインで使っても構いません。重要なのは、エージェントのプロセスが Herdr 内で動作していて HERDR_ENV=1 が利用できることです。

安全ルール

このスキルはひとつのガードレールから始まります: HERDR_ENV=1 が設定されていない場合、エージェントは停止して、Herdr 管理下のペイン内で動作していないと伝えるべきです。

これにより、Herdr の外にいるエージェントが自分のものではないセッションを制御しようとするのを防ぎます。

エージェント向けリファレンス

コマンドの完全なガイドはスキルファイル自体にあります。ペイン ID、pane split、pane run、pane read、pane wait-output、agent wait、ワークスペースとタブのコマンド、協調動作のレシピを扱っています。

ソースファイルはこちら:

GitHub で SKILL.md を開く →


File: docs/versions/0.7.5/website/src/content/docs/ja/agents.mdx


title: エージェント

Herdr は複数のコーディングエージェントを同時に動かすために作られています。各エージェントは、シェル、ログ、プロンプト、実行中プロセスをそのまま保った実際のターミナルペインの中にいます。Herdr はどのペインにエージェントがいるかを追跡し、その状態をタブとワークスペースに集約し、すべてのターミナルを手作業で見回る代わりに、注意が必要なペインへ直接ジャンプできるようにします。

スクリプトや別のエージェントから連携させる方法は、エージェント自動化 を参照してください。

対応エージェント

一般的なコーディングエージェントは、追加設定なしで自動検出されます。重要な違いは Herdr がエージェントを見えるかどうかではありません。どのシグナルが idle、working、blocked を決定する権限を持つかです。

エージェント 状態の権威 インテグレーションの役割
Pi インストール時はライフサイクルフック。それ以外はスクリーンマニフェスト 状態とセッション
OMP インストール時はライフサイクルフック 状態
GitHub Copilot CLI スクリーンマニフェスト セッション
Devin CLI スクリーンマニフェスト セッション
Kimi Code CLI インストール時はライフサイクルフック。それ以外はスクリーンマニフェスト 状態とセッション
Hermes Agent インストール時はライフサイクルフック。それ以外はスクリーンマニフェスト 状態とセッション
Qoder CLI スクリーンマニフェスト セッション
Droid スクリーンマニフェスト セッション
OpenCode インストール時はライフサイクルプラグイン。それ以外はスクリーンマニフェスト 状態とセッション
Kilo Code CLI インストール時はライフサイクルプラグイン。それ以外はスクリーンマニフェスト 状態とセッション
MastraCode インストール時はライフサイクルフック 状態とセッション
Claude Code スクリーンマニフェスト セッション
Codex スクリーンマニフェスト セッション
Cursor Agent CLI スクリーンマニフェスト セッション
Amp スクリーンマニフェスト なし
Grok CLI スクリーンマニフェスト なし
Antigravity CLI スクリーンマニフェスト なし
Kiro CLI スクリーンマニフェスト なし
Maki スクリーンマニフェスト なし

検出されるもののテストが薄いもの: Gemini CLI と Cline。未対応のエージェントも通常のターミナルプロセスとして問題なく動きます。ただし、インテグレーションを追加するかソケット API で状態を報告しない限り、詳細な状態は得られない可能性があります。

状態の権威

Herdr はまず各ペインのフォアグラウンドプロセスを検出します。その後、各ペインはひとつの状態権威を持ちます。

完全なライフサイクルフックを持つエージェントでは、インテグレーションがインストールされ、実行中のペインについて能動的に報告している間は、インテグレーションが権威です。Herdr はそのフック報告を idle、working、blocked とセッション識別に使います。同じライフサイクル権威に対してスクリーンマニフェストのフォールバックを並走させることはしません。これにより、真実の情報源が 2 つ競合する状況を避けます。

完全なライフサイクルフックを持たないエージェントでは、Herdr はフォアグラウンドプロセスを識別し、ライブの下部バッファのスクリーンスナップショットを読みます。そのスナップショットに対して TOML マニフェストを評価し、idle、working、blocked を分類します。それらを発するエージェントでは、マニフェストはターミナルタイトルと進捗 (OSC) シーケンスも検出の証拠としてマッチできます。その証拠がない場合は、スクリーンルールが単独で検出を担います。

スクリーンスナップショットは、スクロールされたビューポートではなく、ペインバッファの直近の下部から取得されます。Herdr でスクロールバックしても、検出は下部のライブなエージェント UI を追い続けます。

Claude Code、Codex、GitHub Copilot CLI、Droid、Qoder CLI、Cursor Agent CLI のインテグレーションは、意図的にライフサイクル権威にしていません。これらは復元のためのネイティブセッション識別を提供しますが、フックがライフサイクル全体をカバーしていません。許可承認の結果、Esc による中断、その他の遷移を見逃すことがあります。これらのエージェントでは、Herdr は引き続きスクリーンマニフェスト検出を使います。

VM とサンドボックスラッパー

Linux と macOS では、ホストから見えるラッパーが実際のエージェントプロセスを Herdr から隠すことがあります。ラッパーのコマンドに HERDR_AGENT=<agent> を設定して、どの既存エージェントのスクリーンマニフェストを使うべきか Herdr に伝えてください。たとえば、Linux では HERDR_AGENT=claude fence -- claude、macOS では HERDR_AGENT=claude nono run --profile claude-code -- claude を実行します。このヒントはそのフォアグラウンドプロセスにスコープされます。VM やコンテナの内部だけで設定しても Herdr からは見えません。また、継承されるすべてのフォアグラウンドプロセスをそのエージェントとして扱いたいのでない限り、グローバルな export は避けてください。

blocked 状態

スクリーンマニフェスト方式のエージェントでは、blocked の検出は意図的に厳格です。Herdr が blocked と判定するのは、ライブの下部バッファスナップショットが既知の承認・質問・許可 UI にマッチしたときだけです。既知のエージェントでどのマニフェストルールにもマッチしない場合、Herdr は idle にフォールバックし、explain の出力ではそのフォールバックに default_known_agent_idle_fallback というラベルを付けます。

つまり、見慣れない新しいエージェントプロンプトは、Herdr がその画面の形を学習するまで、最初は blocked ではなく idle と表示されることがあります。こうしたやり取りによって Herdr が入力を送ったり破壊的な操作をしたりすることはありません。影響するのは表示上の状態と wait だけです。

検出マニフェスト

バンドルされたマニフェストは Herdr の内部にあります。Herdr は herdr.dev でリモートマニフェストの更新も確認し、有効なエージェント別ルール更新を Herdr の再起動なしで自動適用します。リモートマニフェストは Herdr の state ディレクトリに保存されます。バックグラウンドのリモートマニフェスト確認を無効にするには [update] manifest_check = false を設定します。

ローカルオーバーライドは、プラットフォームの設定ディレクトリからリモートまたはバンドルのマニフェストを置き換えられます:

text
~/.config/herdr/agent-detection/<agent>.toml

ローカルオーバーライドが常に優先されます。ローカルオーバーライドがない場合、Herdr はキャッシュされたリモートマニフェストと実行中バイナリにバンドルされたマニフェストのうち、新しくて互換性のある方を使います。デバッグビルドでは、同じ設定ヘルパーが herdr-dev のような開発用ディレクトリを使うことがあります。無効なオーバーライドファイルは警告付きで無視され、Herdr はそのエージェントについてキャッシュされたリモートまたはバンドルのマニフェストにフォールバックします。

リモートマニフェストは、Herdr がすでに識別方法を知っているエージェントの検出ルールにパッチを当てるものです。完全に新しいエージェントの追加には、プロセス検出、ラベル、インテグレーション挙動のために Herdr バイナリのアップデートが引き続き必要です。

実行中のサーバーは起動時にアクティブなマニフェストをメモリに読み込みます。リモートマニフェストの自動更新は、新しいルールが書き込まれた後にそのメモリ内キャッシュをリロードします。herdr server update-agent-manifests を実行すると、リモートマニフェストの更新を即座に取得して実行中のサーバーをリロードします。ローカルオーバーライドを手で編集した後は、Herdr を再起動するか herdr server reload-agent-manifests を実行して、実行中のサーバーにファイルを適用してください。

ペインの状態表示がおかしいときは herdr agent explain を使ってください:

bash
herdr agent explain <target>
herdr agent explain --file screen.txt --agent codex --json

ライブの explain は実行中のサーバーが評価するので、アクティブなマニフェストキャッシュを反映します。explain の出力には次が表示されます: エージェント、最終状態、完全なライフサイクル権威によってスクリーン検出がスキップされたかどうか、マニフェストのソースとバージョン、キャッシュされたリモートバージョン、ローカルオーバーライドによるシャドーイング、リモート更新の状況、マッチしたルール、可視の証拠フラグ、評価されたルールのマッチャーとリージョンの証拠、トランスクリプトビューアーでの更新スキップ理由、そしてどのルールにもマッチしなかったときの idle フォールバック理由です。

Herdr は外側のターミナル環境として tmux の中で動かせます。エージェント検出は、Herdr のペイン内で起動された tmux セッションの中までは調べません。シェルフレームワークが Herdr 内で自動的に tmux に入る場合、Herdr はペインのプロセスとして背後のエージェントではなく tmux を見ることになります。

状態のロールアップ

サイドバーは状態を上位へ集約します。

blocked なエージェントは、そのペイン、タブ、ワークスペースを blocked に見せます。working なエージェントはワークスペースをアクティブに見せます。done なエージェントは、あなたが確認するまで表示され続けます。

これが Herdr の中心的なワークフローです: 複数のエージェントを起動し、並行して働かせ、サイドバーでどのプロジェクトが判断を必要としているか、どれがまだ実行中か、どれがレビュー待ちかを把握します。

ダイレクトインテグレーション

使っている各エージェントのインテグレーションをインストールしてください。スクリーン検出だけに頼らず、フックやプラグインの報告を Herdr に提供します:

bash
herdr integration install claude
herdr integration status

対応エージェントごとに、インテグレーションの名前と挙動は異なります。エージェント別の詳細と完全なインストール一覧はインテグレーションを参照してください。

カスタムエージェントラベル

表示用にエージェントターゲットの名前を変えられます:

bash
herdr agent rename w1:p1 reviewer
herdr agent rename reviewer --clear

ターゲットには一意なライブエージェント名、または現在そのエージェントをホストしているペイン ID を使います。ターミナル ID とエージェント kind のラベルだけでは指定できません。

カスタムステータスラベル

インテグレーションは、ライフサイクル状態を意味的な状態としてのみ報告します。表示のカスタマイズは、ペインメタデータのトークンとして別に追加します。

bash
herdr pane report-agent w1:p1 \
  --source custom:indexer \
  --agent docs-bot \
  --state working

herdr pane report-metadata w1:p1 \
  --source custom:indexer-display \
  --token summary=indexing

state は wait、通知、ロールアップを制御します。summary トークンは表示専用で、エージェントサイドバー行では $summary として使えます。

エージェントサイドバー行では、terminal_title または terminal_title_stripped も任意で使えます。どちらもデフォルト行には含まれません。前者は安全性のために正規化された最新の OSC 0/2 ターミナルタイトルを表示し、後者は先頭にある認識済みのアクティビティまたはスピナーのグリフ 1 つと、それに続く空白を除去します。これらの値は Herdr サーバーが所有し、コールドリスタートをまたいで保持されません。また、メタデータのタイトルや意味的なエージェント状態から独立しています。そのため、除去後のテキストが同じなら、スピナーのアニメーションで生のタイトルが変わってもペイン更新は発行されません。

エージェントに直接アタッチする

完全な Herdr UI ではなく、ひとつのエージェントターミナルに現在のターミナルをアタッチします:

bash
herdr agent attach reviewer

ctrl+b q でデタッチします。リテラルの ctrl+b は ctrl+b ctrl+b で送ります。

マウスホイールまたは通常の page up/page down でスクロールします。通常の入力をすると最下部に戻ります。

別のダイレクトアタッチクライアントがすでに入力を所有している場合は --takeover を使います:

bash
herdr agent attach reviewer --takeover

エージェントではないターミナルで同じダイレクトアタッチ挙動が欲しいときは herdr terminal attach <terminal_id> を使ってください。


File: docs/versions/0.7.5/website/src/content/docs/ja/cli-reference.mdx


title: CLI リファレンス

Herdr の CLI は、インテグレーションやエージェントが使うのと同じローカルソケット API を通じて、実行中のサーバーと通信します。

ほとんどのコマンドは JSON レスポンスを出力します。決定的な自動化が欲しいときはスクリプトから使ってください。

起動とステータス

bash
herdr                         # デフォルトセッションを起動またはアタッチ
herdr --session work          # 名前付きセッションを起動またはアタッチ
herdr --remote workbox        # SSH 越しにアタッチ (ローカルのキーバインドを使用)
herdr --remote workbox --remote-keybindings server
herdr --remote workbox --handoff
herdr --no-session            # シングルプロセスの逃げ道
herdr --default-config        # デフォルト設定を表示
herdr update                  # 設定済みチャンネルからダウンロードしてインストール
herdr update --handoff        # 対応する実行中サーバーでライブハンドオフにオプトイン
herdr completion zsh          # zsh 補完スクリプトを生成
herdr channel show            # stable または preview を表示
herdr channel set preview     # プレビュービルドにオプトイン
herdr channel set stable      # Linux/macOS の直接インストールを安定版に戻す
herdr --version               # バージョンを表示

ステータスコマンド:

bash
herdr status
herdr status server
herdr status client

API スキーマコマンド:

bash
herdr api schema
herdr api schema --json
herdr api schema --output herdr-api.schema.json

herdr api schema は、インストール済みバイナリに同梱されたソケットプロトコルスキーマの短い概要を表示します。完全な JSON Schema ドキュメントが欲しいときは --json を使い、ファイルに書き出すには --output PATH を使ってください。

シェル補完

bash
herdr completion zsh
herdr completions zsh
herdr completion bash
herdr completion fish
herdr completion powershell
herdr completion elvish

completion はスクリプトを標準出力に表示します。completions はエイリアスです。一時的な zsh セッションでは、スクリプトを直接読み込めます:

bash
source <(herdr completion zsh)

永続的な zsh 設定では、生成された _herdr 関数を compinit が実行される前の fpath 上に置いてください:

bash
mkdir -p ~/.zfunc
herdr completion zsh > ~/.zfunc/_herdr

その後、.zshrc に次の内容があることを確認してください:

zsh
fpath=(~/.zfunc $fpath)
autoload -Uz compinit
compinit

サーバー

bash
herdr server
herdr server stop
herdr server reload-config
herdr server agent-manifests [--json]
herdr server update-agent-manifests [--json]
herdr server reload-agent-manifests

herdr server はヘッドレスサーバーを明示的に起動します。監視下やサービス的な構成で使ってください。reload-config はペインを再起動せずにリロード可能な設定を適用します。agent-manifests は、アクティブなエージェント検出マニフェストのソース、キャッシュされたリモートバージョン、直近のリモート更新結果を表示します。update-agent-manifests はリモートマニフェストの更新を即座に取得し、実行中のサーバーにリロードして、更新後のマニフェスト状態を表示します。生のステータスレスポンスが欲しいときは --json を渡してください。reload-agent-manifests は、ローカルオーバーライドの編集後にエージェント検出マニフェストを実行中のサーバーにリロードします。

通知

bash
herdr notification show <title> [--body TEXT] [--position top-left|top-right|bottom-left|bottom-right] [--sound none|done|request]

notification show は設定済みの [ui.toast] 配信を使います。--position はアプリ内の Herdr トーストにのみ影響します。--sound のデフォルトは none で、done と request は通知が表示されたときにのみ、既存の完了音と要注意音を再生します。

セッション

bash
herdr session list [--json]
herdr session attach <name>
herdr session stop <name> [--json]
herdr session delete <name> [--json]

デフォルトセッションを明示的に停止する必要があるときは、セッション名として default を使ってください。

ワークスペース

bash
herdr workspace list
herdr workspace create [--cwd PATH] [--label TEXT] [--env KEY=VALUE] [--focus] [--no-focus]
herdr workspace get <workspace_id>
herdr workspace focus <workspace_id>
herdr workspace rename <workspace_id> <label>
herdr workspace report-metadata <workspace_id> --source ID [--token NAME=VALUE] [--clear-token NAME] [--seq N] [--ttl-ms N]
herdr workspace close <workspace_id>

フォーカスを奪わずにワークスペースを作成します:

bash
herdr workspace create --cwd ~/project --label api --no-focus

ワークスペースは最上位のプロジェクトまたは作業コンテキストです。作成時に最初のタブとルートペインも作られます。JSON レスポンスの .result.workspace.workspace_id、.result.tab.tab_id、.result.root_pane.pane_id から各 ID を取得できます。

Worktree

bash
herdr worktree list [--workspace ID | --cwd PATH] [--json]
herdr worktree create [--workspace ID | --cwd PATH] [--branch NAME] [--base REF] [--path PATH] [--label TEXT] [--focus] [--no-focus] [--json]
herdr worktree open [--workspace ID | --cwd PATH] (--path PATH | --branch NAME) [--label TEXT] [--focus] [--no-focus] [--json]
herdr worktree remove --workspace ID [--force] [--json]

worktree は、Git チェックアウトの出自情報を持つ通常の Herdr ワークスペースです。worktree create は Git worktree のチェックアウトを作成し、ワークスペースとして開き、親リポジトリのワークスペースとグループ化します。--branch が既存のローカルブランチを指す場合はそれをチェックアウトし、そうでなければ --base または HEAD からブランチを作成します。--path がない場合、チェックアウトは <worktrees.directory>/<repo>/ の下に作成されます。

workspace close は Herdr の状態だけを閉じます。worktree remove が明示的なチェックアウト削除の経路です。git worktree remove を実行し、ブランチは決して削除せず、Git がダーティなチェックアウトを拒否する場合は --force が必要です。

タブ

bash
herdr tab list [--workspace <workspace_id>]
herdr tab create [--workspace <workspace_id>] [--cwd PATH] [--label TEXT] [--env KEY=VALUE] [--focus] [--no-focus]
herdr tab get <tab_id>
herdr tab focus <tab_id>
herdr tab rename <tab_id> <label>
herdr tab close <tab_id>

タブはワークスペース内の別のターミナルレイアウトです。--workspace を省略すると、tab create はアクティブなワークスペースを使い、存在しなければ失敗します。JSON レスポンスの .result.tab.tab_id と .result.root_pane.pane_id から ID を取得できます。

ワークスペースとタブの作成、およびペインの分割は、デフォルトではフォーカスを変えません。--focus は新しいレイアウトを選択し、--no-focus はデフォルトを明示します。--cwd がない場合、新しいターミナルは terminal.new_cwd の設定に従い、デフォルトでは元のペインまたはワークスペースを引き継ぎます。各 --env KEY=VALUE は新しいルートシェルの環境変数を追加または置換します。

ペイン

bash
herdr pane list [--workspace <workspace_id>]
herdr pane current [--pane ID|--current]
herdr pane get 
herdr pane layout [--pane ID|--current]
herdr pane process-info [--pane ID|--current]
herdr pane neighbor --direction left|right|up|down [--pane ID|--current]
herdr pane edges [--pane ID|--current]
herdr pane focus --direction left|right|up|down [--pane ID|--current]
herdr pane resize --direction left|right|up|down [--amount FLOAT] [--pane ID|--current]
herdr pane zoom [|--pane ID|--current] [--toggle|--on|--off]
herdr pane rename  <label>|--clear
herdr pane split [|--pane ID|--current] --direction right|down [--ratio FLOAT] [--cwd PATH] [--env KEY=VALUE] [--focus] [--no-focus]
herdr pane swap --direction left|right|up|down [--pane ID|--current]
herdr pane swap --source-pane ID --target-pane ID
herdr pane move  --tab <tab_id> --split right|down [--target-pane ID] [--ratio FLOAT] [--focus|--no-focus]
herdr pane move  --new-tab [--workspace ID] [--label TEXT] [--focus|--no-focus]
herdr pane move  --new-workspace [--label TEXT] [--tab-label TEXT] [--focus|--no-focus]
herdr pane close

--current を受け付けるペインコマンドは、Herdr ペイン内から実行した場合、呼び出し元の HERDR_PANE_ID を使います。pane split では、明示したペイン ID または --pane ID がそのペインを、--current が呼び出し元ペインを分割します。対象を省略すると UI でフォーカス中のペインを使います。分割レスポンスでは、新しいペイン ID は .result.pane.pane_id にあります。

pane move の後続コマンドには .result.move_result.pane.pane_id を使います。別ワークスペースへの移動ではワークスペース修飾付きのペイン ID が変わり、以前の値は .result.move_result.previous_pane_id に残ります。実行中プロセスの HERDR_PANE_ID、HERDR_TAB_ID、HERDR_WORKSPACE_ID は起動時の値のままですが、Herdr は以前のペイン ID をそのターミナルの別名として保持するため、--current を使うペインコマンドは引き続き解決できます。ライブエージェント名もターミナルに追従します。

出力を読む:

bash
herdr pane read  [--source visible|recent|recent-unwrapped|detection] [--lines N] [--format text|ansi] [--ansi] [--raw]
herdr pane read  --source visible --ansi
herdr pane read  --source recent-unwrapped --lines 120

pane read は UTF-8 のターミナルテキストを直接出力します。デフォルトでは ANSI エスケープを除去し、ソースに装飾が含まれる場合は --format ansi または --ansi で保持します。detection ソースは常にプレーンテキストです。recent 系ソースでは、--lines N は折り返し解除の前に末尾の N 描画行を選び、省略時は 80 行です。visible と detection では、省略時にスナップショット全体を返し、指定時は改行で区切られた末尾 N 行を返します。agent read も同じ出力と行数の動作です。

入力を送る:

bash
herdr pane send-text  <text>
herdr pane send-keys  <key> [key ...]
herdr pane run  <command>

<key> は Herdr のキーコンボ構文を使います: a のような通常の印字可能キー、enter、tab、esc、backspace、left、right、up、down のような特殊キー、ctrl+h、control+j、alt+x、shift+tab のような修飾キーコード、f1 のようなファンクションキー、そして minus、plus、backtick のような名前付き記号です。レガシーな C-c と c-c は ctrl+c のエイリアスとして受け付けられます。

標準表記は esc ですが、escape も使えます。

pane run は現在の bracketed paste モードを尊重し、テキストと Enter をアトミックに送信します。コマンドには send-text + send-keys Enter よりこちらを使ってください。個別の送信操作は低レベルのままで、コマンドを送信しません。

カスタムフックからエージェント状態を報告する:

bash
herdr pane report-agent  \
  --source ID \
  --agent LABEL \
  --state idle|working|blocked|unknown \
  [--message TEXT] \
  [--seq N] \
  [--agent-session-id ID] \
  [--agent-session-path PATH]

herdr pane report-agent-session  \
  --source ID \
  --agent LABEL \
  [--seq N] \
  [--agent-session-id ID] \
  [--agent-session-path PATH] \
  [--session-start-source SOURCE]

herdr pane release-agent  \
  --source ID \
  --agent LABEL \
  [--seq N]

report-agent-session はライフサイクル状態を報告せずにネイティブセッション識別子を更新します。release-agent は、そのエージェントプロセスが終了したときに、そのソースのライフサイクル権限を終了します。

公式インテグレーションがネイティブセッション参照を報告している場合、pane get、pane list、agent get、agent list は読み取り専用の agent_session オブジェクトを含みます。ネイティブセッション参照が保存されていない場合、このフィールドは省略されます。

これらのコマンドは、ペインを制御しているフォアグラウンドプロセスの cwd を解決できる場合に foreground_cwd を含みます。既存の cwd フィールドは、ラベルと follow-cwd 挙動に使われるペイン/ワークスペースの cwd のままです。

意味的な状態を奪わずに、表示専用のペインメタデータを報告する:

bash
herdr pane report-metadata  \
  --source ID \
  [--agent LABEL] \
  [--applies-to-source ID] \
  [--title TEXT|--clear-title] \
  [--display-agent TEXT|--clear-display-agent] \
  [--state-label STATUS=TEXT] \
  [--clear-state-labels] \
  [--token NAME=VALUE] \
  [--clear-token NAME] \
  [--seq N] \
  [--ttl-ms N]

STATUS は idle、working、blocked、done、unknown のいずれかです。--agent と --applies-to-source は --title、--display-agent、--state-label だけを保護し、トークンパッチは保護しません。トークンのクリアまたは TTL の更新は報告側が管理します。表示名を変えるには --display-agent を使ってください。

メタデータのテキストは保存前に正規化されます。Herdr は前後の空白を取り除き、制御文字を除去し、--title、--display-agent、各 --state-label、トークンの値を 80 文字に制限します。正規化後に空になったトークン値は、そのキーをクリアします。

--token は名前付き表示値を設定し、--clear-token は削除します。指定しなかったトークンは変わりません。ペイントークンはエージェントサイドバー行で $name として、ワークスペーストークンはスペース行で使えます。TTL は、その呼び出しで更新した各トークンキーに個別に適用されます。

--source と --applies-to-source は 80 文字以下で、ASCII の英字、数字、コロン、ドット、アンダースコア、ハイフンのみを含められます。--ttl-ms はメタデータを自動失効させ、1 から 86400000 ミリ秒の間でなければなりません。置き換え・クリア・ペインまたはワークスペースのクローズまで残るべきメタデータでは省略してください。--seq により、Herdr は同じ --source からの古い報告を無視できます。古い報告は API には受理されますが、ペイン状態には無視されます。ペインまたはワークスペースが存続する間、シーケンス付きトークン報告を送れる異なるソースは最大 32 個で、クリアや失効でもその枠は解放されません。

エージェント

ペインとエージェントの使い分けや一連の連携例は、エージェント自動化 を参照してください。

bash
herdr agent list
herdr agent get <target>
herdr agent read <target> [--source visible|recent|recent-unwrapped|detection] [--lines N] [--format text|ansi] [--ansi]
herdr agent send-keys <target> <key> [key ...]
herdr agent prompt <target> <text> [--wait] [--until STATUS]... [--timeout MS]
herdr agent rename <target> <name>|--clear
herdr agent focus <target>
herdr agent wait <target> [--until STATUS]... [--timeout MS]
herdr agent attach <target> [--takeover]
herdr agent start <name> --kind KIND --pane ID [--timeout MS] [-- <agent-args...>]
herdr agent explain <target> [--json|--verbose]
herdr agent explain --file PATH --agent LABEL [--json|--verbose]

エージェントターゲットは、一意なライブエージェント名、または現在そのエージェントをホストしているペイン ID です。ターミナル ID とエージェント kind のラベルだけでは指定できません。agent start で起動するエージェントには名前が必須で、手動で起動したエージェントは名前なしのままペイン ID で指定します。

agent start は既存の利用可能なシェルペインを起動対象にします。対話シェル自身がフォアグラウンドを所有し、フォアグラウンドのコマンド、エディタ、エージェントが動いていない必要があります。トポロジーは別に作成します。名前はライブエージェント間で一意で、[a-z][a-z0-9_-]{0,31} に一致する必要があります。対応する kind は pi、claude、codex、gemini、cursor、devin、agy、cline、omp、mastracode、opencode、copilot、kimi、kiro、droid、amp、grok、hermes、kilo、qodercli、maki です。名前は現在のペイン占有者に属し、そのエージェントの終了、release、置換で消えます。一時的に検出できないだけでは消えません。

start は、期待したエージェントが同じターミナルを所有し、対話入力の準備ができてから返ります。デフォルトの起動タイムアウトは 30000 ミリ秒で、明示する値は 3000 より大きく 300000 以下でなければなりません。

agent prompt は現在の bracketed paste モードを尊重し、working 中でもテキストとエンコード済み Enter をアトミックに送信します。--wait を使う場合、non-working 状態から送信したプロンプトは 5 秒以内に観測可能なライフサイクル変化を起こす必要があり、変化がなければ Herdr は agent_prompt_stalled を返します。呼び出し側のタイムアウトが 5 秒以下なら、通常の timeout エラーを維持します。活動を観測した後、要求された安定状態を待ちます。個々のターンは追跡しません。すでに working の場合、進行中ターンの完了が待機を満たすことがあります。--until は一致状態を絞り込み、--wait なしでは拒否されます。単独の agent wait は現在の状態が一致すれば即座に返ります。どちらもデフォルトは idle、done、blocked です。

idle は入力待ちで、そのタブがフォーカス中の Herdr UI ですでに表示済みの状態です。done は同じ基礎的な idle 状態ですが、表示していないバックグラウンド作業が完了したときに使われます。そのタブをフォーカスするか pane focus / agent focus で対象にすると表示済みになりますが、CLI で読み取るだけでは変わりません。blocked は承認または質問 UI を Herdr が認識した状態です。unknown はエージェントが存在するものの確実に分類できない状態で、作業の成功を意味しません。

agent send-keys は enter、up、esc、ctrl+c などの論理キーを送ります。Herdr は 1 バイトも書き込む前に全キーを検証します。agent read は解決されたターミナルストリームを読み、agent rename は検出済みエージェントに名前を付けます。

agent explain は、スクリーン検出が使うのと同じ下部バッファの検出スナップショットの分類を実行中のサーバーに依頼します。そのためライブの出力はサーバーのアクティブなマニフェストキャッシュを反映します。これは agent.explain ソケットメソッドを使うので、Herdr のアップグレード後にライブ explain を使う前に、サーバーを再起動するか更新済みサーバーへハンドオフしてください。保存済みフィクスチャをローカルで説明するには --file PATH --agent LABEL を使います。デフォルトの出力には、エージェント、最終状態、マニフェストのソースとバージョン、リージョンの証拠付きでマッチしたルール、そしてフォールバック・スキップ・警告の理由が表示されます。--verbose を付けると、可視の証拠フラグ、キャッシュされたリモートバージョン、ローカルオーバーライドのシャドーイング、リモート更新状況、マッチャーとリージョンの証拠付きの評価済みルール全リストが表示されます。issue の報告やテストには --json を付けてください。

通常のターミナル、サーバー、テスト、シェル、低レベルなターミナル制御には pane send-text、pane send-keys、pane run、terminal attach を使ってください。Enter 付きでコマンドを送信したいときは pane run を使います。

ダイレクトターミナルアタッチ

bash
herdr terminal attach <terminal_id> [--takeover]
herdr terminal title set <title>
herdr terminal title clear

ダイレクトアタッチからは ctrl+b q でデタッチします。リテラルの ctrl+b は ctrl+b ctrl+b で送ります。
terminal title clear は Herdr のデフォルトの外側ターミナルウィンドウタイトルを復元します。

出力待機

ペインの出力を待つ:

bash
herdr pane wait-output  (--match <text> | --regex ) [--source visible|recent|recent-unwrapped] [--lines N] [--timeout MS] [--raw]

通常のコマンドやサーバーには pane wait-output を使います。コーディングエージェントには agent wait を使います。

pane wait-output は選択したスナップショットを最初にすぐ検索するため、すでに存在する出力も一致します。デフォルトのソース名は recent で、直近 80 行の描画済みターミナル行を折り返し前の出力として扱います。--lines でその行数を変更できます。--match は 1 行内のリテラル部分文字列を検索し、--regex は Rust の正規表現構文で 1 行ずつ一致します。

pane wait-output、agent wait、agent prompt --wait は、--timeout を省略すると無期限に待ちます。タイムアウトまたはサーバーエラーは JSON として stderr に出力され、終了コード 1 になります。CLI 使用法のエラーは終了コード 2 です。

インテグレーション

bash
herdr integration install pi
herdr integration install omp
herdr integration install claude
herdr integration install codex
herdr integration install copilot
herdr integration install devin
herdr integration install droid
herdr integration install kimi
herdr integration install opencode
herdr integration install kilo
herdr integration install hermes
herdr integration install mastracode
herdr integration install qodercli
herdr integration install cursor
herdr integration uninstall pi
herdr integration uninstall omp
herdr integration uninstall claude
herdr integration uninstall codex
herdr integration uninstall copilot
herdr integration uninstall devin
herdr integration uninstall droid
herdr integration uninstall kimi
herdr integration uninstall opencode
herdr integration uninstall kilo
herdr integration uninstall hermes
herdr integration uninstall mastracode
herdr integration uninstall qodercli
herdr integration uninstall cursor
herdr integration status [--outdated-only]

プラグイン

プラグインコマンドは、ローカル実行型ワークフロープラグインをインストールして実行します。プラグインはマニフェストとプロセス外コマンドの組み合わせです。ホスト側の面は Herdr が、実装言語はプラグインが担います。

プラグインのインストール、一覧、削除:

bash
herdr plugin install <owner>/<repo>[/subdir...] [--ref REF] [--yes]
herdr plugin list [--plugin ID] [--json]
herdr plugin uninstall 
herdr plugin enable 
herdr plugin disable

plugin install は ogulcancelik/herdr-plugin-examples/worktree-bootstrap のような GitHub 省略記法のみを受け付けます。git を使い、対話的なターミナルでは信頼プレビューを表示し、サポートされるマニフェストのビルドコマンドを実行し、GitHub インストールを Herdr 管理のディレクトリに保存します。非対話的なインストールには --yes を使ってください。GitHub 管理プラグインの再インストールは、その管理チェックアウトを置き換えます。ローカルにリンクされたプラグインへの上書きインストールは拒否されます。プラグインのマニフェストは min_herdr_version を宣言しなければならず、プラグインがより新しい Herdr バイナリを要求する場合、install と link は失敗します。plugin list はデフォルトで人間可読です。生の API レスポンスが欲しいときは --json を渡してください。

ローカル開発:

bash
herdr plugin link  [--disabled]
herdr plugin unlink

plugin link は herdr-plugin.toml を含むプラグインディレクトリ、またはマニフェストへの直接パスを受け付けます。ローカルチェックアウトからプラグインを作成・テストしている間はこれが正しいコマンドです。plugin unlink はプラグインの登録を解除し、ファイルには触れません。plugin uninstall はプラグインの登録を解除し、Herdr 管理の GitHub チェックアウトファイルも削除します。GitHub インストールの場合、uninstall はプラグイン id と、install で使うのと同じ owner/repo[/subdir...] 省略記法の両方を受け付けます。アクション、イベントフック、ペイン、リンクハンドラーはマニフェストで宣言します。ランタイムでのアクション登録は v1 の範囲外です。

設定ディレクトリ:

bash
herdr plugin config-dir

plugin config-dir はプラグインの設定ディレクトリを表示し、必要なら作成します (レガシーなプラグイン設定の場所が存在すれば、そこから初期内容を移します)。セットアップドキュメントやシェルスクリプトで、管理されたプラグインチェックアウトとは別の、.env ファイルなどユーザーが編集する設定のための安定したパスをユーザーに示すのに使ってください。

アクション:

bash
herdr plugin action list [--plugin ID]
herdr plugin action invoke <action_id> [--plugin ID]

plugin action invoke は、インストール済みで有効かつプラットフォーム互換のプラグインアクションのマニフェストコマンドを起動し、開始されたコマンドのログレコードを JSON レスポンスに表示します。複数のプラグインが同じアクション id を使っている場合は、修飾されたアクション id (plugin.id.action) を使ってください。ローカルのアクション id はドットを含められないため、プラグイン id がドットを含んでいても修飾 id は曖昧になりません。

ログ:

bash
herdr plugin log list [--plugin ID] [--limit N]

管理されたターミナルペイン:

bash
herdr plugin pane open --plugin ID --entrypoint ID [--placement overlay|popup|split|tab|zoomed] [--width SIZE] [--height SIZE] [--workspace ID] [--target-pane PANE] [--direction right|down] [--cwd PATH] [--env KEY=VALUE] [--focus|--no-focus]
herdr plugin pane focus 
herdr plugin pane close

plugin pane open は、プラグインがリンクされ、有効で、現在のプラットフォームと互換であることを要求します。マニフェストで宣言された [[panes]] コマンドを Herdr 管理のターミナルペインとして起動します。マニフェストのデフォルトは overlay で、アクティブなペインの上に一時的なズームオーバーレイを開きます。分割、新しいタブ、ズームされたペイン、またはタブレイアウトを変更しないセッションモーダルな popup として開くこともできます。--width と --height は、外側のポップアップ寸法をターミナルセル数または 80% のような割合で指定します。省略した寸法はデフォルトでターミナルの半分になり、小さすぎる値はポップアップの最小サイズに制限されます。ポップアップは Herdr ペインではなく、HERDR_PANE_ID を受け取らず、pane API やエージェント API に参加しません。ターミナル以外のネイティブなプラグインペインは今後の対応面です。

--env KEY=VALUE はプロセスを起動するコマンドで繰り返し指定できます。新しく起動されるプロセスにのみ適用されます。HERDR_SOCKET_PATH、HERDR_BIN_PATH、HERDR_ENV、HERDR_WORKSPACE_ID、HERDR_TAB_ID、HERDR_PANE_ID、HERDR_PLUGIN_ID、HERDR_PLUGIN_ROOT、HERDR_PLUGIN_CONFIG_DIR、HERDR_PLUGIN_STATE_DIR、HERDR_PLUGIN_ENTRYPOINT_ID、HERDR_PLUGIN_CONTEXT_JSON のような Herdr 管理の変数は、呼び出し側が与えた環境変数と衝突した場合も権威を保ちます。

読み取りソース

ソース 意味
visible 現在レンダリングされている画面。UI のフィードバックループに最適。
recent ターミナルの折り返しを含む直近のスクロールバック。
recent-unwrapped ソフト折り返しなしの直近のスクロールバック。ログに最適。
detection エージェントのスクリーン検出が使う下部バッファのスナップショット。

この表は読み取り時の意味です。pane wait-output に限り、recent と recent-unwrapped はどちらも recent の折り返し前スナップショットを検索し、デフォルト表記は recent です。

環境変数

変数 目的
HERDR_CONFIG_PATH 設定ファイルパスを上書きする。
HERDR_SESSION CLI コマンドの名前付きセッションを選択する。
HERDR_SOCKET_PATH 低レベルなソケットパスの上書き。
HERDR_ENV Herdr 管理のペインプロセス内で 1 に設定される。
HERDR_PANE_ID 実行中ペインプロセスの公開ペイン id。
HERDR_TAB_ID 実行中ペインプロセスの公開タブ id。
HERDR_WORKSPACE_ID 実行中ペインプロセスの公開ワークスペース id。
HERDR_LOG ログフィルターを設定する。例: HERDR_LOG=herdr=debug。
HERDR_DISABLE_SOUND サウンド通知が有効でも音の再生を無効にする。

File: docs/versions/0.7.5/website/src/content/docs/ja/concepts.mdx


title: コンセプト

Herdr はターミナルワークスペースマネージャーです。実際のターミナルプロセスを動かし続け、その周りに構造を加えます。

ワークスペース

ワークスペースは最上位のプロジェクトコンテナです。リポジトリ、タスク、調査ごとにひとつのワークスペースを使ってください。

ワークスペースはタブとペインを所有します。サイドバーの状態は内部のエージェントから集約されるので、どのプロジェクトが注意を必要としているかが分かります。

タブ

タブはワークスペース内のレイアウトです。agents、logs、server、review のようにビューを分けるために使います。

タブは CLI とソケット API からアドレス指定できます。

ペイン

ペインは実際のターミナルです。Herdr はターミナル出力を描画し、入力をプロセスに送り返し、クライアントのデタッチ後もペインを維持します。

ペインは右または下に分割できます。手動での名前変更、CLI からの読み取り、入力の送信、クローズができます。

マウス UI

Herdr はマウスネイティブです。ペイン、タブ、ワークスペース、エージェントをクリックできます。分割境界のドラッグ、テキスト選択、右クリックメニューも使えます。以下で説明する操作はすべてマウスでも行えます。キーボードバインドは任意のレイヤーです。

キーボードのみで操作したい場合や、Herdr にマウス入力をキャプチャさせたくない場合は、マウスキャプチャを無効にしてください:

toml
[ui]
mouse_capture = false

エージェント

エージェントは、Herdr がペイン内で認識するプロセスです。Herdr はフォアグラウンドプロセス、スクリーンマニフェスト、任意のインテグレーションからエージェントを検出します。

エージェントの状態は次のとおりです:

状態 意味
blocked エージェントが入力、承認、または判断を必要としている。
working エージェントが実行中。
done エージェントが完了し、まだ確認されていない。
idle エージェントが完了または待機していて、確認済み。
unknown Herdr が状態を確信を持って分類できない。

セッション

セッションは永続的な Herdr サーバーの名前空間です。デフォルトの herdr コマンドはデフォルトセッションにアタッチします。

名前付きセッションは独立したランタイム名前空間です:

bash
herdr session list
herdr session attach work
herdr session attach side-project

まずはワークスペースを使ってください。ペイン、ソケット、永続化されたランタイム状態を完全に分離する必要があるときに名前付きセッションを使います。

クライアントとサーバー

デフォルトでは、Herdr はバックグラウンドサーバーと、それにアタッチした 1 つ以上のクライアントとして動作します。

サーバーはペインとプロセス状態を所有します。クライアントはそのサーバーにアタッチしたターミナル UI です。

ctrl+b q でクライアントをデタッチします。サーバーとエージェントは動き続けます。

セッションを終了してそのペインを停止したい場合は、サーバーを停止します:

bash
herdr server stop

モード

Herdr にはターミナルモード、プレフィックスモード、ナビゲートモードがあります。

ターミナルモードはフォーカス中のペインにキーを送ります。プレフィックスモードはプレフィックスキーの後に Herdr のアクションをひとつ待ちます。ナビゲートモードは常駐のワークスペースナビゲーション画面です。

プレフィックスキー (デフォルト ctrl+b) を押してから、新しいタブなら c、ワークスペースナビゲーションなら w のようにアクションキーを押します。プレフィックスの考え方が初めてならキーボードを参照してください。


File: docs/versions/0.7.5/website/src/content/docs/ja/config-reference.mdx


title: 設定リファレンス

import ConfigReference from '../../../components/ConfigReference.astro';

Herdr が config.toml から読み取る正規キーを、フラットに一覧して絞り込めます。
ガイド付きの設定手順や各オプションの背景は設定を参照してください。

コメント付きのデフォルト設定全体はいつでも出力できます:

bash
herdr --default-config

カスタムコマンドバインディング([[keys.command]])はユーザー定義のテーブルのため、
ここではキーごとに掲載していません。
カスタムコマンドキーバインドを参照してください。

各キーの説明は現時点では英語です。


File: docs/versions/0.7.5/website/src/content/docs/ja/configuration.mdx


title: 設定

Herdr は設定ファイルなしで動作します。キー、テーマ、サイドバーのレイアウト、通知、高度な挙動をカスタマイズしたい場合に追加してください。

設定やキーバインドを探していますか?すべてのキー、型、デフォルト値、許容値は設定リファレンスで検索できます。このページでは、セットアップ、一般的なレシピ、リファレンスの一行だけでは説明しきれない設定構造を中心に説明します。

設定ファイル

Herdr は次の場所から設定を読み込みます:

text
Linux and macOS: ~/.config/herdr/config.toml
Windows:          %APPDATA%\herdr\config.toml

システム上で解決された設定ファイルのパスは、herdr --help で確認できます。

完全なデフォルト設定を表示します:

bash
herdr --default-config

完全な出発点が欲しい場合は、これを設定として保存してください:

bash
herdr --default-config > ~/.config/herdr/config.toml

設定値が無効な場合、Herdr は安全なデフォルト値にフォールバックし、起動時に警告を表示します。

onboarding が存在しないか true の場合、Herdr は初回セットアップを表示します。オンボーディングから先へ進むと onboarding = false が書き込まれ、設定のインテグレーションタブが開きます。セットアップ後にこのフローをスキップしたい場合に設定してください。

toml
onboarding = false

設定のリロード

config.toml を編集した後、実行中のサーバーをリロードします:

bash
herdr server reload-config

Herdr のグローバルメニューを開いて reload config を選ぶこともできます。

リロードは、ペインを再起動せずにほとんどの UI 設定を適用します。起動時のみの設定には引き続き再起動が必要です。

ターミナルのデフォルト

新しく作成される対話型ペインに Herdr が使う実行ファイルを設定します:

toml
[terminal]
default_shell = "nu"

未設定または空の場合、Herdr は $SHELL、次に Unix では /bin/sh、Windows では PowerShell を使います。これは実行ファイル名またはパスであり、シェルのコマンドラインではありません。既存のペインは再作成されるまで現在のシェルを保ちます。カスタムコマンドキーバインドの文字列は、Unix ではペインコマンドに /bin/sh -c、デタッチコマンドに /bin/sh -lc を通して実行され、Windows では cmd.exe /d /c を通して実行されます。

新しく作成される対話型ペインのシェルの起動方法を設定します:

toml
[terminal]
shell_mode = "auto"

shell_mode = "auto" は macOS でログインシェルを起動するため、/usr/libexec/path_helper のようなログイン時のみの PATH 設定や Homebrew のシェル初期化が新しいペインで実行されます。他のプラットフォームでは、既存の非ログインシェルの挙動を保ちます。ログインシェルでの起動を強制するには "login" を、無効にするには "non_login" を使ってください。コマンドペイン、デタッチされたカスタムコマンドキーバインド、明示的な argv 起動は、既存のコマンド実行経路を保ちます。

新しいペイン、タブ、ワークスペースの作業ディレクトリポリシーを設定します:

toml
[terminal]
new_cwd = "follow"

new_cwd = "follow" はデフォルトの挙動を保ち、元のペインまたはワークスペースを継承します。元のワークスペースがない場合、Herdr は $HOME で起動します。常に $HOME で起動するには "home" を、Herdr のプロセスディレクトリを使うには "current" を、または "~/Projects" のような固定パスを使ってください。CLI またはソケット API から明示的に指定された --cwd の値は引き続き優先されます。

Worktree

サイドバーから作成される Git worktree チェックアウトに Herdr が使うルートディレクトリを設定します:

toml
[worktrees]
directory = "~/.herdr/worktrees"

Herdr は <directory>/<repo>/ の下にチェックアウトを作成します。隣接ディレクトリ方式のチェックアウトには、~/Projects/herdr-worktrees のようなディレクトリを設定してください。相対値は、アプリが設定を適用するときに絶対パスへ解決されます。

worktree アクションは Git ワークスペースの行から使えます。New worktree はチェックアウトを作成し、入力したブランチがすでに存在する場合は既存のローカルブランチをチェックアウトし、存在しない場合はブランチを作成します。その後、新しい Herdr ワークスペースとして開き、元のワークスペースの下にグループ化します。Open worktree... はそのリポジトリにある既存の Git worktree チェックアウトを一覧表示します。すでに開いているチェックアウトを選ぶとそこへフォーカスし、閉じているチェックアウトを選ぶと同じグループで開きます。

グループ化された worktree も通常の Herdr ワークスペースと同様に動作します。フォーカス、名前変更、クローズができ、それぞれ独自のタブとペインを持ちます。親の行は元のワークスペースです。親の行を閉じると Herdr のグループ全体が閉じますが、チェックアウトのフォルダーやブランチは削除されません。

worktree チェックアウトの削除は明示的に行います。グループ化された子ワークスペースで Delete worktree checkout... を使うと git worktree remove が実行されます。Herdr はまず Git に安全な削除を要求します。チェックアウトに変更済みまたは未追跡のファイルがあり Git が拒否した場合、Herdr は強制削除を実行する前にもう一度確認します。ブランチは削除されません。

リモートアタッチ

リモートアタッチは、デフォルトで一時的なキープアライブと接続再利用のフォールバックを使って SSH 接続を管理します。

toml
[remote]
manage_ssh_config = true

有効な場合、herdr --remote は最初に ~/.ssh/config と /etc/ssh/ssh_config を取り込み、その後にフォールバックの ServerAliveInterval と ServerAliveCountMax の値を加えた、プライベートな一時 SSH 設定を書き込みます。ユーザー自身のキープアライブ設定が優先されます。Herdr は、最初に認証した接続を再利用するため、アタッチごとにプライベートな OpenSSH コントロールソケットも使います。Herdr が生成した設定やコントロールソケットを使わず、通常の ssh でリモートアタッチを実行するには manage_ssh_config = false を設定してください。

キーバインド

プレフィックスの導入ガイドと検証済みのプレフィックスなし構成については、キーボードを参照してください。

Herdr には tmux に似たプレフィックスモードがあります。デフォルトのプレフィックスは ctrl+b です。キーバインド文字列は明示的です。prefix+n は設定されたプレフィックスを押してから n を押すという意味で、ctrl+alt+n はターミナルモードの直接ショートカットです。

小さなキーバインドの上書きは次のようになります:

toml
[keys]
prefix = "ctrl+b"
goto = "prefix+g"
new_tab = "prefix+c"
next_tab = "prefix+n"
previous_tab = "prefix+p"
focus_pane_left = "prefix+h"
navigate_workspace_down = "j"
navigate_pane_down = "ctrl+j"
split_horizontal = "prefix+minus"

デフォルトのキーマップはプレフィックス優先なので、Herdr がシェル、エディタ、tmux、ターミナルアプリから入力を奪うことはありません。設定リファレンスで keys. を検索すると、すべてのアクションとデフォルトのバインドを確認できます。prefix+? で開くアプリ内ヘルプパネルには、現在有効なバインドが表示されます。

1 つのアクションに複数のショートカットが必要な場合、バインドを配列にすることもできます:

toml
[keys]
next_tab = ["prefix+n", "ctrl+alt+]"]

任意のアクションはデフォルトでは未設定です。プレフィックスモードの挙動には prefix+ でバインドし、意図的に直接ショートカットにする場合は明示的な修飾キーコードを使ってください。

キー文字列には、通常のキー、ctrl+a、shift+n、alt+1、cmd+k のような修飾キーの組み合わせ、enter、tab、esc、left、right、up、down のような特殊キーが使えます。minus、comma、ampersand、plus、backtick のような名前付き記号も使えます。n のような通常の印字可能キーの直接バインドは入力を妨げるため危険です。意図的に直接バインドするのでなければ prefix+n を使ってください。navigate_workspace_* と navigate_pane_* のフィールドはナビゲートモード専用で、j や k のような通常のキーを使えます。これらには prefix+、esc、enter、tab、shift+tab、left、right、修飾なしの 1 から 9 は使えません。左右の矢印キーは、左ペインと右ペインへのナビゲーションの恒久的なエイリアスです。これらのナビゲートモードショートカットは、focus_pane_down = "prefix+j" のような一般アクションのバインドから独立しています。両方に同じキーが使われている場合、ナビゲートモードが開いている間はナビゲートモードのショートカットが優先されます。Alt、Cmd/Super、修飾キー付き記号は、ターミナルと tmux の設定に依存します。

古いカスタムキーバインドを使っていて新しいデフォルトが欲しい場合は、herdr config reset-keys を実行してください。Herdr は config.toml をバックアップし、[keys] と [[keys.command]] を削除し、再起動または herdr server reload-config の後に組み込みの v2 デフォルトを使います。

インデックス付きジャンプ

インデックス付きキーバインドは、通常のキーバインドフィールドで 1..9 を使います:

toml
[keys]
switch_tab = "prefix+1..9"
switch_workspace = "prefix+shift+1..9"
focus_agent = "prefix+alt+1..9"

レガシーな [keys.indexed] テーブルは互換性のために引き続きパースされますが、新しい設定では明示的なアクションフィールドを使ってください。

カスタムコマンドキーバインド

カスタムコマンドも同じキーバインド構文を使います。

toml
[[keys.command]]
key = "prefix+alt+g"
type = "popup"
command = "lazygit"
description = "run lazygit"
width = "80%"
height = "80%"

type = "popup" は、タブレイアウトを変更せずにセッションモーダルなポップアップを開きます。
ポップアップは、コマンドが終了するまで Escape を含むすべてのターミナル入力を受け取ります。
width と height は任意です。省略するとデフォルトの半分のサイズになり、数値ならターミナルセル数、"80%" のような文字列ならターミナル領域に対する割合を指定できます。
寸法にはポップアップの枠が含まれ、小さすぎる値は最小サイズに制限されます。
ポップアップコマンドは HERDR_PANE_ID を受け取りません。背後のタイルペインには HERDR_ACTIVE_PANE_ID を使ってください。

Unix と macOS では、分割やタブを追加せずに一時的なターミナルを開くこともできます:

toml
[[keys.command]]
key = "prefix+t"
type = "popup"
command = "exec \"${SHELL:-sh}\""
description = "open scratch terminal"
width = "80%"
height = "80%"

Windows では、代わりに command = "powershell.exe -NoLogo" のようなシェルコマンドを使ってください。
シェルを終了するとポップアップが閉じ、タイル表示に戻ります。

type = "pane" は一時的なペインを開き、コマンドの終了時に閉じます。

type = "shell" はバックグラウンドでデタッチ実行します。

type = "plugin_action" はインストール済みプラグインのアクション id を呼び出します。アクション id がグローバルに一意でない場合は修飾 id を使ってください:

toml
[[keys.command]]
key = "prefix+l"
type = "plugin_action"
command = "example.layout.apply"
description = "apply layout"

任意で description を指定できます。指定すると、キーバインドヘルプパネル(prefix+? で開く)に、デフォルトの 'custom command' ラベルの代わりに表示されます。

カスタムコマンドは、利用可能な場合に HERDR_SOCKET_PATH、HERDR_BIN_PATH、HERDR_ACTIVE_WORKSPACE_ID、HERDR_ACTIVE_TAB_ID、HERDR_ACTIVE_PANE_ID、HERDR_ACTIVE_PANE_CWD を受け取ります。Herdr が検出できる場合、シェルコマンドはフォーカス中のペインの作業ディレクトリから実行されます。

Windows では、カスタムコマンド文字列に cmd.exe /d /c が使われるため、環境変数には %HERDR_BIN_PATH% 構文を使います。PowerShell 構文を実行するには、たとえば powershell.exe -NoProfile -Command "..." のように明示的に呼び出してください。

テーマ

組み込みテーマを選びます:

toml
[theme]
name = "catppuccin"

すべての組み込みテーマは、設定リファレンスで theme.name を検索してください。Herdr の UI 色をホストターミナルの ANSI パレットに従わせたいときは terminal を使ってください。

ホストターミナルがライト/ダークの外観変更を報告したときに、Herdr が自身の UI テーマを切り替えるようにするには、テーマの自動切り替えを有効にします:

toml
[theme]
name = "catppuccin"
auto_switch = true
light_name = "catppuccin-latte"
dark_name = "catppuccin"

auto_switch のデフォルトは false なので、既存のテーマ設定は手動の挙動を保ちます。light_name または dark_name を省略すると、設定された name に対応する組み込みの姉妹テーマが存在する場合はそれを使います。たとえば tokyo-night/tokyo-night-day や gruvbox/gruvbox-light です。設定画面でテーマを手動選択すると auto_switch は無効になります。

個々の色を上書きできます:

toml
[theme.custom]
panel_bg = "reset"
accent = "#a6e3a1"
green = "#a6e3a1"
blue = "#89b4fa"
red = "#f38ba8"
yellow = "#f9e2af"

色の値には、hex、名前付きの色、rgb(r,g,b)、または reset、default、none、transparent のようなリセットエイリアスが使えます。

UI とサイドバー

サイドバーは Herdr のメインダッシュボードです。サイズ、折りたたみモード、Agent パネルの並び順、マウスの挙動、ペインの境界線、その他の表示設定については、設定リファレンスで ui. を検索してください。

サイドバーの行レイアウト

展開されたデスクトップサイドバーでは、rows の各内側の配列が 1 行として描画されます。完全なデフォルトレイアウトは次のとおりです:

toml
[ui.sidebar.agents]
row_gap = 0
rows = [
  ["state_icon", "workspace", "tab"],
  ["agent"],
]

[ui.sidebar.spaces]
row_gap = 0
rows = [
  ["state_icon", "workspace"],
  ["branch", "git_status"],
]

Agent の行では、次の組み込みトークンを使えます:

  • state_icon — エージェントの意味的な状態を示す色付きアイコン。
  • state_text — idle、working、blocked、done、unknown。報告された表示ラベルがある場合はそれも含みます。
  • workspace — ワークスペース名。
  • tab — 利用可能な場合はタブ名。
  • pane — 利用可能な場合はペイン名。
  • agent — 検出または報告されたエージェントの表示名。
  • terminal_title — 安全性のための正規化後の最新の OSC 0/2 ターミナルタイトル。
  • terminal_title_stripped — 認識された先頭のアクティビティまたはスピナーのグリフ 1 つと、それに続く空白を除去したターミナルタイトル。
  • $name — name という名前のカスタムペインメタデータ。

Space の行では、次の組み込みトークンを使えます:

  • state_icon — Space 内で集約されたエージェント状態を示す色付きアイコン。
  • state_text — Space 内で集約されたエージェント状態のテキスト。
  • workspace — ワークスペース名。
  • branch — 利用可能な場合は Git ブランチ。
  • git_status — 0 でない場合は Git の ahead と behind の件数。
  • $name — name という名前のカスタムワークスペースメタデータ。

トークンは設定された順序で描画されます。Herdr は通常、隣接する値を · で区切り、state_icon の後には空白を 1 つ入れます。値がない場合、その値と区切りは表示されません。すべてのトークンに値がない行は表示されません。各レイアウトは最大 16 行、各行は最大 16 トークンです。

トークンエントリにはインラインのスタイルテーブルも使えます:

toml
[ui.sidebar.agents]
rows = [
  ["state_icon", { token = "workspace", bold = false }, "tab"],
  [{ token = "$summary", fg = "#89b4fa", bold = true, dim = false }],
]

fg は厳密な #RGB または #RRGGBB、bold と dim は真偽値です。省略したフィールドはコンテキストのスタイルを保持し、明示的な false はその修飾を解除します。スタイルは 1 つの出現箇所だけに適用されます。fg を指定した git_status では、既定の緑/赤ではなく ahead と behind の両方が同じ色になります。区切りと行の背景は変更されません。

row_gap は、Agent パネルと Space パネルごとに、エントリ間の空白行数を指定します。デフォルトは 0 で、エントリを詰めて表示します。以前の間隔に戻すには 1 に設定します。rows で定義したコンテンツ行の間隔には影響しません。連続するインデントされた worktree の子は、1 つの Space グループとして詰めて表示されます。

既知のエージェントについて Agent の完全なレイアウトを上書きするには、rows_by_agent を使います:

toml
[ui.sidebar.agents]
rows = [
  ["state_icon", "agent", "state_text"],
  ["workspace", "tab"],
]

[ui.sidebar.agents.rows_by_agent]
claude = [
  ["state_icon", "agent", "state_text"],
  ["terminal_title_stripped"],
  ["workspace", "tab"],
]

上書きは rows を置き換えるもので、拡張するものではありません。上書きのキーには、claude、codex、pi のような大文字と小文字を区別する正規エージェント ID を使います。claude-code のような検出エイリアスは使えません。カスタム報告されたエージェントを含め、上書きがないエージェントには rows が使われます。

カスタム $name トークンは動的な値であり、リテラルテキストではありません。トークンをレイアウトに追加してから、スクリプトまたはプラグインで値を報告します:

toml
[ui.sidebar.agents]
rows = [
  ["state_icon", "agent", "$model"],
  ["$summary"],
  ["workspace", "tab"],
]
bash
herdr pane report-metadata  \
  --source my-agent-hook \
  --token model=opus \
  --token summary="reviewing authentication"

カスタム Space トークンには、同じ方法で herdr workspace report-metadata を使います。報告されていないカスタムトークンは表示されません。

メタデータの報告元が提供できるのは値だけで、スタイルはローカルのサイドバー設定で管理します。上限、クリア、シーケンス、有効期限については、CLI リファレンス: report metadataを参照してください。

サイドバーの行設定は、展開されたデスクトップサイドバーにだけ適用されます。折りたたみ表示とモバイル表示はコンパクトなレイアウトを保ちます。

通知

Herdr は、バックグラウンドのエージェントが完了したり入力を必要としたりしたときに通知できます:

toml
[ui.toast]
delivery = "herdr"
delay_seconds = 1

[ui.toast.herdr]
position = "bottom-right"

アプリ内トーストには herdr、SSH 越しでも使いやすい外側のターミナル通知には terminal、ローカル OS の通知サービスには system、ポップアップを無効にするには off を選びます。Herdr はアクティブなタブのポップアップを抑制します。位置、遅延の挙動、クリップボードのフィードバック設定については、設定リファレンスで ui.toast を検索してください。

サウンド

サウンド通知はローカルの Herdr クライアントで再生されます。カスタムサウンドは mp3 ファイルでなければなりません。相対パスは設定ファイルのディレクトリから解決されます。

toml
[ui.sound]
path = "sounds/notification.mp3"
done_path = "sounds/done.mp3"
request_path = "sounds/request.mp3"

path はすべてのサウンド通知に 1 つの音を設定します。done_path と request_path は、完了音と入力要求音だけを上書きします。

エージェント別のサウンド上書きには default、on、off を指定できます。キーには claude、codex、devin、droid のような検出されたエージェントラベルを使います。Droid はデフォルトでミュートされています。

toml
[ui.sound.agents]
droid = "off"
claude = "on"

高度な設定

スクロールバックの上限、ネストされた起動、その他の高度な設定や実験的設定については、設定リファレンスを検索してください。ペイン画面履歴を有効にする前に、セッション状態と復元を参照してください。このガイドでは、ペインの内容を保存する場合のセキュリティ上のトレードオフを説明しています。

Kitty graphics

アタッチされたローカルクライアントでの Kitty graphics の描画は実験的機能で、デフォルトでは無効です:

toml
[experimental]
kitty_graphics = true

ターミナルの画像表示をテストする場合にのみ有効にしてください。

Agent セッション復元

Herdr はデフォルトで、サーバーの再起動後に対応する Agent の会話を再開します:

toml
[session]
resume_agents_on_restore = true

公式インテグレーションからの有効なネイティブセッション参照を持つペインだけが再開できます。その他のペインは通常のシェルとして復元されます。対応する Agent と永続化の挙動については、セッション状態と復元を参照してください。

IME カーソルトラッキング

macOS では、ハードウェアカーソルを隠す AI Agent TUI によって、ネイティブ入力メソッドの変換候補ウィンドウがフォーカス中のペインを追跡できなくなることがあります。これらのペインでカーソルアンカーを表示するには、次のように設定します:

toml
[experimental]
reveal_hidden_cursor_for_cjk_ime = true
cjk_ime_agents = ["claude", "pi", "codex"]

cjk_ime_agents で対象を限定すると、関係のないアプリケーションに余分なハードウェアカーソルが表示されるのを避けられます。使用できる Agent 名とカーソル形状については、設定リファレンスでこれらのキーを検索してください。

プレフィックス入力ソースの切り替え

macOS では、プレフィックスコマンドとプレフィックスから起動したモードがアクティブな間、Herdr がシステムの ASCII 対応入力ソースへ一時的に切り替えるようにできます:

toml
[experimental]
switch_ascii_input_source_in_prefix = true

ターミナル入力に戻るかテキストフィールドに入ると、Herdr は以前の入力ソースを復元します。この設定は他のプラットフォームには影響しません。

環境変数

変数 目的
HERDR_CONFIG_PATH 設定ファイルのパスを上書きする。
HERDR_SESSION CLI コマンドで名前付きセッションを選択する。
HERDR_SOCKET_PATH 低レベルなソケットパスを上書きする。
HERDR_LOG ログフィルタリングを設定する。例: HERDR_LOG=herdr=debug。
HERDR_DISABLE_SOUND [ui.sound] enabled = true でも音の再生を無効にする。

ログ

ログは、起動時の警告、インテグレーションの状態、ソケット API の挙動を診断するときに役立ちます。

主なログファイル:

text
~/.config/herdr/herdr.log
~/.config/herdr/herdr-client.log
~/.config/herdr/herdr-server.log

ログは自動的にローテーションされます。問題を報告するときは、現在のログとローテーションされた関連ファイルを含めてください。


File: docs/versions/0.7.5/website/src/content/docs/ja/how-to-work.mdx


title: Herdr での作業の進め方

Herdr は作業がある場所で動かし、どこからでもアタッチします。

Herdr はバックグラウンドのセッションサーバーと、1 つ以上のターミナルクライアントで構成されます。ペインはサーバー内で動き続けます。クライアントはアタッチ、デタッチし、セッションを描画します。

ローカルでの作業

プロジェクトディレクトリから Herdr を起動します:

bash
herdr

Herdr はローカルのバックグラウンドセッションを自動的に起動するか、それにアタッチします。ソケットを管理する必要はありません。ペインの中でシェル、サーバー、テスト、エージェントを普段どおり実行してください。

ctrl+b q でクライアントをデタッチします。ペインは動き続けます。

あとで再アタッチします:

bash
herdr

セッションを終了してペインを停止したい場合は、サーバーを停止します:

bash
herdr server stop

通常の SSH 越しのリモート作業

コードと認証情報のあるマシンに SSH して、そこで Herdr を実行します:

bash
ssh you@server
herdr

これはターミナルマルチプレクサと同じように動作します。シェルはリモート、Herdr サーバーもリモート、エージェントとペインはリモートマシン上で動きます。ctrl+b q でデタッチして切断し、あとで SSH し直して再び herdr を実行してください。

すでに SSH シェルの中で作業している場合、スマートフォンやタブレットの SSH クライアントを使っている場合、あるいは最もシンプルな構成にしたい場合はこの方法を使ってください。

スマートフォンから作業する

Herdr のモバイルアプリや Web ダッシュボードは不要です。スマートフォンに任意の SSH クライアントを入れ、エージェントが動いているマシンに接続して、そこで Herdr を起動するだけです:

bash
ssh you@server
herdr

同じ永続 Herdr セッションがスマートフォンのターミナルに開きます。TUI は狭い画面に適応するので、SSH から離れることなくエージェントの確認、ワークスペースの切り替え、ペインのチェックができます。

iPhone では moshi のようなアプリがよく動作します。

text
<figcaption>SSH 越しのエージェントセッション</figcaption>
text
<figcaption>レスポンシブな切り替えメニュー</figcaption>

ローカルターミナルからのリモート作業

先にシェルを開かずに SSH 越しでアタッチします:

bash
herdr --remote workbox
herdr --remote ssh://you@server:2222

ローカルの Herdr はシンクライアントとして動作します。SSH 越しに接続し、リモートの Herdr サーバーを起動またはアタッチして、UI をローカルターミナルにストリーミングします。

リモートセッションをローカルのように感じたいときはこの方法を使ってください。クライアントは手元のマシンで動くので、画像クリップボードの貼り付けのようなローカルデスクトップ機能をリモートサーバーにブリッジできます。先に SSH してサーバー上で herdr を実行した場合、Herdr は完全にそのサーバー上で動くため、ローカルデスクトップのクリップボードは読めません。

繰り返し接続する相手は SSH config に登録しておきましょう:

text
Host workbox
  HostName server.example.com
  User you
  Port 2222

その後はこれでアタッチできます:

bash
herdr --remote workbox

どの方法を使うか

ローカル作業には herdr を使います。リモートシェル上で Herdr を tmux のように使いたいときや、スマートフォンの SSH クライアントを使っているときは ssh you@server してから herdr を使います。リモートセッション用のローカルシンクライアントが欲しいとき (ローカルクリップボードの画像貼り付けブリッジを含む) は herdr --remote <host> を使います。

リモートブートストラップの詳細、名前付きリモートセッション、カスタムバイナリ、ダイレクトターミナルアタッチ、--no-session については永続化とリモートアクセスを参照してください。


File: docs/versions/0.7.5/website/src/content/docs/ja/index.mdx


title: Herdr ドキュメント
template: splash
hero:
tagline: "Herdr のインストール、学習、設定。あなたに合ったパスから始めましょう — マルチプレクサの経験は不要です。"
image:
file: ../../../../public/assets/logo.svg
actions:
- text: Herdr をインストール
link: /ja/docs/install/
- text: クイックスタート
link: /ja/docs/quick-start/
variant: secondary


import { Card, CardGrid } from '@astrojs/starlight/components';

パスを選ぶ

ショートカットを覚えなくても始められます。Herdr はマウスファーストです。ペインをクリックし、境界をドラッグし、右クリックメニューから分割や切り替えができます。
text
[クイックスタート →](/ja/docs/quick-start/)
モデルはすでにご存じのとおりです。プレフィックスは `ctrl+b`、ペインは永続化され、デタッチと再アタッチは期待どおりに動作します。
text
[コンセプト →](/ja/docs/concepts/) · [キーバインド →](/ja/docs/configuration/#キーバインド)

またはエージェントに案内してもらう

すでに AI コーディングエージェントを使っていますか? オンボーディングはエージェントに任せましょう。このプロンプトを貼り付けてください:

text
Help me understand and set up Herdr. Read https://herdr.dev/agent-guide.md first, then walk me through it step by step.

このガイドはエージェントに Herdr のコンセプト、セットアップ、設定、よくある問題の解決方法を教えるので、エージェントの回答が即興ではなく正確なままになります。

コアガイド

対応エージェント、検出の挙動、インテグレーション、カスタムラベル、ダイレクトアタッチについて。
text
[エージェントを理解する →](/ja/docs/agents/)
デタッチ、再起動時の復元、ペイン履歴のリプレイ、エージェントネイティブの resume、ライブハンドオフについて。
text
[状態管理の方式を比較する →](/ja/docs/session-state/)
キーバインド、テーマ、サイドバーの挙動、通知、スクロールバック、高度なオプションを設定します。
text
[Herdr を設定する →](/ja/docs/configuration/)
CLI とローカルソケット API を通じて、スクリプト・ツール・エージェントから Herdr を制御します。
text
[API ガイドを読む →](/ja/docs/socket-api/)
マニフェストのアクションとイベントフックを備えた、ローカル実行型ワークフロープラグインを作成します。
text
[プラグインを書く →](/ja/docs/plugins/)
今すぐ GitHub からプラグインを共有し、リポジトリにトピックを付けてマーケットプレイス公開時に掲載されるようにしましょう。
text
[プラグインを公開する →](/ja/docs/marketplace/)