What Pilot secures, and what it doesn’t.
- Source
- AGPL-3.0
- The daemon, pilotctl, registry and beacon are public.
- Default
- Private
- A daemon’s endpoint stays hidden from peers it doesn’t trust.
- Tunnels
- X25519 + AES-256-GCM
- A key per pair of peers. Relays carry ciphertext only.
- Certification
- None
- Pilot has no SOC 2 report or other independent certification.
Controls that ship
In the code you can read.
- Ed25519 identitysigned handshakesEach daemon has a persistent key pair. Trust handshakes and identity-changing registry operations, such as key rotation, are signed with it.
- Encrypted tunnelsoff only with
--no-encryptX25519 key agreement gives each pair of peers its own secret. AES-256-GCM encrypts and authenticates every tunnel packet. - Mutual trust handshakesrevoke with
pilotctl untrustA private node accepts streams and datagrams only from peers it trusts or shares a network with. A handshake has to be approved. - Private by defaultDirectory lookups don’t hand a private node’s endpoint to untrusted peers. Some metadata, such as a hostname you set, stays visible.
- Package signing and pinningCatalogue apps are reviewed, signature-verified and SHA-256 pinned before they install. You accept an app’s declared grants at install.
- Pre-trust hardeningoperator flagsFlags on the daemon, registry and beacon extend trust checks to key exchange, directory lookups, registration and hole punching. Whoever runs each component turns them on.
Architecture
Peer traffic. Separate coordination.
What you can change. Registry and beacon addresses are settings (--registry, --beacon). Both servers are open source, so you can run your own.
Metadata
What the backbone can see.
Run by Vulture Labs
Registry
- Node ID
- Public key
- Version
- Hostname and tags, if set
- Public or private flag
- Advertised endpoints
- Network membership
- Which nodes trust each other
- Heartbeat times
- Recovery email, if given
Traffic between agents never passes through it.
Beacon
- Your public IP and port
- Hole-punch requests
- Timing and size of relayed packets
Relayed payloads are ciphertext; the beacon has no tunnel keys.
Data service agents
- Your query
The agent you query calls its upstream data source.
/summaryand free-text queries are also sent to Google Gemini.App Store broker
- Contents of brokered requests
Some apps route calls through Pilot’s broker, which forwards them to the provider named in the app’s listing.
Usage events
- Catalogue views
- App views
- Installs
- Reviews
Signed events from
pilotctl. Turn them off with{"consent": {"telemetry": false}}in~/.pilot/config.json; see consent.
Run by the two endpoints
Peer tunnel
Only the two peers can read the payload. Neither the registry nor the beacon receives the keys.
Responsibility split
Connectivity is not permission to act.
01Identify
The daemon proves its Ed25519 identity in the handshake.
02Admit
A private node checks peer trust or shared network membership.
03Constrain
A network with a port policy drops traffic to unlisted ports.
04Authorize
Your application checks scope, data, budget and approvals.
05Record
Your own logs, plus the registry’s audit export if you run the registry.
01IdentifyPilot
The daemon proves its Ed25519 identity in the handshake.
02AdmitPilot
A private node checks peer trust or shared network membership.
03ConstrainPilot
A network with a port policy drops traffic to unlisted ports.
04AuthorizeYour application
Your application checks scope, data, budget and approvals.
05RecordYou, plus the registry if you run it
Your own logs, plus the registry’s audit export if you run the registry.
Pilot handlesIdentity and reachability
- Daemon identity and signed handshakes
- Encrypted tunnels between peers
- Who can reach a private node: trust and network membership
- Rejecting and revoking trust
- NAT traversal and relay fallback
- On a registry you run: roles, network policy and audit export
Your application ownsWhat an agent may do
- Which tasks, tools and methods an agent may use
- Spending, order and counterparty limits
- Human approval for consequential actions
- What data an agent may read, share or keep
- Prompt, model and tool safety
- Legal, regulatory and contractual compliance
A trusted connection only means two endpoints may exchange packets.
It does not authorize a purchase, a payment, a data disclosure or a contract. Put those checks in the application, with human approval where the consequence warrants it.
App Store
Checked packages. Ordinary processes.
- 01
ReviewedReview answers whether a listing meets the catalogue’s requirements. - 02
Signature verifiedThe daemon checks the package signature before it installs. - 03
SHA-256 pinnedThe package has to match its pinned hash. - 04
Grants acceptedThe manifest declares what the app asks the daemon to do; you accept it at install. - 05
Ordinary processNot OS-sandboxed. It runs with your user’s permissions.
The daemon checks grants on calls it brokers. Most apps run locally and are free. Some call their publisher’s hosted service, and a few are metered against a per-user budget.
Read the App Store modelCurrent status
What exists, stated plainly.
Protocol implementation
Open source
The daemon, pilotctl, registry and beacon are published under AGPL-3.0 and can be inspected, modified and redistributed under that license.
Wire specification
Published
Message types, addressing, transport, encryption and the trust model are documented alongside the implementation.
Pre-trust hardening
Operator flags
Strict checks on key exchange, directory lookups, registration and hole punching. Off by default; whoever runs the daemon, registry and beacon turns them on.
Registry controls
Self-hosted
Roles, identity-provider validation, policy, audit export and blueprints ship in the open-source registry and work on a registry you run.
App isolation
Not implemented
Apps run as ordinary processes. The daemon checks grants on brokered calls, but there is no OS-level sandbox.
Security certification
None
Pilot has no SOC 2 report or other independent certification. Evaluate the controls on this page against your own requirements.
Business-process governance
Your application
Pilot governs agent connectivity. Application authorization, approval flows and legal authority are set up by whoever deploys the agents.
Policies
The documents a reviewer asks for.
Data handling
What we hold, and for how long.
Hosting
United States
The registry and Pilot-operated agents run on Google Cloud Platform, with data at rest in us-central1. The website is served by Cloudflare’s global edge network.
Payload visibility
End-to-end
Peer-to-peer tunnel traffic is end-to-end encrypted, and we do not hold the keys. Relayed traffic stays encrypted; we see only routing metadata. Brokered App Store calls are the exception: our broker processes their request contents and forwards them to the provider named in the listing.
Encryption
In transit & at rest
TLS 1.2 or higher for control-plane traffic, AES-256-GCM for peer tunnels, and AES-256 encryption at rest.
Retention
30 days
Registration data is deleted after an agent has been offline for 30 consecutive days. Server access logs are deleted after 30 days. See the full retention schedule.
Breach notification
As required by law
If a data breach occurs, we notify affected users and the relevant authorities as applicable law requires.
Legal requests
Process required
We disclose user data only under valid, legally binding process, and we notify affected users first unless the law prohibits it. See the full policy.
Metric definitions
What the live counters count.
total_nodes
~253,000
Registered addresses (all time)
CountsEvery address the public registry has issued.
Is notA count of people, organizations, customers or agents online.
active_nodes
~219,000
Daemons seen in the last 30 minutes
CountsDaemons that sent the registry a heartbeat within its 30-minute stale threshold.
Is notA count of machines or AI agents. One machine can run several daemons, and a daemon is not necessarily an AI agent.
requests_per_sec
15,944
Registry requests per second
CountsThe rate of requests the public registry handles, such as heartbeats, lookups and registrations.
Is notTraffic between agents, which never passes through the registry.
requests_per_sec × 3,600. Build-time values are used when the endpoint can’t be reached. These counters have not been independently audited.Report a vulnerability
Found something? Tell us privately.
Send security issues, privacy concerns and bugs through the disclosure form, or by email. The channel supports coordinated disclosure; it does not promise a bounty, safe harbor or a fixed response time.