2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

herdr 入門:AIエージェントを束ねるマルチプレクサ(tmux 対応チートシート付き)

2
Posted at

新しく登場したターミナルマルチプレクサ herdr の全体像を整理し、あわせて tmux ユーザー向けに「tmux ではこうだったものが herdr ではこうなる」という対応チートシートをまとめます。前半は herdr を知らない人向けの一般的な解説、後半は tmux から乗り換える・併用する人が手元で引ける対応表という構成です。

筆者は tmux をかなりカスタマイズして使ってきましたが、herdr は必要な機能が初めから揃っており、設定をほとんど持ち込まずに済みました。後半の対応表では、tmux の定番カスタマイズが herdr でどう扱われるか(多くはデフォルトに吸収されている)も整理しています。

なお、本記事は執筆時点の herdr 0.7.1 を対象としています。バージョン 0.7 系の若いツールのため、今後仕様が変わる可能性があります。また、ローカル開発マシンでの利用を前提としており、SSH 先のサーバーでセッションを永続化する用途(tmux の定番ユースケースのひとつ)は本記事では扱いません。herdr 自体は herdr --remote <ssh-target> でリモートサーバーへのアタッチに対応しています。


この記事で得られること

  • herdr の設計思想と基本概念(サーバー常駐モデル、ワークスペース、エージェント検出)
  • セットアップと設定ファイル管理の手順
  • tmux との差分チートシート(概念・コマンド・キーバインド・設定の対応表)

herdr とは何か

herdr は「AIコーディングエージェントのためのターミナルワークスペースマネージャ」を掲げるツールです。tmux や screen と同じくターミナルを分割・多重化しますが、既存のマルチプレクサと比べて特徴的なのは次の2点です。

  1. サーバー常駐型であること。セッション状態はサーバー側で常に保持され、クライアントはそこにアタッチするだけです。
  2. 各ペインで動いている AI エージェント(Claude Code や類似ツール)の状態を検出して一覧表示すること。「どのプロジェクトのエージェントが入力待ちで、どれが処理中か」がサイドバーで一目でわかります。

複数のプロジェクトで並行してエージェントを走らせる開発スタイルを前提に設計されており、tmux の延長というより「エージェントの状態をターミナルの第一級市民として扱う」新しい種類の道具と捉えるのが実態に近いです。

基本概念:セッション・ワークスペース・タブ・ペイン

herdr の画面は次の階層で構成されます。

セッション(サーバーが保持する単位)
└── ワークスペース(プロジェクトに相当)
    └── タブ
        └── ペイン

tmux では「プロジェクトごとにセッションを分けて、attach で行き来する」運用が一般的でした。herdr では 1つのセッションの中に複数のワークスペースが並ぶ ため、アタッチし直す必要がなく、サイドバーから全プロジェクトへ即座に移動できます。

各ワークスペースは独立した作業ディレクトリ・ラベル・環境変数・タブ構成を持てます。tmux でセッションを使い分けていた感覚は、そのままワークスペースに対応します。ワークスペースの一覧から選んで切り替える UI は「ワークスペースピッカー」と呼ばれ、tmux の choose-treeprefix s)に相当します。

主な機能

セッション永続化とエージェント会話の復元

サーバー常駐型のため、ワークスペース・タブ・ペインの構成はデタッチしても保持され、アタッチし直すだけで戻ります。さらに AI エージェントを走らせていたペインについては、設定 resume_agents_on_restore(デフォルト有効)によって 元の会話セッションごと復元 されます。

tmux で同等のことをするには tmux-resurrect + continuum の組み合わせが定番でしたが、あれは「登録したプロセスを起動し直す」仕組みです。herdr はエージェントの会話コンテキストまで含めて戻す点で、単なるプロセス復元より一歩踏み込んでいます。

PC再起動をまたぐには、サーバーをログイン時に自動起動させておきます。

brew services start herdr

これで、ログイン時にサーバーが立ち上がり、保存済みの状態から復元されます。なお、herdr 自体をアップグレードした後は brew services restart herdr でサーバーを再起動します。

