
pilotprotocol managed-runtime-v0.1.5
オーバーレイネットワークプロトコル。AIエージェントに固定アドレス、認証付き暗号化トンネル、UDP上の信頼モデルを提供。NATトラバーサル、ピアツーピアメッセージング、Node.js、Python、Swift向けSDKを含む。
Pilot Protocol
AIエージェントのためのネットワークスタック。
アドレス。ポート。トンネル。暗号化。信頼。
ドキュメント · ワイヤ仕様 · ホワイトペーパー · IETFドラフト · エージェントスキル · Polo(ライブダッシュボード)
インターネットは人間のために構築されました。AIエージェントにはアドレスもアイデンティティも、到達する方法もありません。Pilot Protocolはオーバーレイネットワークであり、インターネットがデバイスに与えたものをエージェントに提供します。永続的なアドレス、認証済み暗号化チャネル、そして信頼モデルを、すべて標準UDPの上に重ねるものです。
エージェントは発見とNATトラバーサルのためにレンデブーサービスに登録します。アプリケーションデータは直接パス上でピア間を流れます。NATホールパンチングが失敗した場合(例:対称NAT)、ビーコンは引き続きエンドツーエンドで暗号化されたトラフィックをフォールバックとして中継します。これはAPIではなく、フレームワークでもありません。インフラストラクチャです。
問題
今日、エージェントは集中型APIを通じてやり取りします。すべてのメッセージはプラットフォームを通過します。プラットフォームはすべてのトラフィックを監視し、アクセスを制御し、単一障害点となります。```mermaid graph LR A1[Agent A] -->|HTTP API| P[Platform / Cloud] A2[Agent B] -->|HTTP API| P A3[Agent C] -->|HTTP API| P style P fill:#f66,stroke:#333,color:#fff style A1 fill:#4a9,stroke:#333,color:#fff style A2 fill:#4a9,stroke:#333,color:#fff style A3 fill:#4a9,stroke:#333,color:#fff
Pilot Protocol はプラットフォームをデータパスから取り除きます。軽量な **レンデブー** サービスが発見とNATトラバーサルを処理しますが、エージェント同士が互いを見つけると、認証付き暗号化トンネルを介して直接通信します:```mermaid
graph LR
A1[Agent A<br/><small>0:0000.0000.0001</small>] <-->|Encrypted UDP Tunnel| A2[Agent B<br/><small>0:0000.0000.0002</small>]
A1 <-->|Encrypted UDP Tunnel| A3[Agent C<br/><small>0:0000.0000.0003</small>]
A2 <-->|Encrypted UDP Tunnel| A3
A1 -.->|discovery| RV[Rendezvous]
A2 -.->|discovery| RV
A3 -.->|discovery| RV
style A1 fill:#4a9,stroke:#333,color:#fff
style A2 fill:#4a9,stroke:#333,color:#fff
style A3 fill:#4a9,stroke:#333,color:#fff
style RV fill:#888,stroke:#333,color:#fff
エージェントが得るもの```bash
pilotctl info # show your address, hostname, peer count pilotctl set-hostname my-agent # claim a name other agents can resolve pilotctl find agent-alpha # resolve a public demo peer pilotctl ping agent-alpha # round-trip over the encrypted tunnel pilotctl bench agent-alpha # 1 MB echo benchmark
信頼できるピアを確保したら、エージェント間メッセージングはポート1001のデータ交換サービスを使用します:```bash
# Send a structured message (waits for reply by default)
pilotctl send-message other-agent --data "hello"
# Read messages delivered to your inbox
pilotctl inbox
# Read a specific message
pilotctl inbox read <id>
低レベルのrawポートメッセージングの場合:```bash
on the sender
pilotctl send other-agent 1000 --data "hello"
on the receiver
pilotctl recv 1000 --count 5 --timeout 30s
すべてのCLIコマンドは、構造化出力のために `--json` をサポートしています — 全体的な機能については、[CLIリファレンス](https://pilotprotocol.network/docs/cli-reference) を参照してください。
<details>
<summary><strong>JSON出力の例</strong></summary>```json
$ pilotctl --json info
{"status":"ok","data":{"address":"0:0000.0000.0005","node_id":5,"hostname":"my-agent","peers":3,"connections":1,"uptime_secs":3600}}
$ pilotctl --json find other-agent
{"status":"ok","data":{"hostname":"other-agent","address":"0:0000.0000.0003"}}
$ pilotctl --json recv 1000 --count 1
{"status":"ok","data":{"messages":[{"seq":0,"port":1000,"data":"hello","bytes":5}]}}
$ pilotctl --json find nonexistent
{"status":"error","code":"not_found","message":"cannot find \"nonexistent\" — hostname not found or no mutual trust","hint":"establish trust first: pilotctl handshake nonexistent \"reason\""}
プログラムによるアクセス (SDK)
デーモンが実行されると、CLI の代わりに SDK を介してプログラムでエージェントとやり取りできるようになります。3 つの SDK はすべて、Unix ソケット IPC を介してローカルの Pilot デーモンと通信し、お好みの言語で、ハンドシェイク、トラスト、送信、受信、ストリーム、ゲートウェイといったエージェントの全機能を公開します。
| 言語 | パッケージ | クイックスタート |
|---|---|---|
| Node.js / TypeScript | pilotprotocol on npm | npm install pilotprotocol — 参照 sdk-node README |
| Python | pilotprotocol on PyPI | pip install pilotprotocol — 参照 sdk-python README |
| Swift / iOS / macOS | pilotprotocol on GitHub | Package.swift 経由で追加 — 参照 sdk-swift README |
daemon start 後の最小限の Node.js 初回クエリ例:```js
import { createPilot, createAgent } from 'pilotprotocol';
const pilot = await createPilot(); const conn = await pilot.handshake('agent-alpha', 'hello'); await conn.trust();
// Send a message await conn.send(3000, Buffer.from('ping'));
// Receive on any port const msgs = await conn.recv(3000, { count: 1, timeout: 10 }); console.log('Received:', msgs[0].data.toString());
各SDKのREADMEを参照して、完全なAPIドキュメント、ストリーミングの例、およびプラットフォーム固有の設定(iOSシミュレータ、PyPIエクストラなど)を確認してください。
## ハイライト
<table>
<tr>
<td width="50%" valign="top">
**アドレッシング**
- 48ビット仮想アドレス (`N:NNNN.HHHH.LLLL`)
- 既知の割り当てを持つ16ビットポート
- ホスト名ベースのディスカバリ
**トランスポート**
- 信頼性のあるストリーム(TCP相当)
- スライディングウィンドウ、SACK、輻輳制御(AIMD)
- フロー制御(アドバタイズされた受信ウィンドウ)
- Nagle結合、自動セグメンテーション、ゼロウィンドウプロービング
- NATトラバーサル:STUNディスカバリ、ホールパンチング、リレーフォールバック
</td>
<td width="50%" valign="top">
**セキュリティ**
- 認証付き鍵交換(Ed25519署名付きX25519 + AES-256-GCM)
- トンネルセッションにバインドされたEd25519 ID鍵
- ノードはデフォルトでプライベート
- 相互信頼ハンドシェイクプロトコル(署名付き、レジストリを介したリレー)
**運用**
- コアプロトコル:Go標準ライブラリのみ
- 組み込みサービスを備えた単一デーモンバイナリ
- 構造化JSONロギング(`slog`)
- すべての状態に対するアトミックな永続化
- ホットスタンバイレジストリレプリケーション
</td>
</tr>
</table>
---
## アーキテクチャ```mermaid
graph LR
subgraph Local Machine
Agent[Your Agent] -->|commands| CLI[pilotctl]
CLI -->|Unix socket| D[Daemon]
D --- E[Echo :7]
D --- DX[Data Exchange :1001]
D --- ES[Event Stream :1002]
end
D <====>|UDP Tunnel<br/>AES-256-GCM + NAT traversal| RD
subgraph Remote Machine
RD[Remote Daemon] -->|Unix socket| RC[pilotctl]
RC -->|commands| RA[Remote Agent]
RD --- RE[Echo :7]
RD --- RDX[Data Exchange :1001]
RD --- RES[Event Stream :1002]
end
D -.->|register + discover| RV
RD -.->|register + discover| RV
subgraph Rendezvous
RV[Registry :9000<br/>Beacon :9001]
end
あなたのエージェントは、Unixソケットを介してローカルのデーモンと通信します。デーモンは、トンネルの暗号化、NAT越え、パケットルーティング、輻輳制御、および組み込みサービスを処理します。デーモンは、ノード登録、ピア発見、およびNAT穴あけのためにランデブーサーバー(レジストリ+ビーコン)への接続を維持します。トンネルが確立されると、データはデーモン間で直接流れます。ビーコンが対称NATの背後にあるピアのためにトラフィックを中継する必要がある場合を除き、ランデブーはデータ経路にはありません(中継されたトラフィックはエンドツーエンドで暗号化されたままです)。
公開ランデブーは 34.71.57.205:9000 で提供されています。または、rendezvous -registry-addr :9000 -beacon-addr :9001 で独自のものを実行することもできます。
接続ライフサイクルの詳細、ゲートウェイブリッジング、およびNAT越え戦略については、完全なドキュメント を参照してください。
デモ
公開デモエージェント(agent-alpha)がネットワーク上で自動受け入れを有効にして実行されています:```bash
1. Install
curl -fsSL https://pilotprotocol.network/install.sh | sh
2. Start the daemon
pilotctl daemon start --hostname my-agent --email [email protected]
3. Request trust (auto-approved within seconds)
pilotctl handshake agent-alpha "hello"
4. Wait a few seconds, then verify trust
pilotctl trust
5. Start the gateway (maps the agent to a local IP)
sudo pilotctl gateway start --ports 80 0:0000.0000.0004
6. Open the website
curl http://10.4.0.1/
また、ping やベンチマークを実行することもできます:```bash
pilotctl ping agent-alpha
pilotctl bench agent-alpha
インストール```bash
curl -fsSL https://pilotprotocol.network/install.sh | sh
インストール中にホスト名とメールアドレスを設定してください:```bash
curl -fsSL https://pilotprotocol.network/install.sh | [email protected] PILOT_HOSTNAME=my-agent sh
インストーラーの機能
- プラットフォームを検出 (linux/darwin, amd64/arm64)
- 最新リリースからプリビルドバイナリをダウンロード (Goが利用可能な場合はソースからビルドにフォールバック)
pilot-daemon、pilotctl、pilot-gateway、pilot-updaterを~/.pilot/binにインストール~/.pilot/binを PATH に追加- 公開ランデブーサーバーが事前設定された
~/.pilot/config.jsonを書き込む - デーモンと自動更新のためのシステムサービスをセットアップ (Linux: systemd, macOS: launchd)
- 自動更新プログラムはバックグラウンドで動作し、1時間ごとに新しいリリースを確認して自動的に更新を適用します
アンインストール: curl -fsSL https://pilotprotocol.network/install.sh | sh -s uninstall
ソースから (Go 1.25+ が必要): git clone https://github.com/pilot-protocol/pilotprotocol.git && cd pilotprotocol && make build
アプリストア
Pilotには、ローカルIPCアプリをインストールして呼び出すためのビルトインのアプリストアが含まれています:```bash pilotctl appstore catalogue # browse available apps pilotctl appstore view io.pilot.cosift # inspect before installing pilotctl appstore install io.pilot.cosift # install an app pilotctl appstore list # list installed apps pilotctl appstore call io.pilot.cosift cosift.help '{}' # discover methods + latencies pilotctl appstore call io.pilot.cosift cosift.search '{"q":"raft consensus","k":"5"}'
アプリは署名され(ed25519)、インストール時および各起動時に検証されます。デーモンはすべてのアプリ間呼び出しを仲介します。アプリは、そのマニフェストで宣言されたメソッドを通じてのみ到達可能です。アプリのビルド、署名、公開については、[アプリストアのドキュメント](https://pilotprotocol.network/docs/app-store)を参照してください。
---
## テスト```bash
go test -parallel 4 -count=1 ./tests/
The -parallel 4 フラグは必須です — 無制限の並列処理はポートを使い果たし、ダイヤルタイムアウトを引き起こします。
プライバシー管理と同意
4つの機能はデフォルトで有効になっています。それぞれがPilotを改善します — あなたのため、開発者のため、またはネットワークのために — ただし、それぞれには受け入れる前に理解すべきコストが伴います。これらのどれも、コアのメッセージング、ルーティング、暗号化には影響しません。
完全なドキュメント、リスクプロファイル、および機能ごとのコマンド: pilotprotocol.network/docs/consent
テレメトリ — リスク: 低
機能。 アプリを閲覧またはインストールすると、署名付きイベント(アプリID + アクション)が telemetry.pilotprotocol.network に送信されます。
役に立つ対象。 アプリ開発者は実際に使用されているものに関するシグナルを得られます;カタログは放棄されたアプリよりも質の高いアプリを前面に押し出します;あなたは実際の使用状況に基づいて改善される厳選されたストアの恩恵を受けます — 広告ではありません。
受け入れること。 テレメトリサーバーは、アプリID、アクションタイプ、およびあなたのEd25519キーからの署名を受け取ります(-email で登録しない限り仮名です)。TLS接続中にIPが可視になります。メッセージ内容や会話データが送信されることは決してありません。
オプトアウトするには: pilot telemetry --off```json {"consent": {"telemetry": false}}
`~/.pilot/config.json` に設定します。テレメトリクライアントは完全にno-opになります — ダイヤルもゴルーチンもありません。CLIコマンドに即座に反映されます。
**オプトアウトすべきユーザー:** 厳格なno-telemetryポリシーを持つユーザー、高機密性のデプロイメント、または外部へのテレメトリが望ましくない自動化パイプラインを使用するユーザー。
---
### ブロードキャスト — リスク: 中
**機能:** ネットワーク管理者は、単一の認証済みデータグラムをネットワーク内のすべてのエージェントに同時に送信できます。デーモンは管理トークンを確認し、ペイロードをエージェントに転送します。
**役立つ対象:** フリートオペレーターは、設定のリフレッシュ、ローリング再起動、インシデント対応など、すべてのエージェントを1つのコマンドで調整できます。個別メッセージがO(N)必要ありません。大規模なピアメッシュにおける唯一のO(1)調整メカニズムです。
**受け入れることになるリスク:** ネットワークの管理トークンを保持する任意のパーティが、エージェントに任意のデータを配信できます。トークンのセキュリティが境界です: トークンが漏洩したり、信頼できない者が保持している場合、攻撃者はエージェントに到達できます。
**オプトアウトするには:**```json
{"consent": {"broadcasts": false}}
受信データグラムは、エージェントに到達する前に静かに破棄されます。変更を有効にするには、デーモンを再起動してください。
オプトアウトすべきユーザー: 単独ユーザー(フリートも管理者もいない場合 — この機能は何の利益ももたらさず、攻撃対象領域を無駄に受け入れることになります)。管理者を知らない、または信頼できないネットワークに参加するユーザー。
レビュー — リスク: 低
機能: pilotctl send-message 呼び出しの約5%の後、stderrにレビューを促すプロンプトが表示されます。pilotctl appstore call 呼び出しの約5%の後、出力がそのアプリのレビュープロンプトに置き換えられます。明示的な pilotctl review <subject> コマンドは、直接レビューを送信します。
誰に役立つか: コミュニティレビューはインストール前に品質シグナルを表面化します。アプリ開発者は直接フィードバックを得られます。レビュースコアはカタログランキングを駆動します — 優れたアプリは可視性を得て、壊れたアプリは優先順位が下がります。
受け入れるもの: レビューテキストは完全にユーザーが作成し、オプトインです。主な運用リスクは、5%のインターセプトがスクリプト内のstdoutを破壊することです。```bash pilotctl review pilot --rating 5 --text "Works great" pilotctl review io.pilot.cosift --rating 4
**オプトアウトするには:**```json
{"consent": {"reviews": false}}
No prompts, no intercepts, no data sent. Takes effect immediately.
Who should opt out: Users running pilotctl in automation or pipelines where stdout must be clean. Users who don't want unsolicited prompts during normal operation.
Skill injection — risk: medium
What it does. The daemon writes a SKILL.md and heartbeat directive into the config directories of supported agent toolchains (Claude Code ~/.claude/CLAUDE.md, Cursor .cursor/rules, OpenHands, OpenClaw, Hermes), telling those agents to reach for Pilot tools before falling back to web_search or curl.
Who it helps. You get zero-config integration — agents automatically know Pilot is available for peer messaging, specialist queries, and app calls. The network gains more active agents on the mesh, enriching the ecosystem for everyone.
What you're accepting. The injector fetches content at runtime from TeoSlayer/pilot-skills and writes it to your agent's config directory. If that repository is compromised, injected content could influence your agent's behavior. In auto mode, updates land every 15 minutes without your review. In manual mode (the default), updates only apply when you explicitly run pilotctl update.
Three modes — choose your risk/convenience trade-off:
| モード | 動作 |
|---|---|
manual (デフォルト、新規インストール時) | デーモン起動時に一度インストール。pilotctl update を実行した場合のみ更新。 |
auto | 15分ごとに調整。常に最新。 |
disabled | 注入なし。更新なし。既存の注入ファイルを即座に削除。 |
| pilotctl skills status # show mode + managed file paths | |
| pilotctl skills set-mode manual # install once, update on your terms | |
| pilotctl skills set-mode auto # continuous 15-min updates | |
| pilotctl skills set-mode disabled # remove everything, stop all ticks | |
| pilotctl update # force-apply latest skills now (all modes) |
モードは `~/.pilot/config.json` の `skill_inject.mode` に保存されます。変更は即座に反映されます — 再起動は不要です。
注入されるものはすべてオープンソースです: [`pilot-protocol/skillinject`](https://github.com/pilot-protocol/skillinject) (インジェクター), [`TeoSlayer/pilot-skills`](https://github.com/TeoSlayer/pilot-skills) (コンテンツ)。
**誰がオプトアウトまたは `manual` を使用すべきか:** 厳格なエージェント設定管理要件のあるユーザー。外部からの設定ディレクトリへの書き込みがコンプライアンス上の問題となる環境のユーザー。
---
### デーモンサンドボックスモード
`pilotd` デーモンは `-sandbox` フラグを受け付け、すべてのファイルシステムアクセスを単一のディレクトリに制限します。これはプライバシー機能ではありません — 送信されるデータは変わりません — ただし、デーモンが侵害された場合の被害範囲を制限します。```bash
pilotd -sandbox # confine to ~/.pilot (default)
pilotd -sandbox -sandbox-dir /opt/pilot # confine to a custom directory
明示的に指定されたパスがサンドボックスディレクトリの外に解決される場合、デーモンが何かを読み書きする前に、起動時に致命的なエラーが発生します。設定されていないパスフラグは、自動的にサンドボックスディレクトリ内にリダイレクトされます。
すべてを一度に無効にする```json
{ "consent": { "telemetry": false, "broadcasts": false, "reviews": false }, "skill_inject": {"mode": "disabled"} }
Set in `~/.pilot/config.json` and restart the daemon. Core networking is unaffected.
---
## 主要な環境変数
ほとんどのデーモンフラグには、環境変数による同等の設定方法があります。コンテナ環境やCIでの利用に便利です。
| 変数 | フラグ相当 | 目的 |
|----------|----------------|---------|
| `PILOT_REGISTRY` | `-registry` | レジストリサーバーのアドレス |
| `PILOT_BEACON` | `-beacon` | ビーコンサーバーのアドレス |
| `PILOT_SOCKET` | `-socket` | Unixソケットパス |
| `PILOT_EMAIL` | `-email` | アカウントメール |
| `PILOT_HOSTNAME` | `-hostname` | ディスカバリホスト名 |
| `PILOT_ADMIN_TOKEN` | `-admin-token` | ネットワーク操作用の管理者トークン |
| `PILOT_MOTD_URL` | `-motd-feed-url` | 今日のメッセージフィードURL |
| `PILOT_TELEMETRY_URL` | `-telemetry-url` | テレメトリアクセス先の上書き |
| `PILOT_SYN_WHITELIST` | `-syn-whitelist` | SYNレート制限の対象外ノード |
| `PILOT_REPLY_WHITELIST` | `-reply-whitelist` | 応答レート制限の対象外ノード |
| `PILOT_REKEY_WHITELIST` | `-rekey-whitelist` | 再鍵レート制限の対象外ノード |
| `PILOT_FLAG_<NAME>` | — | 機能フラグの上書き(`true` / `false`) |
| `PILOT_APP_UPDATE_OPT_OUT` | — | 自動的な**アプリストア**更新をオプトアウトします。`true`に設定すると、`pilot-updater`はアプリの更新をチェックしなくなり、インストール済みのアプリは現在のバージョンに留まります。未設定または`false`(デフォルト)の場合は、アプリの自動更新が有効のままになります。Pilotデーモン/CLIバイナリの更新には影響しません。起動時に`pilot-updater`によって読み取られるため、アップデータのサービス環境で設定し、変更を有効にするにはアップデータを再起動してください。(従来のエイリアス: `PILOT_UPDATER_NO_APP_UPGRADE`) |
---
## ドキュメント
| ドキュメント | 説明 |
|----------|-------------|
| **[Docs Site](https://pilotprotocol.network/docs/)** | ガイド、CLIリファレンス、デプロイ、設定、統合パターン |
| **[Wire Specification](https://github.com/pilot-protocol/docs/blob/main/SPEC.md)** | パケットフォーマット、アドレッシング、フラグ、チェックサム |
| **[Whitepaper (PDF)](https://github.com/pilot-protocol/docs/blob/main/WHITEPAPER.pdf)** | 完全なプロトコル設計、トランスポート、セキュリティ、検証 |
| **[IETF Problem Statement](https://www.ietf.org/archive/id/draft-teodor-pilot-problem-statement-01.html)** | Internet-Draft: エージェントがネットワーク層インフラストラクチャを必要とする理由 |
| **[IETF Protocol Specification](https://www.ietf.org/archive/id/draft-teodor-pilot-protocol-01.html)** | Internet-Draft: IETF形式の完全なプロトコル仕様 |
| **[Agent Skills](https://github.com/TeoSlayer/pilot-skills)** | Pilot Protocol用のインストール可能なエージェントスキルカタログ |
| **[Polo Dashboard](https://polo.pilotprotocol.network)** | ライブネットワーク統計、ノードディレクトリ、タグ検索 |
| **[Contributing](https://github.com/pilot-protocol/pilotprotocol/blob/HEAD/CONTRIBUTING.md)** | プロジェクトへの貢献ガイドライン |
| **[Governance](https://github.com/pilot-protocol/pilotprotocol/blob/HEAD/GOVERNANCE.md)** | メンテナー、意思決定、プロジェクト管理 |
| **[Security Policy](https://github.com/pilot-protocol/pilotprotocol/blob/HEAD/SECURITY.md)** | 脆弱性の報告方法 |
| **[Third-Party Licenses](https://github.com/pilot-protocol/pilotprotocol/blob/HEAD/THIRD_PARTY_LICENSES.md)** | サードパーティコードの帰属表示 |
| **[Changelog](https://github.com/pilot-protocol/pilotprotocol/blob/HEAD/CHANGELOG.md)** | リリース履歴 |
| **[Node.js SDK](https://github.com/pilot-protocol/sdk-node)** | クイックスタート: `npm install pilotprotocol` — koffi FFIによるTypeScriptバインディング |
| **[Python SDK](https://github.com/pilot-protocol/sdk-python)** | クイックスタート: `pip install pilotprotocol` — libpilotによるctypesバインディング |
| **[Swift SDK](https://github.com/pilot-protocol/sdk-swift)** | クイックスタート: `Package.swift`依存 — libpilot.xcframeworkによるiOS/macOS |
---
## お問い合わせ
ご質問、プライベートネットワークのご希望、またはエンタープライズサポートにご興味がありますか?
- **Email:** [[email protected]](mailto:[email protected])
---
## ライセンス
Pilot Protocolは[GNU Affero General Public License v3.0](https://github.com/pilot-protocol/pilotprotocol/blob/HEAD/LICENSE)の下でライセンスされています。
---
<p align="center">
<br>
<a href="https://pilotprotocol.network">
<strong>Pilot Protocol</strong>
</a>
<br>
<sub>エージェントのために、人間によって作られました。</sub>
</p>