仕組み
各 Buttress サーバーはポート8089 で UDP トランスポートを実行します:
- ANNOUNCE — 5 秒ごとにブロードキャストし、サーバーの
serverInfo(能力、generator、認証ステータス)を含めます。 - QUERY — launcher がクエリをブロードキャストでき、サーバーがユニキャストで RESPONSE を返します。レスポンス遅延はランダム化され、多数のサーバーが同時に応答してストームになるのを防ぎます。
0.0.0.0:8089 で受信ソケットをバインドして受信クエリを受け取り、ローカルブロードキャストインターフェースごとに送信ソケットを 1 つずつバインドして、各サブネットのブロードキャストが正しい NIC から出るようにします。
アナウンスのペイロード
serverInfo には起動時に算出された各バックエンドのハードウェア能力を含む generators[] 配列があります:
ggml-llm を要求します(埋め込みと tokenizer の context はどちらも LLM バックエンドで動きます)。そのため、この種別をアナウンスするサーバーはすべて候補になります。
functions はローカル関数を有効にしたサーバーにのみ現れ、有無と数だけを伝えます。ツール一覧は含まれません — UDP データグラムに収まらないためです。
能力スコア
スコアは 0〜100 の数値で、次の項目を組み合わせています:
GPU なしのノート PC で 15〜25 点ほど、RTX 4090 を積んだワークステーションで 80〜90 点に達します。
信頼モデル
バインド済みサーバーも未バインドサーバーもどちらもアナウンスしますが、launcher の扱いは異なります:- 未バインドサーバー(
authentication.required = false)は信頼されないエンドポイントとして表示されます。手動/パブリッククライアントからは引き続き利用できますが、バインド済み launcher は無視します。 - バインド済みサーバー(
authentication.required = true)は、serverIdがワークスペースのバインド済みサーバー一覧に含まれており、かつ ワークスペースがバインド時に登録した該当サーバー専用のアナウンス鍵で署名されている場合にのみ信頼されます。
署名付きアナウンス
各 Buttress サーバーは独自の Ed25519 アナウンス鍵ペアを持ち、bricks buttress bind 実行時に生成されます。公開鍵は BRICKS クラウドに登録され、launcher へは myWorkspaceButtress.buttressServers[].serverPublicKey 経由で公開されます。秘密鍵はサーバーホストの ~/.bricks-cli/buttress/state.json に保管されます。
バインド済みサーバーが送出するすべての UDP ANNOUNCE と RESPONSE には、{ t, d, ts } に対する署名が付きます。launcher は登録済みの鍵で署名を検証し、30 秒のリプレイウィンドウを適用します。有効な署名のないパケットはエンドポイントプールに入りません。これにより、LAN 上のピアがバインド済み serverId を再アナウンスしてワークスペースの bearer トークンを得ようとするなりすまし経路が塞がれます。
ワイヤープロトコルのバージョンは 2.0 に上がりました。プロトコル 1.0 と 2.0 を実行している launcher/サーバーは互いのパケットを無音で破棄するため、新旧の組み合わせは未署名のまま信頼を交換するのではなく、互いに見えなくなる形で共存します。既存のバインド済みサーバーをアップグレードするには、bricks buttress bind を再実行(新しいアナウンス鍵ペアが生成されます)し、bricks-buttress を再起動してください。
手動指定
自動検出が現実的でない場合(デバイスが別サブネットにある、Buttress サーバーがクラウドにあるなど)、BRICKS Controller の Config Editor で各 LLM/STT brick を Auto から Manual に切り替え、WebSocket URL を直接入力できます。Foundation から Buttress を使用を参照してください。HTTP フォールバック
launcher は既知の IP に対して直接 HTTP で問い合わせることもできます:ANNOUNCE と同じ serverInfo ペイロードを返します。Foundation launcher は UDP ブロードキャストがブロックされている環境(一部の企業 Wi-Fi など)で内部的にこの経路を使用します。
トラブルシューティング
次のステップ
ワークスペースバインディング
サーバーの
kid とバインド済みサーバー一覧の発行方法。Foundation から利用
brick ごとの接続設定:Auto と Manual、ストラテジー、フォールバック。