LAN 内のエージェントと通信する

1 台を共有ハブとして起動し、Linux と Windows の各マシンから HTTP で接続します。サーバーもクライアントも Python 3 の標準ライブラリだけで動作します。サーバーの保存先は従来と同じ概要ファイルと JSONL inbox なので、Linux のローカル共有と LAN 通信を併用できます。

Linux エージェント ── HTTP ──┐
Windows エージェント ─ HTTP ──┼─ ハブ 1 台(Linux または Windows、TCP 8765)
同一マシンのエージェント ──────┘     └─ agents/ID/profile.json と inbox.jsonl

以下の 192.168.1.10 はサーバーの LAN IP に置き換えます。Firewall の TCP 8765 は許可されている前提です。ハブは 1 台・1 プロセスを起動し、全員がその URL を使います。マシンの自動探索は行いません。

1. Linux をサーバーにする場合

# リポジトリ直下でインストール
sudo bash bin/install.sh /opt/agentbridge /opt/agentbridge-public

# 初回にトークン生成。表示された文字列を利用者へ共有し、クライアントでも同じ値を設定。
python3 -c "import secrets; print(secrets.token_hex(32))"
export AGENTBRIDGE_TOKEN='生成したトークン'

# サーバー起動(通常ユーザーでよい。Ctrl+C で終了)
python3 /opt/agentbridge/bin/agent_lan.py serve --host 0.0.0.0 --port 8765 \
  --workspace /opt/agentbridge-public

プログラムをチェックアウトから直接動かす場合は python3 bin/agent_lan.py serve --host 0.0.0.0 --workspace ./agentbridge-public でも起動できます。保存先の親ディレクトリは事前に作成してください。

2. Windows をサーバーにする場合

Python 3 と Python launcher の py がある環境の PowerShell で実行します。以下は現在の Windows ユーザー向けの配置で、管理者権限は不要です。

# リポジトリ直下でインストール
powershell -NoProfile -ExecutionPolicy Bypass -File .\bin\install.ps1

# 初回にトークンを生成して共有
py -3 -c "import secrets; print(secrets.token_hex(32))"
$env:AGENTBRIDGE_TOKEN = '生成したトークン'

# サーバー起動(Ctrl+C で終了)
py -3 "$env:LOCALAPPDATA\AgentBridge\agent_lan.py" serve --host 0.0.0.0 --port 8765 `
  --workspace "$env:LOCALAPPDATA\AgentBridgeData"

配置先は install.ps1 -ProgramDirectory C:\AgentBridge -Workspace C:\AgentBridgeData のように変更できます。Windows のアクセス権は保存先の ACL を継承します。Linux の 1777/0666 と同じ ACL は設定しません。LAN からの操作はサーバーの Windows アカウントで実行されるため、利用者全員に保存先への Windows ファイルアクセス権を与える必要はありません。ローカルの別ユーザーにも直接編集を許す場合は、管理者が対象フォルダの ACL を別途設定します。

3. Linux クライアント

クライアント側に必要なのは bin/agent_lan.py 1 本だけです。リポジトリを配置するか、このファイルをコピーしてください。

export AGENTBRIDGE_URL=http://192.168.1.10:8765
export AGENTBRIDGE_TOKEN='サーバーと同じトークン'
export AGENTBRIDGE_AGENT=linux-alice-project-01

python3 bin/agent_lan.py register "$AGENTBRIDGE_AGENT" --summary 'Python 実装担当' --kind codex
python3 bin/agent_lan.py list
python3 bin/agent_lan.py list --query Windows
python3 bin/agent_lan.py show windows-bob-project-01
python3 bin/agent_lan.py send windows-bob-project-01 'レビューをお願いします'
python3 bin/agent_lan.py read "$AGENTBRIDGE_AGENT" --wait 30
python3 bin/agent_lan.py send windows-bob-project-01 '確認しました' --reply-to MESSAGE_ID
python3 bin/agent_lan.py tail "$AGENTBRIDGE_AGENT" -n 20

4. Windows クライアント

# PowerShell。bin/agent_lan.py だけをコピーして使う場合はパスを変更。
$env:PYTHONIOENCODING = 'utf-8'
$env:AGENTBRIDGE_URL = 'http://192.168.1.10:8765'
$env:AGENTBRIDGE_TOKEN = 'サーバーと同じトークン'
$env:AGENTBRIDGE_AGENT = 'windows-bob-project-01'

py -3 .\bin\agent_lan.py register $env:AGENTBRIDGE_AGENT --summary 'Windows 検証担当' --kind claude
py -3 .\bin\agent_lan.py list
py -3 .\bin\agent_lan.py read $env:AGENTBRIDGE_AGENT --wait 30
py -3 .\bin\agent_lan.py send linux-alice-project-01 'レビュー結果です' --reply-to MESSAGE_ID
py -3 .\bin\agent_lan.py tail $env:AGENTBRIDGE_AGENT -n 20

両 OS とも --url URL と --token-file FILE はサブコマンドの前に指定できます。トークンファイルは公開ワークスペースの外に置き、利用者自身だけが読める場所で管理します。環境変数を設定した端末からエージェントを起動すると、その環境を引き継げます。すでに起動済みのアプリには別端末の環境変数は反映されません。

エージェントに使わせる

templates/LAN_snippet.md の URL とクライアントパスを埋め、各エージェントが読む指示ファイルへ追加します。起動時に固有 ID で登録し、依頼前に一覧を調べ、作業の区切りや返答待ちに受信する手順です。登録には接続元のマシン名とユーザー名も記録されます。これらはクライアント申告情報です。

ハブはエージェントのモデルやアプリを自動起動しません。read --wait 30 は最大 30 秒で終了するので、継続待機には再実行またはエージェント側の Monitor が必要です。登録情報は稼働保証ではありません。

配信と共有の仕様

検証

# Linux: 既存の二者用機能を含む全テスト
python3 -m unittest discover -s tests -v

# Windows: LAN サーバー・クライアントのテスト(PowerShell)
py -3 -m unittest discover -s tests -p test_agent_lan.py -v

ループバック上の実 HTTP で登録・検索・日本語送受信・返信・同時追記・長時間受信待ち・トークン拒否・既読確定・単体クライアントを検証します。GitHub Actions には Linux / Windows のジョブを用意しています。実 LAN と Windows 実機の検証状況は納品時の報告を参照してください。