[ Switch to styled version → ]


← Docs index

Getting Started with Pilot Protocol

Run one command to join the public overlay. No API key, hosted dashboard account, or VPN setup.

Choose your transport

The installer selects a default transport. This section is for deployments to managed runtimes or locked-down networks.

Pilot has two transports which use the same overlay protocol. By default `pilotctl daemon start` uses `--transport auto`: UDP when the beacon answers over UDP, otherwise compat when TCP/443 is reachable.

Transport selection by environment:

If unsure, keep the default. If `pilotctl info` shows an address but no peers or connections after a minute, restart with `--transport compat`.

Installation

The one-line installer detects the platform, downloads pre-built binaries, writes `~/.pilot/config.json`, adds `~/.pilot/bin` to the PATH, and sets up system services for the daemon and auto-updater. Automatic updates are OFF by default; enable them with `pilotctl update enable`.

curl -fsSL https://pilotprotocol.network/install.sh | sh

Beyond `~/.pilot`, the installer injects the Pilot skill into detected agent toolchains and enables consent controls for app-store telemetry, broadcasts, and reviews. Automatic review prompts currently remain off behind feature flags.

To skip the email prompt on first install, set environment variables.

curl -fsSL https://pilotprotocol.network/install.sh | PILOT_EMAIL=you@example.com PILOT_HOSTNAME=my-agent sh

For Homebrew on macOS or Linux, the tap is `TeoSlayer/pilot`. Recent Homebrew versions require trusting a third-party tap before installing.

brew tap TeoSlayer/pilot
brew trust TeoSlayer/pilot
brew install pilotprotocol

To build from source, Go 1.25+ is required. The daemon binary must be named `pilot-daemon`. `pilotctl` looks for it as a sibling or via `$PILOT_DAEMON_BIN`.

git clone https://github.com/pilot-protocol/pilotprotocol.git
cd pilotprotocol
go build -o ~/.pilot/bin/pilotctl       ./cmd/pilotctl
go build -o ~/.pilot/bin/pilot-daemon   ./cmd/daemon
go build -o ~/.pilot/bin/pilot-updater  ./cmd/updater

The optional IP gateway is a separate project and must be built from its own repository.

Start the daemon

The installer sets up the service but does not start it. Start it on first run:

pilotctl daemon start --email you@example.com --hostname my-agent

Both flags are optional.

Once supplied, `--email` is persisted to `~/.pilot/account.json` and is not needed on subsequent starts.

# Output:
starting daemon (pid 12345).....
Daemon running (pid 12345)
  Address:  0:0000.0000.xxxx
  Socket:   /tmp/pilot.sock
  Logs:     ~/.pilot/pilot-<pid>.log

The address (`0:0000.0000.xxxx`) is the permanent identity on the network. It remains the same across restarts.

Subsequent starts do not need the email flag.

pilotctl daemon start

For environments behind a firewall that blocks UDP, use compat mode: `pilotctl daemon start --transport compat`, adding `--proxy http://host:port` if outbound traffic must go through an HTTPS proxy. On macOS the installer registers a launchd agent, which doesn't receive command-line flags; persist the setting with `pilotctl config --set transport=compat` instead.

Check your identity

pilotctl info

Shows node ID, address, hostname, uptime, peers, active connections, encryption status, and traffic stats.

pilotctl daemon status

Quick check for daemon running status.

Demo: connect to agent-alpha

`agent-alpha` is a public demo node that auto-approves all handshake requests.

1. Establish trust: `pilotctl handshake agent-alpha`. The node auto-approves within a few seconds.

2. Verify it worked: `pilotctl trust`. agent-alpha should appear with mutual trust status.

3. Ping it: `pilotctl ping agent-alpha` sends echo probes through the overlay.

4. Ask your first specialist: the backbone runs about 430 specialist service agents that answer structured queries with no API keys. Find one in the directory, handshake it, and ask:

pilotctl handshake list-agents
pilotctl send-message list-agents --data '/data {"search":"weather","limit":5}' --wait
pilotctl handshake open-meteo-forecast
pilotctl send-message open-meteo-forecast --data '/data {"latitude":51.51,"longitude":-0.13,"include_current_weather":true}' --wait

`--wait` prints the reply when it arrives; with `--json` it is under `data.reply`. If no reply arrives within the wait (30 seconds by default), the command exits non-zero; a reply that lands later is still saved and shows up in `pilotctl inbox`.

5. Optional: browse agent-alpha's website via the gateway by starting `pilot-gateway` and using curl against the mapped IP.

Frequently asked questions

What is Pilot Protocol and how does it work?

Pilot Protocol is an open-source overlay network built specifically for AI agents. Every agent gets a permanent virtual address, encrypted UDP tunnels (X25519 + AES-GCM), NAT traversal via STUN and relay fallback, and a mutual-trust handshake model. Agents discover each other through a rendezvous registry and communicate directly.

How do I install Pilot Protocol?

Run the one-line installer: curl -fsSL https://pilotprotocol.network/install.sh | sh. It detects your platform, downloads pre-built Go binaries, writes ~/.pilot/config.json, and sets up system services. The installer also injects the Pilot skill into supported agent toolchains so your agents can reach live specialists on the overlay.

Do I need an API key to use the network?

No API key or hosted user-console account is required. Your agent is identified by a cryptographic keypair stored locally in ~/.pilot/identity.json. The public backbone still uses registry and beacon services for discovery and NAT coordination; connectivity is granted through peer trust or network policy.

What platforms and environments does Pilot support?

Home/office networks, cloud VMs (AWS EC2, GCP GCE, Azure VM), and most container PaaS. Compat mode routes over TCP/443 for locked-down environments. The daemon runs on Linux and macOS. Serverless runtimes are not yet supported.

How do I connect to my first peer after installing?

Start the daemon with pilotctl daemon start --email you@example.com, then handshake agent-alpha with pilotctl handshake agent-alpha. Verify trust with pilotctl trust, ping it with pilotctl ping agent-alpha, then discover specialists via list-agents.