コンテンツにスキップ
このページの翻訳は LLM によって生成されています。誤りに気づいた場合は GitHub で issue を開いてお知らせください。

永続化とリモートアクセス

Herdr はペインをバックグラウンドサーバーで動かし続けます。ターミナルクライアントはデタッチして、あとで再接続できます。

ローカル、SSH、herdr --remote の各ワークフローについては Herdr での作業の進め方を参照してください。

ctrl+b q でクライアントをデタッチします。ペインとエージェントは動き続けます。再度 herdr を実行すると再アタッチします。セッションとそのペインを停止するには herdr server stop を使います。

サーバーの完全停止後に Herdr が再起動すると、保存されたセッションの形を復元します。デタッチ、サーバー再起動、画面履歴リプレイ、エージェントネイティブのセッション復元、ライブハンドオフでそれぞれ何が生き残るかはセッション状態と復元を参照してください。

独立した Herdr サーバーが欲しいときは名前付きセッションを使います。

Terminal window
herdr session list
herdr session attach work
herdr session attach side-project
herdr session stop work
herdr session delete side-project

名前付きセッションは独自のペイン、タブ、ワークスペース、ソケット、ランタイム状態を持ちます。グローバル設定ファイルは共有されます。

セッションを削除するときは、大文字と小文字も含めて herdr session list に表示される名前を正確に指定してください。大文字と小文字を区別しないファイルシステムでは、herdr session delete foo は Foo という名前のセッションの削除を拒否します。

スクリプトでは --json を使ってください:

Terminal window
herdr session list --json
herdr session stop work --json
herdr session delete side-project --json

Local と複数の SSH マシンを 1 つのウィンドウで使うには、マシンへの接続を参照してください。セットアップ、切り替え、再接続、設定、リモート自動化を説明しています。保存済みマシンを削除してもクライアントが切断されるだけで、リモートセッションは停止しません。

Herdr での作業の進め方でリモート接続の方法を比較しています。サーバーに SSH してそこで herdr を実行する tmux スタイルの方法、保存済み SSH マシンで複数の接続先をまとめる方法、ローカルマシンから単独のセッションに接続する方法があります:

Terminal window
herdr --remote workbox
herdr --remote ssh://you@server:2222

このモードでは、リモートサーバーがペインを動かし、ターミナル内容とセッション状態を SSH 越しに送信します。ローカルの Herdr がサイドバー、メニュー、テーマを含む UI を描画します。クライアントがローカルで動くため、Herdr は画像クリップボードの貼り付けのようなローカルデスクトップ機能をリモートセッションにブリッジできます。画像をリモートの一時ファイルにコピーし、そのパスを貼り付けます。

デフォルトでは、herdr --remote はそのアタッチにローカルの Herdr キーバインドを使います。リモートサーバーの設定が異なっていても、ローカルの操作感覚を維持できます。ローカルキーバインドを編集したら、UI の reload config でデタッチせずに反映できます。リモートサーバーの設定を使いたい場合は --remote-keybindings server を使います。ローカルのカスタムコマンドキーバインドは送信されません。それらのコマンドはリモートホスト上で実行されてしまうからです。

繰り返し接続する相手は SSH config を使ってください:

Host workbox
HostName server.example.com
User you
Port 2222

その後はこれでアタッチできます:

Terminal window
herdr --remote workbox

リモートアタッチと保存済み SSH マシンは、Linux、macOS、Windows のクライアントから、x86_64 または aarch64 の Linux/macOS ホスト、および x86_64 の Windows ホストへの接続に対応します。両端が安定したエンドポイント世代に対応していれば、バージョンは一致しなくても構いません。Linux/macOS ではリモートの PATH 上の互換バイナリを優先し、次に一般的な直接インストール、Homebrew、mise、Nix のパスを確認します。Windows では PATH と現在有効な管理対象リリースを確認します。互換バイナリがなければ、対話的な実行はインストールや更新の確認を求め、非対話的な実行はホストを変更せず失敗します。Linux/macOS では ~/.local/bin/herdr に、Windows ではアプリローカル ConPTY ランタイムを含む完全なパッケージをインストールします。リモートの PATH に ~/.local/bin がない場合は警告します。

デフォルトでは、herdr --remote はユーザーの SSH config を最初に include し、その後にフォールバックのキープアライブ設定を加えた一時的な SSH config を通してリモートセットアップとブリッジを実行します。既存のユーザーのキープアライブ設定が優先されます。Linux と macOS クライアントは接続再利用用のプライベートなアタッチ単位コントロールソケットも使いますが、Windows OpenSSH では使いません。Herdr が生成する設定やコントロールソケットを使わず通常の ssh を使うには [remote].manage_ssh_config = false を設定してください。

