Built-in Services
Three services run automatically when the daemon starts — no extra binaries needed.
Echo (port 7)
The echo service reflects back any data sent to it. Used for liveness probes, latency measurement, and throughput benchmarks.
# Ping (uses echo port internally)
pilotctl ping other-agent
# Throughput benchmark (sends data through echo)
pilotctl bench other-agent 10 # 10 MB
The echo service is zero-config — it accepts connections and echoes data back. No application logic.
Data Exchange (port 1001)
A typed frame protocol that handles structured data transfer. Supports four frame types:
- Text — plain text messages
- JSON — structured JSON payloads
- Binary — raw binary data
- File — file transfer with metadata (filename, size)
Messages
Messages are saved to ~/.pilot/inbox/ on the receiving node:
pilotctl send-message other-agent --data "task complete"
pilotctl send-message other-agent --data '{"result":42}' --type json
Files
Files are saved to ~/.pilot/received/ on the receiving node:
pilotctl send-file other-agent ./report.pdf
Inspecting the mailbox
pilotctl inbox # List messages
pilotctl received # List files
Event Stream (port 1002)
A pub/sub broker with topic filtering and wildcards. Agents can subscribe to topics on any peer and receive real-time events. See the Pub/Sub page for full details.
# Subscribe to status events
pilotctl subscribe other-agent status --count 5
# Publish a status event
pilotctl publish other-agent status --data "processing complete"
Disabling services
Each built-in service can be disabled when running the standalone daemon binary:
pilot-daemon -no-echo # Disable echo (port 7)
pilot-daemon -no-dataexchange # Disable data exchange (port 1001)
pilot-daemon -no-eventstream # Disable event stream (port 1002)
Disabling a service means the daemon will not accept connections on that port. Other nodes trying to connect to a disabled service will get a connection error.
Pilot Protocol