herdr
コーディングエージェント向けのターミナルワークスペースマネージャ。tmux のようにバックグラウンドサーバが実ターミナルを所有し、クライアントが attach して描画する(ogulcancelik/herdr)
herdr はターミナル上で動くエージェントマルチプレクサ。ペイン内のコーディングエージェントを検出し、working blocked done などを一覧できる。detach してもプロセスは動き続け、別ターミナルや SSH から reattach できる。
- 実ターミナルビュー(ラップされた解釈ではない)
- キーボード(tmux 風 prefix)とマウス(クリック・ドラッグ・分割)の両方が第一級
- プラグインとマーケットプレイスでペイン・ワークフローを拡張
- Electron なし。既存ターミナル内で動作
.tmux.conf の知識は当てはめない。公式ドキュメントと herdr --help が正。| 概念 | 役割 | 公開 ID 例 |
|---|---|---|
| Session | 永続バックグラウンドサーバの名前空間。通常は default。名前付きは完全に分離 | default / work |
| Workspace | プロジェクト単位のコンテナ。タブとペインを所有。サイドバーはワークスペース単位で状態を集約 | w1 |
| Tab | ワークスペース内のレイアウト(agents / logs / server など) | w1:t1 |
| Pane | 実ターミナル。右・下に分割可能。クライアント detach 後も生存 | w1:p1 |
| Agent | ペイン内で認識されたプロセス。状態とメタデータを公開 | (pane に紐づく) |
| Terminal | PTY 側の内部ハンドル | term_... |
モードは 3 つ。ターミナルモード(キーをフォーカスペインへ送る)、prefix モード(既定 ctrl+b のあと 1 アクション)、navigate モード(継続的なナビ面)。
バックグラウンドサーバがセッション状態と PTY を持ち、TUI クライアントが描画する。新機能は「サーバ所有のランタイム事実」と「TUI だけの表示状態」に分けて設計する方針(AGENTS.md)。
flowchart TD
subgraph clients["Clients"]
TUI["TUI client"]
CLI["herdr CLI"]
AG["Agent in pane"]
end
subgraph server["Background server"]
SESS["Session / AppState"]
WS["Workspace / Tab / Pane"]
DET["Agent detection"]
API["JSON API / events"]
end
subgraph term["Terminals"]
PTY["portable-pty"]
VT["libghostty-vt"]
end
TUI --> API
CLI --> API
AG --> CLI
API --> SESS
SESS --> WS
WS --> PTY
PTY --> VT
DET --> VT
DET --> API
ペイン記録は agent / agent_status / ネイティブセッションメタデータを公開する。値は idle、working、blocked、done、unknown。
| 状態 | 意味 |
|---|---|
| idle | 待機中で、結果は「見た」扱い。初回プロンプト表示も idle |
| working | 作業中 |
| blocked | 入力待ち。人間またはフォローアップが必要 |
| done | 完了したが結果はまだ未読。バックグラウンド完了で付きやすい |
| unknown | 未検出、または統合前 |
idle と done は同じ完了セマンティクスで、差分は注意(seen)状態だけ。フォーカスやタブ切替で visible になると done → idle。離れただけでは idle が done に戻らない。
herdr integration install <name>。診断は herdr agent explain <target> --json。Linux / macOS
curl -fsSL https://herdr.dev/install.sh | sh
# または: brew install herdr · mise use -g herdr
herdr
Windows(preview beta)
powershell -ExecutionPolicy Bypass -c "irm https://herdr.dev/install.ps1 | iex"
herdr
cd して herdr。default セッションへ attach。初回はオンボーディング。claude / codex 等をペインで実行。必要なら herdr integration install claude。prefix+q(ctrl+b のあと q)またはウィンドウを閉じる。再開は herdr。完全停止は herdr server stop。設定は任意。既定パスは ~/.config/herdr/config.toml。既定値の全文は herdr --default-config。実行中サーバへは herdr server reload-config。
制御コマンドの多くは JSON を返す。構文の権威はインストール済みバイナリ。探索はグループを引数なしで呼ぶ(裸の herdr は TUI 起動なので使わない)。
herdr --help
herdr pane
herdr workspace
herdr worktree
herdr tab
herdr wait
herdr terminal
herdr notification
herdr integration
herdr session
環境変数(呼び出し側コンテキスト)
| 変数 | 意味 |
|---|---|
HERDR_ENV=1 | Herdr 管理下のペイン内。制御コマンドを出す前提条件 |
HERDR_WORKSPACE_ID | 呼び出し元ワークスペース |
HERDR_TAB_ID | 呼び出し元タブ |
HERDR_PANE_ID | 呼び出し元ペイン |
HERDR_SESSION | セッション名(必要時) |
ペインコマンドは --current で呼び出し元を明示するのが安全。省略すると UI フォーカス先になり、別クライアントのペインを誤操作しうる。
HERDR_ENV=1 のとき、内側から再度裸の herdr で TUI を起動しない。デバッグビルドを試すときはソケット上書きを外す — env -u HERDR_SOCKET_PATH -u HERDR_CLIENT_SOCKET_PATH cargo run -- …。リポジトリ同梱の SKILL.md は、Herdr 内のエージェントが隣接ペインを制御するための手順。スキル適用前に必ず test "${HERDR_ENV:-}" = 1 を確認する。
兄弟ペインでエージェントを起動する流れ
herdr pane layout --pane "$HERDR_PANE_ID"
herdr pane split --current --direction right --no-focus
# JSON の result.pane.pane_id を読む
herdr pane rename <pane-id> "reviewer"
herdr pane run <pane-id> "codex"
herdr wait agent-status <pane-id> --status idle --timeout 30000
herdr pane run <pane-id> "Review the current diff and report only actionable findings."
herdr wait agent-status <pane-id> --status working --timeout 30000
herdr wait agent-status <pane-id> --status done --timeout 120000
herdr pane read <pane-id> --source recent-unwrapped --lines 120
read ソース
| source | 用途 |
|---|---|
visible | 現在の描画ビューポート |
recent | 最近のスクロールバック(ソフトラップ込み) |
recent-unwrapped | ソフトラップ結合。ログ・トランスクリプト向け |
detection | エージェント検出用 bottom-buffer |
- 背景作業は
--no-focus。フォーカスを奪わない - 自分で作っていない workspace / tab / pane / session を閉じない
- 明示指示なしに
herdr server stopやメインプロセス kill をしない - 待ちタイムアウト後は
pane getとpane readで現況を確認してから判断
スキル導入例: npx skills add ogulcancelik/herdr --skill herdr -g(対応ハーネスの場合)。正本は GitHub の SKILL.md。
ビルド・テスト
git clone https://github.com/ogulcancelik/herdr
cd herdr
cargo build --release
just test # unit tests
just check # formatting, tests, maintenance checks
AppState は純粋データ。PaneState と PaneRuntime を分離。PTY なしでテスト可能。
compute_view() が幾何と変異。render() は &AppState を読んで描くだけ。
src/platform/<os>.rs。コアに #[cfg(target_os)] を増やさない。
バージョン(Cargo.toml): 0.7.4。ライセンスは AGPL-3.0-or-later と商用のデュアル。問い合わせ: hey@herdr.dev。
- ogulcancelik/herdr — ソースリポジトリ
- herdr.dev — 公式サイト
- ドキュメント — quick start / concepts / agents / keyboard / configuration
- Socket API
- Agent skill / リポジトリ内
SKILL.md - Plugin marketplace
- Releases