
peerd v0.5.0
ブラウザネイティブ初のAIエージェントハーネス。作業中の環境で完全なエージェントループを実行するブラウザ拡張機能です。タブを操作し、サンドボックス化された計算環境(JSノートブック、WASM Linux VM、クライアントサイドアプリ)を起動し、作成したものをピアツーピアで共有します。BYOK(Bring Your Own Key)、バックエンドなし、テレメトリなし。
初のWebネイティブAIエージェントハーネス
peerdは、ブラウザのプリミティブ(Workers、オリジン、サンドボックス、OPFS、WASM/WASI、WebRTC、WebAuthn、WebExtensions)の上に直接構築された、初の汎用エージェントランタイムです。タブ、サインイン済みセッション、Webアプリ、ローカルコンピュートとともに、ChromeとFirefoxの内部で完全に動作します。
エージェントプラットフォームがブラウザをハーネスに取り込もうとしている一方で、peerdはハーネスをブラウザに取り込みます。
実際の推論には、サポートされているホスト型モデルプロバイダー、localhostを使ったローカルモデル、またはローカルWebGPUモデルの予備的サポート(WebNNも注視しています)を選択できます。
peerdアカウント、ホスト型ブラウザ、ツールサーバーへの接続は不要です。現在の ビルドはpeerdに製品テレメトリを送信しません。
インストール · peerd.ai · アーキテクチャ · セキュリティ
機能
- 普段使っているブラウザで動作します。 エージェントはタブ、Webアプリ、サインイン済みセッション、ページコンテンツを読み取り、操作できます。
- 再利用可能なサイトクライアントを構築します。 Webアクターはサイトを一度学習し、そのクライアントを後のタスクで再利用できます。
- ブラウザの境界内でコードを実行します。 スクリプト、封印されたJavaScript Notebook、コンパイル済みWASIツール、ブラウザApps、Linux WebVMにより、エージェントはホストOSにアクセスすることなくローカルコンピューティングを利用できます。
- 別々のアクターに委任します。 各ページとコンピューティング環境には、その環境にスコープされたツールを持つ独自のキーレスアクターが割り当てられます。
- 有用なコンテキストを保持します。 セッション、メモリ、スキル、ゴール、レビュー、チェックポイントは拡張機能内に保存されます。
- 選択したモデルを使用します。 利用可能なプロバイダーの一覧は
registry.jsで定義されており、BYOKクラウドアダプターやキーレスのローカルオプションが含まれます。 - ブラウザを直接接続します。 プレビュービルドでは、署名付きID、ブラウザ間ディスカバリ、dwapps、WebRTC経由のエージェント間通信が追加されます。ストアパッケージではこれらは完全に削除されます。
なぜブラウザなのか
ローカルエージェントはコンピュータ全体にアクセスできます。リモートエージェントは他人の環境に存在します。ブラウザはその代替です。30年以上にわたって強化されてきたセキュリティ境界の内側にあるローカル機能です。
peerdはこれらの境界を利用します。ページ作業は、そのタブや環境専用のツールのみを持つ別々のアクターに委任されます。認証情報、ネットワークルール、確認、監査は拡張機能側に留まります。その多層防御設計は、安全でないコンテンツが最終的にフィルターを通過することを前提としています。
ブラウザサポート
peerdはChromiumとFirefoxをサポートします。Firefoxではアクターを専用ワーカーで実行し、JavaScriptコンピューティングには可視のNotebookを使用します。Chromeのオフスクリーンドキュメントホストを必要とする機能は、使用前にFirefoxのコントロールとモデルツールから削除されます。Firefoxのプレビュービルドでは、Firefoxにメッシュホストが実装されるまでdwebは省略されます。
AppsとWebVMはChromeで動作します。Appsには周囲のネットワークアクセスがありません。リモートリソース、フェッチ、WebRTC、フォーム、外部ドキュメントへのナビゲーションはブロックされます。外部HTTPおよびHTTPSリンクにはユーザーの確認が必要です。
具体的なブラウザ機能のギャップ、その上流のイシュー、各ガードを削除するために必要なテストはdocs/BROWSER-COMPATIBILITY.mdで追跡されています。
現在の動作についてはコードが信頼できる情報源です。まずCLAUDE.mdから始め、次にextension/配下の関連モジュールを読んでください。
セキュリティモデル
peerdはブラウザの分離、ツール公開の最小化、サービスワーカーのポリシーゲート、明示的な外向き通信制御を使用します。メインエージェントは環境作業をキーレスアクターに委任します。ChromeとFirefoxでは、非オーケストレーターのエージェントループは別々の専用ワーカーヒープで実行されます。ブラウザがその境界を証明できない場合、アクターリクエストは実行されず、対象に対して何の作業も行いません。
ネットワークの動作は操作によって異なります。モデル呼び出し、Web読み取り、ランタイムアセットの読み込み、サンドボックストラフィック、プレビューdwebトラフィックは、それぞれ異なるスコープ付きパスとポリシーを使用します。現在の境界と既知の制限については、SECURITY.mdと脅威モデルを参照してください。
インストール
ソースからChromeへ
- リポジトリをクローンします。
chrome://extensionsを開きます。- デベロッパーモードを有効にします。
- パッケージ化されていない拡張機能を読み込むを選択し、
extension/ディレクトリを指定します。
ソース変更後はchrome://extensionsから拡張機能を再読み込みしてください。
ソースからFirefoxへ
FirefoxにはFirefox専用のパッケージが必要です。チェックインされているChrome開発用マニフェストを読み込まないでください。manifests/配下のチャネルパッチで宣言されている最小バージョン以上のFirefoxを使用してください。この下限は、ブラウザツールが使用するドキュメントバインド型スクリプティングサポートに追従しています。
bun run package -- --channel=preview --browser=firefox --no-sign
about:debugging#/runtime/this-firefox を開き、Load Temporary Add-on を選択して、artifacts/peerd-preview-firefox.xpi を選びます。一時アドオンは Firefox の再起動後に再度読み込む必要があります。ブラウザとチャネルの変換はパッケージングスクリプトで定義されています。
リリースパッケージ
最新の成果物については GitHub Releases を参照してください。ストアビルドとプレビュービルドは異なります。ストアビルドには dweb が含まれません。プレビュービルドには dweb が含まれ、追加の自動化機能が有効になる場合があります。各ブラウザとチャネルについてはパッケージングコードが正式な基準です。
初回実行
- ブラウザのツールバーから peerd を開きます。
- ローカルボルトを作成してロックを解除します。パスフレーズによるロック解除は常に利用可能です。パスキーによるロック解除は、ブラウザとデバイスにおける WebAuthn PRF のサポートに依存します。
- 短いプロファイルのオンボーディングを完了します。
- 設定を開き、プロバイダーキーを追加するか、サポートされているローカルプロバイダーを選択します。
- モデルを選択してチャットを開始します。
ボルトの暗号化境界で保護されるのは、ボルトのシークレットと保護されたセキュリティレコードのみです。その他のローカル拡張機能の状態は、セキュリティドキュメントに記載されているストレージルールに従います。
アーキテクチャ
この拡張機能には 5 つの主要モジュールがあります。各モジュールは index.js を通じてパブリック API を公開します。
| モジュール | 役割 |
|---|---|
peerd-provider | モデルアダプターとレスポンスのフォーマット |
peerd-egress | ボルト、ネットワークポリシー、デナイリスト、監査 |
peerd-engine | WebVM、Notebook、App、ヘッドレス実行 |
peerd-runtime | エージェントループ、アクター、ツール、セッション、メモリ、権限 |
peerd-distributed | プレビュー専用のピアツーピアネットワークと dwapps |
拡張機能のシャーシは background/、offscreen/、sidepanel/、engine-tabs/、permissions/、shared/、および関連するサポートディレクトリにあります。ホストの配置とコールドワーカーのルールは docs/EXTENSION-HOSTS.md に記載されています。
開発
ソース拡張機能は ES モジュールを使用したバニラ JavaScript であり、アンパックで読み込むと直接実行されます。開発用のバンドラー、トランスパイラー、ウォッチャー、生成されたランタイムツリーはありません。リリースパッケージングでは、使い捨てのステージングコピー上でのみ Bun を使用し、静的サービスワーカーおよび Chrome オフスクリーンのコールドグラフ内の作成済みモジュールから空白やコメントを除去します。モジュール境界、バインディング名、遅延インポート、およびすべてのベンダー提供バイトは保持されます。読みやすい診断用成果物が有用な場合は、bun run package -- ... に --no-minify を渡してください。
bun install
bun run gen:dev
bun test ./tests
bun scripts/cdp/run-inbrowser-tests.mjs
bun run typecheck
bun run lint
bun run e2e:verify
bun run preflight
テストサーフェスは3つあります:
- 純粋なロジック向けのBunテスト。
- 拡張機能とブラウザ統合向けのブラウザ内テスト。これらはChrome上でヘッドレスに、またシャード化されてGecko上でインストール済みのFirefox Storeパッケージに対して実行されます。各レーンは登録されたすべてのテストを実行しますが、一部のテストはライブのサービスワーカーが応答する場合にのみ登録されるため、合計数はわずかに異なります。
- 完全なフロー向けのライブChrome E2Eおよび視覚的検証。