Skip to main content
Foundation launcher にはハードコードされたサーバー URL は不要です。各 Buttress サーバーが LAN 上で自身を通知し、バインド済み launcher が generator の種類ごとに最も適したサーバーを選びます。

仕組み

各 Buttress サーバーはポート 8089 で UDP トランスポートを実行します:
  • ANNOUNCE — 5 秒ごとにブロードキャストし、サーバーの serverInfo(能力、generator、認証ステータス)を含めます。
  • QUERY — launcher がクエリをブロードキャストでき、サーバーがユニキャストで RESPONSE を返します。レスポンス遅延はランダム化され、多数のサーバーが同時に応答してストームになるのを防ぎます。
トランスポートは 0.0.0.0:8089 で受信ソケットをバインドして受信クエリを受け取り、ローカルブロードキャストインターフェースごとに送信ソケットを 1 つずつバインドして、各サブネットのブロードキャストが正しい NIC から出るようにします。

アナウンスのペイロード

serverInfo には起動時に算出された各バックエンドのハードウェア能力を含む generators[] 配列があります:
Foundation launcher は generator の種類(LLM、STT、MLX、GGML TTS、ONNX STT、ONNX TTS)でアナウンスをフィルターし、要求されたバックエンドを実行できる中で最高スコアのサーバーを優先します。Vector Store brickggml-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 ANNOUNCERESPONSE には、{ 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 で問い合わせることもできます:
このエンドポイントは UDP ANNOUNCE と同じ serverInfo ペイロードを返します。Foundation launcher は UDP ブロードキャストがブロックされている環境(一部の企業 Wi-Fi など)で内部的にこの経路を使用します。

トラブルシューティング

次のステップ

ワークスペースバインディング

サーバーの kid とバインド済みサーバー一覧の発行方法。

Foundation から利用

brick ごとの接続設定:Auto と Manual、ストラテジー、フォールバック。