peerd: ブラウザネイティブAIエージェント・ハーネス

peerdは、ユーザーがブラウザ内で直接完全なエージェントループを実行できるようにする、ブラウザネイティブのAIエージェント・ハーネスです。ブラウザをランタイムおよびセキュリティモデルとして活用することで、peerdはAIエージェントがタブを操作し、サンドボックス環境でコードを実行し、ビルドをピア・ツー・ピアで共有することを可能にします。これらすべてを、厳格な「バックエンドなし、テレメトリなし」のアーキテクチャを維持しながら実現します。

クライアントサイド・アーキテクチャとセキュリティ

peerdは、データパスにクラウドコンポーネントを含めずに動作するように設計されており、セキュリティと分離のためにブラウザの強化されたプラットフォーム機能に依存しています。APIキーをローカルの暗号化されたヴォルト(Vault)に保存する Bring Your Own Key (BYOK) モデルを採用しています。

Trust Boundaries (信頼境界)

プロンプトインジェクションや不正アクセスを防ぐため、peerdは異なるアクター間の厳格な関心の分離を実装しています。

  • The Vault: APIキーとシークレットを保存します。Touch ID、passkeys、またはパスフレーズを介してのみ復号されます。キーは、選択したモデルプロバイダーに送信される場合を除き、デバイスを離れることはありません。
  • The Main Agent: 会話とプランニングを処理しますが、生のページバイトを読み取ったり、信頼できないコードを直接実行したりすることは禁止されています。
  • The Disposable Runner: ページを操作し、読み取るための制限されたアクターです。その出力は、メインエージェントに返される前に「信頼できない」としてフェンス(隔離)されます。
  • The Egress Chokepoint: すべての送信HTTPリクエストは、プロバイダーの許可リストおよび拒否リストを適用するために safeFetch または webFetch を介してルーティングされ、SSRF (Server-Side Request Forgery) を防止します。
  • The Sandboxes: コード実行は V8 isolates と opaque-origin iframes で行われ、実行されたコードが拡張機能の内部状態にアクセスできないことを保証します。

サンドボックス実行環境

peerdは、異なる計算ニーズに対応するために4つの異なる実行インスタンスを提供し、エージェントがタスクに対して最も効率的なツールを選択できるようにします。

WebVM

CheerpXを活用して、peerdはサンドボックス化された Debian Linux 環境を提供します。これにより、エージェントは実際のバイナリ、シェル、およびマルチ言語スタックを使用できます。VMからのすべてのHTTP送信は、セキュリティを維持するために peerd-egress モジュールを介してインターセプトされ、ルーティングされます。

Notebooks and Headless Workers

Notebooksは、独自のJS realmと OPFS ファイルツリーを持つ、シールドされた Web Workers です。Notebooksはブラウザのタブでユーザーに表示されますが、 Headless Worker (js_run) は、エージェントの迅速かつ一時的な計算ニーズのためにオフスクリーンで動作します。

Apps

エージェントは、サンドボックス化された iframes でレンダリングされる、保存可能な小さなHTMLドキュメント (Apps) を構築できます。これらのアプリはライブで更新されるため、エージェントはユーザーのリクエストに対してリアルタイムで反復作業を行うことができます。

技術的実装とモジュール

プロジェクトは5つのトップレベルモジュールで構成されており、各モジュールはワードマークの各文字に対応しています。

| Module | Role | | :--- | :--- | | | peerd-provider | Anthropic, OpenRouter, および Ollama 用のモデルアダプター。 | | peerd-egress | ヴォルトと監査ログを含む、セキュリティ管理。 | | peerd-engine | サンドボックス (WebVM, Notebooks, Apps) の管理。 | | peerd-runtime | エージェントループ、ツール、メモリ、および音声機能。 | | peerd-distributed | エージェント間通信のための P2P WebRTC ネットワーク (Preview チャネルのみ)。 |

インストールとセットアップ

peerdは、vanilla JS (ES2024+) で書かれた no-build プロジェクトです。Chromiumベースのブラウザ (Chrome, Edge, Brave, Arc) および Firefox で、アンパックされた拡張機能としてロードできます。

  1. リポジトリをクローンし、extension/ フォルダを chrome://extensions のデベロッパーモード経由でロードします。
  2. ローカルのヴォルトを初期化するために、passkey またはリカバリーパスフレーズを使用します。
  3. APIキーを構成するために、Anthropic, OpenRouter, またはローカルの Ollama インスタンスを設定します。

コミュニティの洞察と技術的議論

プロジェクトの技術的な野心は称賛されていますが、一部のコミュニティメンバーは、そのセキュリティモデルと、これほど厳格な分離の必要性について疑問を投げかけています。

"What's the point of all this security though? You don't want it to access your files, just give it its own Linux user."

これらの懸念に対し、作者 (@NotASithLord) は、プロジェクトが各タブを「レジデント」エージェントが所有するモデルへと移行していることを明らかにしました。これにより、コンテキストをさらに分離し、オーケストレーターに必要なシステムプロンプトを削減することで、モデルの使用を最適化し、並列操作を向上させます。

Sources