herdr を Windows ベータで導入した — AIコーディングエージェントの群れをターミナルで飼う

開発claude-code-tools

herdr を Windows ベータで導入した — AIコーディングエージェントの群れをターミナルで飼う

Claude Code と Codex を並走させる日が増えて、「今どのエージェントが手待ちなのか」をタブ切り替えで確認する時間が無視できなくなってきた。そこで、ターミナル内で複数のエージェントを束ねて状態を一覧できる herdr を Windows 11 に導入した。

先に結論を書く。

  • 導入手順は公式ドキュメントの PowerShell ワンライナーで足りる。世の中の記事を一通り調べたが、Windows についてはこれ以外の経路(パッケージマネージャ等)は現状ない
  • インストールスクリプト(install.ps1・465行)の中身も読んだ。管理者権限不要・ユーザー領域のみ・SHA256 検証ありの手堅い作りで、そのまま流してよい
  • ただし Windows 対応はプレビュー限定のベータ。SSH リモート接続(--remote)が使えない等の制限があるので、ローカル専用と割り切って入れる
  • 導入作業と検証は Claude Code に実行させた。本記事のログはその実物

herdr とは — tmux にエージェント監視が付いたもの

herdr は「agent multiplexer that lives in your terminal」を名乗る Rust 製の CLI ツールだ。GitHub スターは 16.5k、リリースは 70 回を数え、確認時点の最新は v0.7.3(2026-07-07)だった。ライセンスは AGPL-3.0 と商用のデュアル。

tmux と同じくペイン・タブ・セッションを永続化するが、herdr の中心はそこではない。各ペインで動くエージェントの状態(idle / working / blocked / done)をサイドバーに常時表示するのが売りだ。「3つの Claude Code を走らせて、どれが入力待ちで止まっているかを一目で知る」がやりたいことのすべてなら、tmux ではなく herdr が答えになる。

逆に言えば、エージェントを1つしか走らせない人や、ペイン分割だけが目的の人には tmux で足りる。Shareuhack のガイドも「複数エージェントの状態をリアルタイムで知る必要があるか」を導入判断の軸に置いていて、これが一番納得感のある整理だった。

日本語圏でも Qiita に入門記事(tmux 対応チートシート付き)や zellij からの移行記があり、macOS / Linux での導入例は既にある。ただ Windows ベータでの導入記録は見当たらなかったので、この記事はそこを埋める。

世の中のベストプラクティス(2026-07 時点の調査まとめ)

導入前に公式ドキュメント・GitHub README・国内外の解説記事を読んで、共通して挙がっていた実践知をまとめる。

インストール経路は OS ごとに1つ

OS経路
macOSbrew install herdr
Linuxcurl -fsSL https://herdr.dev/install.sh | sh
Windowspowershell -ExecutionPolicy Bypass -c "irm https://herdr.dev/install.ps1 | iex"

Windows だけチャネルが preview 固定で、herdr channel set stable は安定版が出るまで拒否される。

tmux の中で開かない

herdr を tmux のペイン内で起動するとエージェント検出が働かない。herdr は tmux の置き換えとして単体で使い、エージェントは herdr のペインで直接実行する。

エージェント統合を入れる

herdr integration install claude のように、使うエージェントごとの統合を入れると状態検知の精度が上がる。統合なしでも画面解析で状態を推定するが、検知に数秒の遅延が出るとされる。対応エージェントは Claude Code / Codex / Copilot / Cursor / OpenCode など14種で、herdr integration status で導入状況を確認できる。

設定は config.toml、運用の細かいコツ

  • 設定ファイルは ~/.config/herdr/config.toml(Windows では %APPDATA%\herdr\config.toml)。herdr --default-config でコメント付きテンプレートを出力してから編集する
  • 設定変更後は herdr server reload-config で反映(サーバー再起動不要)
  • デタッチは prefix q(プレフィックスは既定で Ctrl+B)。herdr session stop はデタッチではなく完全停止なので取り違えない
  • dotfiles 管理に入れるのは config.toml だけ。ソケットやログなどのランタイムファイルは追跡しない

Windows ベータの現状と制限

公式の Windows beta ページによると、動くのはローカルの永続セッション、ConPTY 経由のネイティブペイン、Windows Terminal / PowerShell からのアタッチ、cmd.exe ペインまでだ。

使えないものは次の通り。

  • --remote(SSH 経由のリモートアタッチ)
  • ライブサーバーハンドオフ(更新時の無停止引き継ぎ)
  • Unix ファイルディスクリプタハンドオフ

細かい注意も書かれている。

  • テキストのペーストは Ctrl+Shift+V を使う
  • Shift+Enter の扱いはターミナル実装に依存する
  • 既定のカーソル描画設定(host_cursor = "auto")ではカーソルがちらつくことがある

