プログラミング
Herdr: ターミナルで動作するエージェントマルチプレクサ
Herdr: Agent multiplexer that lives in your terminal (github.com)
要約
Herdrは、ターミナル内で動作するエージェントマルチプレクサです。ワークスペース、タブ、ペインといった機能を提供し、マウス操作にも対応しています。エージェントの状態を一目で確認できるほか、デタッチ・再アタッチ後もエージェントは実行し続けるため、作業の中断なく継続できます。Herdrは軽量なRustバイナリで、GUIアプリやElectronは使用していません。
全文翻訳
Herdrは、ターミナル内で動作するエージェントマルチプレクサです。ワークスペース、タブ、ペイン、マウスネイティブな操作(クリック、ドラッグ、分割)、エージェントの状態(ブロック中、作業中、完了)の一覧表示、デタッチ・再アタッチ後もエージェントが実行し続ける機能を提供します。GUIアプリやElectron、macOS専用のネイティブラッパーは不要で、エージェント自身のターミナルをそのまま表示します。
インストール方法:
`curl -fsSL https://herdr.dev/install.sh | sh` (macOS/Linux)
`powershell -ExecutionPolicy Bypass -c "irm https://herdr.dev/install.ps1 | iex"` (Windows preview beta)
または `brew install herdr`、`mise use -g herdr`。
クイックスタート:
作業ディレクトリで`herdr`を実行します。Herdrはバックグラウンドセッションサーバーを開始またはアタッチします。ワークスペースがない場合は自動で開きます。
ルートペインでエージェントを実行します。`ctrl+b`、`shift+n`で新しいワークスペースを作成し、`ctrl+b`、`v`または`minus`でペインを分割し、`ctrl+b`、`c`でタブを作成し、`ctrl+b`、`w`でワークスペースを切り替えます。
`ctrl+b q`でクライアントをデタッチします。サーバーとペインプロセスは実行を続けます。別のターミナルを開いて`herdr`を再度実行すると再アタッチできます。
コアコンセプト:
サーバーとクライアント。Herdrはデフォルトでバックグラウンドサーバーにアタッチします。デタッチはクライアントのみを閉じます。`herdr server stop`はデフォルトサーバーを停止し、そのペインを終了します。名前付きセッションは個別のサーバーネームスペースで、`herdr session attach work`、`herdr session stop work`、`herdr session list`で完全に分離されたランタイム状態を管理できます。
ワークスペース、タブ、ペイン。ワークスペースはプロジェクトレベルのコンテナです。タブはワークスペース内のペインをグループ化します。ペインは実際のリモートターミナルプロセスであり、書き換えられたエージェントビューではありません。
コピー。Herdrはサイドバーではなくペインのテキストをコピーします。ペイン内でドラッグ選択するか、単語またはトークンをダブルクリックするか、`prefix+[`でキーボードコピーモードに入ります。コピーモードでは、`h/j/k/l`、`w/b/e`で移動し、`{/}`で選択を開始し、`v`または`Space`で選択し、`y`または`Enter`でコピーし、`q`または`Esc`で終了します。PuTTYや一部のSSHターミナルでは、Shiftキーを押しながらドラッグしてターミナル自身の選択を使用し、Shift+右クリックで貼り付けます。
更新と復元。`herdr update`は新しいバイナリをインストールしますが、実行中のサーバーは停止またはハンドオフされるまで古いプロセスを使用し続けます。新しいバージョンを使用するには古いサーバーを停止します。停止するとペインプロセスが終了します。デフォルトセッションの場合、`herdr server stop`を実行してから`herdr`を再度実行します。名前付きセッションの場合、`herdr session stop <name>`を実行してから`herdr session attach <name>`を再度実行します。`herdr update --handoff`は実験的であり、開発サーバーのようなフォアグラウンドプロセスを含むライブペインを古いサーバーから新しいサーバーに移行しようとします。現在の公式統合がインストールされている場合、サポートされているエージェントペインはサーバーの再起動または更新後にネイティブエージェントセッションから再起動できます。
キーバインディング。Herdrは明示的なキーバインディング文字列を使用します。`prefix+n`は設定されたプレフィックスを押してから`n`を押すことを意味します。`ctrl+alt+n`、`cmd+k`、`alt+1`、ファンクションキーのコードは直接ターミナルモードのショートカットであり、プレフィックスは必要ありません。`n`のようなプレーンな直接印刷可能なキーは通常の入力を奪うため、意図的に修飾キー付きの直接バインディングを使用しない限り、`prefix+n`を使用してください。
エージェント認識。サイドバーはブロック中、作業中、完了、アイドル状態を表示します。検出はデフォルトでプロセス名とターミナル出力で行われます。公式統合は、復元、セマンティックな状態レポート、またはその両方のためにネイティブセッションIDを追加できます。
更新:
Herdrは新しいバージョンが利用可能になったときに通知します。手動で実行するには:`herdr update`
`herdr update`はHerdr自身のインストーラーによって管理されるインストール用です。Homebrew、mise、Nixによるインストールは`brew upgrade herdr`、`mise upgrade herdr`、またはNixのワークフローを介して更新され、セッションが古いサーバーをまだ実行している場合は同じ停止して再実行するフローを使用します。
LinuxおよびmacOSの直接インストールは、`herdr channel set preview`で開発プレビュービルドをオプトインし、`herdr channel set stable`で安定版に戻ることができます。Windowsベータ版のインストールは現在プレビューのみです。
詳細な更新、再起動、復元、ハンドオフのマトリックスについては、インストールとセッション状態のドキュメントを参照してください。LinuxおよびmacOSの直接インストールはデフォルトで安定版の更新チャネルを使用します。Windowsベータ版のインストールはデフォルトでプレビュー版です。次の安定版リリース前にmasterからのプレビュービルドをテストするには:`herdr channel set preview`
LinuxおよびmacOSの直接インストールを安定版に戻すには:`herdr channel set stable`
直接インストールの場合、チャネルを変更するとそのチャネルがチェックされ、その最新のバイナリがインストールされます。その更新が失敗した場合、`herdr update`を実行して設定されたチャネルから再試行します。プレビューはHerdrのアップデーターによって管理される直接インストールのみが対象です。Homebrew、mise、Nixは安定版を維持し、それぞれのパッケージマネージャーを通じて更新されます。
比較:
| | tmux | GUIマネージャー | Herdr |
|---|---|---|---|
| 永続セッション | ✓ | — | ✓ |
| デタッチ / 再アタッチ | ✓ | — | ✓ |
| ペイン、タブ、ワークスペース | ✓ | ✓ | ✓ |
| エージェント認識 | — | ✓ | ✓ |
| ターミナル内で動作 | ✓ | — | ✓ |
| リアルなターミナルビュー | ✓ | — | ✓ |
| マウスネイティブ | — | ✓ | ✓ |
| 軽量バイナリ | ✓ | — | ✓ |
| エージェントがオーケストレーション | ? | ? | ✓ |
tmuxは永続性とペインを提供しますが、エージェントが存在する前に構築されました。GUIマネージャーはエージェントの状態を表示しますが、ターミナルを離れてラップされたビューを使用する必要があります。Herdrは、永続性と認識を1つのツールで提供し、邪魔になりません。
リモートとアタッチ:
Herdrは通常のSSH経由で動作します。リモートホストで実行し、デタッチして後で再アタッチします。
`ssh you@yourserver herdr`
シェルを開かずにローカルターミナルからアタッチすることもできます。
`herdr --remote workbox`
`herdr --remote ssh://you@yourserver:2222`
リモートアタッチは、独自のSSH設定を保持しながら、デフォルトでフォールバックSSHキープアライブを追加します。`[remote].manage_ssh_config = false`を設定すると、プレーンなsshを使用します。ダイレクトアタッチは、現在のターミナルをサーバーが所有する1つのターミナルに接続します。
`herdr agent attach <target>`
`herdr terminal attach <terminal_id>`
リモートキーバインディング、名前付きセッション、ハンドオフの詳細については、永続性とリモートのドキュメントを参照してください。
エージェント認識:
サイドバーは、どのエージェントがブロック中、作業中、完了しているかを表示します。ワークスペースは最も緊急な状態にロールアップされるため、全体のリストを一目でスキャンできます。状態は次のとおりです。
🔴 blocked — エージェントは入力または承認を必要としています
🟡 working — エージェントがアクティブに実行中です
🔵 done — 作業が終了しました。まだ見ていません。
🟢 idle — 完了して確認済みです
検出は、フォアグラウンドプロセスとターミナル出力を読み取ることで機能します。設定は不要で、フックも必要ありません。公式のClaude Code、Codex、GitHub Copilot CLI、Devin、Droid、Kimi Code CLI、QoderCLI、およびCursor Agent CLIの統合は、セッション復元IDを提供します。Pi、OMP、Kimi Code CLI、Opencode、Kilo Code CLI、Hermes、およびカスタムソケット統合は、独自の状態を報告できます。
ターミナル内で動作:
GUIウィンドウではなく、WebダッシュボードでもElectronでもありません。Herdrは、すでに使用しているターミナル内で動作します。単一のRustバイナリで、依存関係はありません。外側のターミナル環境としてtmux内でも動作します。
得られるもの:
ワークスペース — Gitリポジトリまたはフォルダー名を中心に整理され、それぞれに独自のタブとペインがあります。
タブ — ソケットAPIとCLIで第一級の存在です。
コピーしやすい — ペインのテキストをドラッグ選択したり、トークンをダブルクリックしたり、`prefix+[`、`h/j/k/l`、`{/}`、`v`、`y`でキーボードコピーモードを使用したりできます。
通知 — バックグラウンドイベントのサウンドとトースト。タブを意識した抑制機能もあります。
18種類の組み込みテーマ — Catppuccin、Terminal、Tokyo Night、Gruvbox、One、Solarized、Kanagawa、Rosé Pine、Vesper、およびメインパレットのライトバリアント。
セッションの永続性 — クライアントのデタッチ後もペインプロセスは存続します。セッションは、完全な再起動後もペインを復元し、オプションで最近の画面履歴も利用できます。
エージェントもHerdrを使用できます:
ローカルのUnixソケットにより、エージェントはワークスペースを作成したり、ペインを分割したりズームしたり、ヘルパーを起動したり、出力を読み取ったり、状態の変化を待機したりできます。ソケットAPIのドキュメントとSKILL.mdから始めてください。
サポートされているエージェント:
自動検出はすぐに機能します。プロセス名の一致