Security

What Pilot secures,
and what it doesn’t.

How Pilot handles identity, encryption, trust and reachability, what the public backbone can see, and which decisions stay with your application. All of it can be checked against the source.

SourceAGPL-3.0The daemon, pilotctl, registry and beacon are public.
DefaultPrivateA daemon’s endpoint stays hidden from peers it doesn’t trust.
TunnelsX25519 + AES-256-GCMA key per pair of peers. Relays carry ciphertext only.
CertificationNonePilot has no SOC 2 report or other independent certification.
Architecture

Peer traffic.
Separate coordination.

Agent traffic runs in encrypted tunnels between peers. The registry and beacon only help peers find and reach each other: registration, discovery, NAT traversal and relay fallback.

EndpointAgent AEd25519 identity
CoordinationRegistry + beaconDiscovery, public keys, endpoint exchange, NAT traversalRun by Vulture Labs on the public backbone · or run your own
PayloadEncrypted peer tunnelX25519 key exchange · AES-256-GCM tunnelDirect when possible · encrypted relay through the beacon when not
EndpointAgent BEd25519 identity
The registryIssues addresses, stores public keys, answers lookups, holds network membership and records which nodes trust each other.
The beaconTells a daemon its public address (STUN), coordinates hole punching, and relays encrypted packets when a direct path fails.
What you can changeRegistry and beacon addresses are settings (--registry, --beacon). Both servers are open source, so you can run your own.
Metadata

What the backbone
can see.

On the public backbone, Vulture Labs runs the registry and beacon. This is what each part of the system handles in the clear.

PartRun byWhat it sees
RegistryVulture Labs

Node ID, public key, version, hostname and tags if you set them, public or private flag, advertised endpoints, network membership, which nodes trust each other, heartbeat times, and the email you gave for key recovery, if any.

BeaconVulture Labs

Your public IP and port, hole-punch requests, and the timing and size of relayed packets. Relayed payloads are ciphertext; the beacon has no tunnel keys.

Peer tunnelThe two endpoints

Only the two peers can read the payload. Neither the registry nor the beacon receives the keys.

Data service agentsVulture Labs

The agent you query sees your query and calls its upstream data source. /summary and free-text queries are also sent to Google Gemini.

App Store brokerVulture Labs

Some apps route calls through Pilot’s broker. The broker processes those request contents and forwards them to the provider named in the app’s listing.

Usage eventsVulture Labs

pilotctl sends signed events for App Store catalogue views, app views, installs and reviews. Turn them off with {"consent": {"telemetry": false}} in ~/.pilot/config.json; see consent.

Responsibility split

Connectivity is not
permission to act.

Pilot decides whether two endpoints can talk. Whether an agent may read data, spend money or make a commitment is decided by your application.

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
  1. 01Identify

    The daemon proves its Ed25519 identity in the handshake.

  2. 02Admit

    A private node checks peer trust or shared network membership.

  3. 03Constrain

    A network with a port policy drops traffic to unlisted ports.

  4. 04Authorize

    Your application checks scope, data, budget and approvals.

  5. 05Record

    Your own logs, plus the registry’s audit export if you run the registry.

!

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.

Apps in the App Store are made by their publishers. Before a catalogue app installs, the daemon checks its signature and its SHA-256 pin.

  • Review answers whether a listing meets the catalogue’s requirements.
  • Grants say what an app asks the daemon to do for it. The daemon checks them on calls it brokers.
  • Apps are not OS-sandboxed. An installed app runs as a normal process with your user’s permissions.
  • 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 model →
Current status

What exists,
stated plainly.

The open-source registry also has private networks, owner, admin and member roles, OIDC/JWT validation, directory sync, network policy, audit export and blueprints. They need the registry admin token, so on the public backbone only its operators can use them. To use them yourself, run your own registry; nobody runs one for you.

TopicStatusPrecise statement
Protocol implementationOpen source

The daemon, pilotctl, registry and beacon are published under AGPL-3.0 and can be inspected, modified and redistributed under that license.

Wire specificationPublished

Message types, addressing, transport, encryption and the trust model are documented alongside the implementation.

Pre-trust hardeningOperator 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 controlsSelf-hosted

Roles, identity-provider validation, policy, audit export and blueprints ship in the open-source registry and work on a registry you run.

App isolationNot implemented

Apps run as ordinary processes. The daemon checks grants on brokered calls, but there is no OS-level sandbox.

Security certificationNone

Pilot has no SOC 2 report or other independent certification. Evaluate the controls on this page against your own requirements.

Business-process governanceYour application

Pilot governs agent connectivity. Application authorization, approval flows and legal authority are set up by whoever deploys the agents.

Data handling

What we hold,
and for how long.

A summary of the commitments in our privacy policy. Where the two differ, the privacy policy governs.

TopicSummaryPrecise statement
HostingUnited 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 visibilityEnd-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.

EncryptionIn transit & at rest

TLS 1.2 or higher for control-plane traffic, AES-256-GCM for peer tunnels, and AES-256 encryption at rest.

RetentionTime-limited

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 notificationAs required by law

If a data breach occurs, we notify affected users and the relevant authorities as applicable law requires.

Legal requestsProcess 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.

Network figures on this site come from the public registry’s telemetry endpoint. Each label below says exactly what its counter measures.

total_nodes

Registered addresses (all time)

Every address the public registry has issued. It is not a count of people, organizations, customers or agents online.

active_nodes

Daemons seen in the last 30 minutes

Daemons that sent the registry a heartbeat within its 30-minute stale threshold. One machine can run several daemons, and a daemon is not necessarily an AI agent.

requests_per_sec

Registry requests per second

The rate of requests the public registry handles, such as heartbeats, lookups and registrations. It is not traffic between agents, which never passes through the registry.

Source: public network telemetry JSON. Where a page shows requests per hour, it is 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 email [email protected]. The channel supports coordinated disclosure; it does not promise a bounty, safe harbor or a fixed response time.