はじめに
今まで私は複数のClaude Codeセッションをtmuxのウィンドウ・ペイン・セッションで並行運用する、よくある形を採用していました。
ただしtmuxは汎用のターミナルマルチプレクサなので、ペインの中で動いているのがClaude Codeなのか、ただのシェルなのかを区別しません。エージェントが作業中なのか、確認待ちで止まっているのかも、のぞきに行かないとわかりませんでした。
そんな折、tmuxからherdrに乗り換えたという記事や、X(旧Twitter)で「herdr」という名前を見かける機会が増えました。GitHubのスター数もこの数週間で1万を超え、伸び続けています。
試しに導入し、Claude Codeとの連携機能を有効にしたところ、とても便利だったのでここで共有します。
herdr とは何か
herdr は、コーディングエージェント向けに作られたターミナルマルチプレクサです。
公式サイトでは agent multiplexer that lives in your terminal(ターミナルに常駐するエージェントマルチプレクサ)と説明されています。
tmux と同じくワークスペース・タブ・ペインで画面を整理しますが、herdr はペインの中で動いているのが Claude Code や Codex などのエージェントであることを認識し、状態を管理します。
主な特徴は次のとおりです。
- 各エージェントの状態(作業中・完了・確認待ち)を一覧できる
- デタッチしてもエージェントのプロセスは動き続け、別のターミナルや SSH 越しに再アタッチできる
- エージェント自身も herdr を操作できるソケット API を持ち、ペインの生成や他エージェントの出力読み取りができる
- キーボード操作(tmux ライクなプレフィックスキー)とマウス操作の両方に対応する
- Rust 製の単一バイナリで、重量級のランタイムを必要としない
一つめは、tmuxのペインをいちいちのぞきに行っていた面倒の、ちょうど裏返しです。二つめは、herdrを閉じたつもりでもエージェントは働き続けるということでもあります。対応エージェントの一覧には Claude Code のほか、Codex、Cursor Agent CLI、GitHub Copilot CLI なども含まれています。
Claude Code integration を導入する
インストールは公式のインストールスクリプトか、Homebrew・mise などのパッケージマネージャーで行えます。
curl -fsSL https://herdr.dev/install.sh | sh
インストール後、Claude Code との連携を有効にします。
herdr integration install claude
導入状況は次のコマンドで確認できます。
herdr integration status
自分の環境では次のように表示され、claude の連携が最新バージョン(v7)で有効になっていることがわかりました。
claude: current (v7) (~/.claude/hooks/herdr-agent-state.sh)
この連携は ~/.claude/hooks/herdr-agent-state.sh という Claude Code の SessionStart フックとして組み込まれます。
フックは HERDR_ENV=1 の環境でのみ動作し、サブエージェントのセッションは対象外です。
動作条件を満たすと、Claude Code のセッション ID をソケット経由で herdr に報告し、herdr 側がペインとエージェントのセッションを紐づけます。
裏側の仕組み
PC を再起動したあとに herdr を実行すると、ペインのレイアウトも Claude Code の会話もそのまま戻ってきます。
見た目には「セッションがそのまま残っていた」ように感じますが、実際には2つの異なる復元の仕組みが組み合わさっています。
1つ目はスナップショット復元です。
herdr サーバーが停止して再起動すると、ペインの中で動いていたプロセス自体は失われます。
herdr は再起動時に session.json を読み込み、ワークスペース・タブ・ペイン・作業ディレクトリ・レイアウトの形を復元します。
この時点では、各ペインは保存されたディレクトリで開かれた新しいシェルに過ぎません。
2つ目はエージェントネイティブのセッション復元です。
Claude Code は自分自身の会話セッションを claude --resume <id> で再開できます。
herdr は Claude Code integration が事前に報告していたセッション ID を使い、レイアウト復元後のペインで対応するエージェントを resume します。
この機能を使うには integration のバージョンが v6 以上である必要があり、自分の環境の v7 は条件を満たしていました。
レイアウトが戻るのはスナップショット復元のおかげ、会話そのものが戻るのはエージェントネイティブのセッション復元のおかげです。
どちらか一方が欠けても、見た目は同じでも会話は真っ白、あるいは会話は残るがペイン配置はバラバラ、といった中途半端な体験になっていたはずです。
まとめ
herdrとClaude Code integrationを導入してからは、再起動をまたいでも、そのまま作業を再開できるようになり、会話を失う心配をしなくてもよくなりました。