Pairing
Pairing connects your drone agent to your ADOS Mission Control account. Once paired, the drone appears in your GCS dashboard, telemetry flows through the cloud, and you can send commands from anywhere. Pairing is optional. The agent works fully without it (local MAVLink, local video, local REST API). Cloud features require pairing.How pairing works
Agent generates a pairing code
On first boot (or after unpairing), the agent generates a 6-character alphanumeric pairing code. The code has a 15-minute TTL and regenerates after expiry.
You enter the code in Mission Control
Open ADOS Mission Control, go to the Hardware tab, and click “Pair New Device.” Enter the 6-character code displayed by the agent.
Cloud exchange
Mission Control sends the pairing code to the Convex backend. The backend validates it, associates the device with your account, and generates an API key.
Agent receives the API key
The agent polls the Convex pairing endpoint every 30 seconds (configurable via
pairing.beacon_interval). When the backend confirms the pairing, the agent stores the API key at /etc/ados/pairing.json and begins sending telemetry to the cloud.Pair during install
The fastest way to pair is during installation:Pair an existing agent
From the CLI
Check the current pairing code:From the TUI
Launchados tui, go to the Dashboard screen. The pairing code is displayed prominently when the agent is unpaired.
From the setup webapp
If the agent is running in ground station profile with a WiFi hotspot, connect to the hotspot and openhttp://192.168.4.1 in a browser. The setup webapp shows the pairing code and provides a “Pair” button.
Pairing state file
After pairing, the agent stores credentials at/etc/ados/pairing.json:
Unpairing
Unpairing disconnects the agent from your cloud account. The drone disappears from Mission Control and stops sending telemetry. From the CLI:- A new pairing code is generated immediately
- The old API key is invalidated
/etc/ados/pairing.jsonis updated- Cloud relay services stop sending data
- Local functionality (MAVLink, video, REST API) continues working
API key authentication
Once paired, the REST API requires theX-ADOS-Key header on most endpoints. A few endpoints are exempt (like /api/pairing/info) so the CLI and TUI can check pairing status without a key.
The CLI reads the key from /etc/ados/pairing.json automatically. If you are calling the API from your own code, include the header:
Configuration
Pairing behavior is controlled in/etc/ados/config.yaml:
mDNS discovery
The agent advertises itself via mDNS as_ados._tcp.local. when discovery is enabled (default). This allows Mission Control to find drones on the local network without knowing their IP addresses.