実際の導入ログ(Windows 11)

ここからが実際にやった作業だ。判断は人間、実行と検証は Claude Code という分担で進めた。

1. install.ps1 の中身を確認してから流す

irm ... | iex 形式のワンライナーは中身を見ずに流したくないので、先にスクリプトをダウンロードして読んだ。465行で、要点は次の通り。

  • リリースマニフェスト(preview.json)を取得し、herdr.exe をダウンロードして SHA256 チェックサムを検証する
  • 配置先は %USERPROFILE%\.herdr\packages\standalone\releases\<バージョン>。バージョン別フォルダに置き、旧リリースを3世代保持する
  • %LOCALAPPDATA%\Programs\Herdr\bin をジャンクションで最新リリースに向け、ユーザー PATH の先頭に追加する
  • 管理者権限は不要。書き込みはすべてユーザー領域で、インストーラー自身が管理していないジャンクションやディレクトリを置き換えない防御も入っている

実行中の herdr.exe を上書きしないためのバージョン別フォルダ+ジャンクション更新という設計で、アップデートの作法として手堅い。

2. インストール実行

レビュー済みのスクリプトを実行した。所要は1分弱。

==> Fetching Herdr preview manifest
==> Installing Herdr 0.7.2-preview.2026-07-07-f5354780e4ef for x86_64-pc-windows-msvc
==> Downloading Herdr
==> PATH updated for future PowerShell sessions.
Herdr 0.7.2-preview.2026-07-07-f5354780e4ef installed successfully.

preview チャネルから来たのは 0.7.2-preview(2026-07-07 ビルド)だった。GitHub の最新タグは v0.7.3 だが、preview チャネルの配信は安定版のタグとは別に管理されているようだ。

3. 配置とバージョンの確認

$ herdr --version
herdr 0.7.2-preview.2026-07-07-f5354780e4ef

releases フォルダの下にバージョン名のディレクトリが1つでき、current ジャンクションがそこを指していた。スクリプトを読んで理解した通りの配置になっている。PATH はユーザー環境変数に追加されるので、既存のターミナルでは新しいウィンドウを開くまで herdr が引けない。

4. Claude Code 統合を入れて差分を検証する

herdr integration install claude は Claude Code の設定ファイル(~/.claude/settings.json)に手を入れる。うちの settings.json には音声読み上げなどのフックが大量に入っているので、実行前にバックアップを取り、実行後に意味的な差分(キー順を正規化した diff)を確認した。

$ herdr integration install claude
installed claude integration hook to C:\Users\numbe\.claude\hooks\herdr-agent-state.ps1
ensured claude settings at C:\Users\numbe\.claude\settings.json

差分は SessionStart フック1件の追加のみで、既存のフックはすべて無傷だった。見かけ上の diff が大きく出たのは herdr が JSON をキーのアルファベット順で書き直すためで、中身は変わっていない。

追加されたフックスクリプトの冒頭はこうなっている。

if ($Action -ne "session") { exit 0 }
if ($env:HERDR_ENV -ne "1") { exit 0 }
if ([string]::IsNullOrWhiteSpace($env:HERDR_PANE_ID)) { exit 0 }

herdr のペイン内(HERDR_ENV=1)でなければ即座に exit 0 する。つまり herdr を使わない普段の Claude Code セッションには影響しない。この確認が取れたので安心して残せる。

5. サーバーの起動テスト

TUI を開く前に、サーバー単体が起動するかを確かめた。

$ herdr server
herdr server running; you can use any herdr CLI command in another terminal.
api socket: C:\Users\numbe\AppData\Roaming\herdr\herdr.sock

$ herdr status
server:
  status: running
  version: 0.7.2-preview.2026-07-07-f5354780e4ef

$ herdr server stop

起動・状態取得・停止まで問題なく通った。ソケットとログは %APPDATA%\herdr\ に置かれる。なお通常の利用では herdr server を手で起動する必要はなく、herdr と打てばサーバーの起動からアタッチまで面倒を見てくれる。

アンインストールしたくなったら

公式ドキュメントにアンインストール手順の記載は見つからなかった。構造が分かっているので手作業で消せる。

  1. herdr integration uninstall claude で統合を外す
  2. herdr server stop でサーバーを止める
  3. %USERPROFILE%\.herdr%LOCALAPPDATA%\Programs\Herdr%APPDATA%\herdr を削除
  4. ユーザー環境変数 PATH から %LOCALAPPDATA%\Programs\Herdr\bin を除く

次にやること

導入と動作確認までが今回の範囲だ。次は Windows Terminal で herdr を開き、Claude Code を複数ペインで走らせて、サイドバーの状態表示がどこまで実用になるかを試す。ConPTY 由来の描画の癖(カーソルのちらつき等)が出るかどうかも、実際に使い込まないと分からない。使用感は別記事にする。