カスタムコマンドの一時ペイン実行

設定ファイルにキーとコマンドを登録すると、そのキーで一時的なペインを開き、コマンドが終了すると自動で閉じます。

[[keys.command]]
key = "prefix+alt+g"
type = "pane"
command = "lazygit"

type = "pane" は一時ペインで開いて終了時に閉じる挙動、type = "shell" はバックグラウンドで実行する挙動です。tmux でも bind で似たことはできますが、「終了したら勝手に片付く」使い捨てペインが最初から用意されています。

git worktree 統合

プレフィックス + 指定キーで git worktree を作り、それを専用ワークスペースとして開けます。ブランチを並行して触るときにワークスペースが worktree 単位で分かれるため、複数のエージェントをブランチごとに走らせる運用と相性の良い機能です。

モダンなデフォルト

tmux で定番だったカスタマイズの多くは、herdr ではデフォルトに吸収されています(詳細は後半のチートシート参照)。マウス操作、クリップボード連携、truecolor などは設定不要で、設定ファイルは小さく始められます。

セットアップと設定ファイル

herdr は homebrew-core に formula があるため、tap の追加なしでインストールできます。

brew install herdr

設定ファイルの場所はヘルプ出力で確認できます。

Config: ~/.config/herdr/config.toml
Env:    HERDR_CONFIG_PATH overrides config file path

herdr は 全項目コメント付きのデフォルト設定を書き出せる ため、カスタマイズの起点はこれ一発で作れます。

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

自己文書化された設定ファイルが手に入るので、dotfile マネージャで管理する場合もこのファイルだけを追跡すれば済みます。ランタイムファイル(ソケット、ログ、セッション状態の JSON)は管理対象に含めないのが無難です。

注意点:二重起動時の挙動

herdr のクライアントとサーバーは TCP ポートではなく Unix ドメインソケット で通信します。すでにサーバーが動いている状態で自動起動サービスを登録すると、次のようなエラーがログに残ることがあります。

error: herdr server is already running
api socket: /path/to/herdr.sock

これはポート衝突ではなく、後から起動したサーバーが二重起動を検知して自ら終了した、という正常な挙動です。起動サービス側がプロセスの即時終了を異常とみなしてリトライした跡がエラー表示として残るだけで、既存のサーバーには影響ありません。次回のログイン時からはクリーンに起動します。

tmux 差分チートシート

ここからは tmux ユーザー向けの対応表です。

概念の対応

tmux herdr
セッション ワークスペース
window タブ
pane ペイン
choose-treeprefix s ワークスペースピッカー

tmux の「セッション」は herdr では「ワークスペース」に対応し、herdr の「セッション」はそれらを束ねるサーバー側の単位を指します。同じ言葉が別の階層を指すので、ここだけは最初に頭を切り替える必要があります。

コマンドの対応

操作 tmux herdr
セッション一覧 tmux ls herdr session list
アタッチ tmux a -t xxx herdr session attach xxx
新規セッション tmux new -s xxx herdr --session xxx
セッション終了 tmux kill-session -t xxx herdr session stop xxx

注意点が1つあります。herdr の session stop は「セッションを止める」であって、tmux の detach とは違います。デタッチ(作業を残したまま抜ける)はコマンドではなくキー操作prefix q)です。抜けるつもりで止めてしまわないよう区別が必要です。

herdr 基本コマンド早見表

tmux 対応の有無にかかわらず、日常運用でよく使うコマンドの早見表です(herdr --help より)。

コマンド 説明
herdr 起動、またはデフォルトセッションにアタッチ
herdr --session <name> 名前付きセッションを作成・アタッチ
herdr session list セッション一覧を表示
herdr session attach <name> 指定セッションにアタッチ
herdr session stop <name> セッションを停止
herdr session delete <name> セッションを削除
herdr status クライアント・サーバーの状態を表示
herdr server stop サーバーを停止
herdr server reload-config 実行中サーバーに config.toml を再読み込みさせる
herdr --default-config コメント付きデフォルト設定を標準出力に書き出す
herdr update 本体を最新版に更新
herdr --remote <ssh-target> SSH 経由でリモートの herdr サーバーにアタッチ