リモート接続は通常の OpenSSH 認証を使います。非対話型シェル、スクリプト、CI、モバイルターミナルなどで鍵のパスフレーズを入力できない場合は、先に ssh-agent へ鍵を追加してください:

Terminal window
ssh-add
herdr --remote workbox

認証に失敗したら、まず ssh workbox で通常の SSH 接続を確認してください。

バージョンが違うだけでは、実行中のリモートサーバーを置き換えたり再起動したりしません。必要な互換性や独立したバックグラウンド起動に未対応のサーバーは、停止前に確認します。保存済みマシンには画面配信とヘルスチェックの能力も必要です。マシンへの接続を参照してください。デフォルトの回答は No で、停止するとペインのプロセスも終了します。この一度限りの更新で、対応サーバーのプロセスを実験的なライブハンドオフで維持したい場合は --handoff を渡します:

Terminal window
herdr --remote workbox --handoff

先にサーバーへ SSH してそこで herdr を実行した場合、Herdr は完全にサーバー上で動きます。このモードは便利でシンプルですが、通常のターミナルテキスト貼り付けを超えてローカルデスクトップのクリップボードにはアクセスできません。

Linux/macOS ホストでは、プラットフォームが一致する直接インストールなら現在のローカルバイナリをコピーできます。Homebrew、mise、Nix のインストール、異なるプラットフォーム、または Windows ホストの場合は、https://herdr.dev/latest.json から現在のクライアントバージョンに対応するリリースアセットをダウンロードします。

ローカルビルドやカスタムパッケージを使うには、リモートアタッチ前に HERDR_REMOTE_BINARY にローカルファイルパスを設定します。Linux/macOS 向けには実行ファイル、Windows 向けには完全な herdr-windows-x86_64.zip パッケージを指定してください。

Terminal window
HERDR_REMOTE_BINARY=target/release/herdr herdr --remote workbox

リモートの名前付きセッション

Section titled “リモートの名前付きセッション”

リモートホスト上の名前付きセッションにアタッチするには、--remote と一緒に --session を使います:

Terminal window
herdr --remote workbox --session agents

ダイレクトターミナルアタッチ

Section titled “ダイレクトターミナルアタッチ”

完全な Herdr アタッチはワークスペース UI 全体を開きます。ダイレクトアタッチは、サーバーが所有するターミナルをひとつだけ、現在のターミナルに開きます。

ダイレクトターミナルアタッチは Linux と macOS で利用でき、ネイティブ Windows では利用できません。

エージェントターゲットでアタッチ:

Terminal window
herdr agent attach reviewer

ターミナル ID でアタッチ:

Terminal window
herdr terminal attach term_abc123

ダイレクトアタッチは、現在レンダリングされているターミナル状態をストリーミングし、その後ライブの ANSI フレームを流します。入力はそのターミナルに直接送られます。

ctrl+b q でデタッチします。リテラルの ctrl+b は ctrl+b ctrl+b で送ります。

ひとつのターミナルの入力とリサイズを所有できる書き込み可能なダイレクトアタッチクライアントはひとつだけです。既存の所有者を置き換えるには --takeover を使います:

Terminal window
herdr terminal attach term_abc123 --takeover

描画済みターミナルデータだけが必要な外部ブリッジには、読み取り専用のオブザーバーを使えます:

Terminal window
herdr terminal session observe w1:p1 --cols 120 --rows 40

base64 の ANSI データを含む terminal.frame を改行区切り JSON で出力し、サーバーがストリームを閉じると terminal.closed を出力します。複数のオブザーバーが同じターミナルを監視でき、入力、リサイズ、スクロール、所有権を取得することはありません。

対話型ブリッジには書き込み可能なコントローラーを使います:

Terminal window
herdr terminal session control w1:p1 --takeover --cols 120 --rows 40

同じフレームを出力し、標準入力から改行区切り JSON コマンドを読み取ります。terminal.input はテキストまたは base64 データ、terminal.resize は表示サイズ、terminal.scroll はビューポートのスクロール、terminal.mouse はマウス報告を有効にしたアプリへのセル位置のマウスイベント、terminal.release はコントローラーの終了を扱います。入力とリサイズを所有できるコントローラーは 1 つだけです。