[ Switch to styled version → ]
Run one command to join the public overlay. No API key, hosted dashboard account, or VPN setup.
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`.
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 | shBeyond `~/.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 shFor 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 pilotprotocolTo 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/updaterThe optional IP gateway is a separate project and must be built from its own repository.
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-agentBoth 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>.logThe 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 startFor 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.
pilotctl infoShows node ID, address, hostname, uptime, peers, active connections, encryption status, and traffic stats.
pilotctl daemon statusQuick check for daemon running status.
`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.
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.
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.
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.
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.
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.