設定ファイルを編集したあとは、サーバーの再起動ではなく herdr server reload-config で反映できます。

キーバインドの対応

デフォルトのプレフィックスはどちらも ctrl+b です。herdr では設定ファイルで変更できます。

[keys]
prefix = "ctrl+t"
操作 tmux(デフォルト) herdr
新しいタブ / window prefix c prefix c
上下分割 prefix " prefix -
左右分割 prefix % prefix v
ペイン移動 prefix + 矢印 prefix h/j/k/l
ペインを閉じる prefix x prefix x
ズーム prefix z prefix z
セッション/ワークスペース一覧 prefix s prefix w
デタッチ prefix d prefix q
ヘルプ prefix ? prefix ?

tmux で人気のカスタマイズ(上下分割を - にする、vim 風の h/j/k/l 移動)が herdr ではデフォルトになっています。一方、左右分割を |(パイプ)に割り当てる定番カスタマイズは、herdr のキー構文が記号との組み合わせに制約を持つため再現しづらく、デフォルトの prefix v に慣れるのが現実的です。

このほか、tmux に直接対応するものがない herdr 固有のキー操作もあります。

操作 herdr
ワークスペースピッカー prefix w
新規ワークスペース prefix shift+n
ワークスペースを閉じる prefix shift+d
worktree を作成して開く prefix shift+g
サイドバーの表示切替 prefix b
リサイズモード prefix r
設定画面 prefix s

tmux の定番設定と herdr での扱い

tmux の .tmux.conf によく書かれる設定が、herdr でどうなるかの対応です。

tmux での設定 herdr での扱い
history-limit 100000 バイト数指定のスクロールバック(デフォルト約10MB)
mouse on デフォルトで有効
クリップボード連携(pbcopy パイプ) ネイティブ対応、設定不要
カレントパスで新規 window 新規ペインは元の作業ディレクトリを継承(デフォルト)
escape-time 0、truecolor、focus-events 設定不要(デフォルトで対応)
tmux-resurrect + continuum サーバー常駐 + brew services start herdr で代替

tmux でこれらを設定していた背景には、ターミナルエミュレータ側の表示問題を回避するといった歴史的経緯があります。herdr はそうした経緯を引きずっていないぶん、デフォルトのままで済む項目が多くなっています。

tmux にあって herdr にないもの

セッションごとにステータスバーの色を変える 仕組みは、herdr に直接対応する機能がありません。テーマのアクセントカラーはセッション全体で1色です。ただしワークスペースはサイドバーに名前で並ぶため、識別自体は成立します。ラベルに絵文字を含める ことで、色分けに近い視認性は確保できます。機能の完全一致ではなく「プロジェクトを即座に識別する」という目的の達成で考えると、実用上の差は小さくなります。

herdr にあって tmux にないもの

  • エージェント状態のサイドバー表示: 各ペインのエージェントが処理中か入力待ちかを一覧できる
  • エージェント会話の復元: 再起動をまたいで会話セッションごと戻る(resume_agents_on_restore
  • 一時ペインのカスタムコマンド: 終了時に自動で閉じる使い捨てペイン
  • git worktree 統合: worktree を専用ワークスペースとして開く

まとめ

  • herdr はサーバー常駐型のターミナルマルチプレクサで、AI エージェントの状態表示と会話復元を中核に据えています
  • tmux の概念はほぼ一対一で対応しますが、「セッション」という言葉の指す階層が違う点と、session stop がデタッチではない点に注意が必要です
  • tmux の定番カスタマイズの多くはデフォルトに吸収されており、設定ファイルは小さく始められます
  • セッションごとの色分けだけは代替機能がなく、ラベルでの識別が現実的な落とし所です

tmux からの乗り換えを検討する際は、まず自分の .tmux.conf を読み返して「毎日使う操作」と「昔入れたきり効いていない設定」を分けてみると、上の対応表のどこを見ればよいかが絞り込めます。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?