ados-cloud service) lets you monitor and control a drone from outside its network. It works behind NAT, through firewalls and over cellular, with no port forwarding: every connection is outbound. The relay is opt-in and off by default. On the same LAN, Mission Control reaches the agent directly (see Pairing).
What crosses the relay
The relay bridges the raw MAVLink stream to the broker so a remote Mission Control decodes it in the browser, exactly as it does over the LAN WebSocket. There is no separate telemetry topic.
Video signaling
- Mission Control publishes an SDP offer to
ados/{deviceId}/webrtc/offer, tagged with its session id. ados-cloudPOSTs the offer to the local MediaMTX WHEP endpoint.- MediaMTX returns an SDP answer.
ados-cloudpublishes the answer toados/{deviceId}/webrtc/answer/{sessionId}.- The browser and the drone connect peer to peer, and video flows directly between them.
Connection modes
- Local / cloud-off (default)
- Cloud
- Self-hosted
No cloud connectivity. The MAVLink proxy, video and REST API all work locally; only remote access is off.Use this for air-gapped work, bench testing or LAN-only flying.
server.* keys:
MQTT transport
ados-cloud uses rumqttc over WSS/TLS (system webpki roots), QoS 0 for the MAVLink plane and QoS 1 for WebRTC signaling, and a bounded publish queue that drops when the broker is down. Each lane holds its own broker session with its own ClientID (ados-{deviceId} for MAVLink, ados-{deviceId}-msp, ados-{deviceId}-webrtc, ados-{deviceId}-plugin-publish, ados-{deviceId}-plugin-update), so the lanes never evict each other. A dropped session reconnects every 3 seconds and resubscribes on every reconnect.
Heartbeat
While paired, the agent POSTs its status to{convex}/agent/status every 5 s (fixed, not configurable), authenticated by its X-ADOS-Key. Mission Control reads the status row to show the drone online and to fill the per-drone view.
Security
- MQTT uses WebSocket over TLS (
wss://, port 443) in cloud mode. - Convex HTTP uses HTTPS.
- WebRTC media is encrypted with DTLS-SRTP.
- The agent authenticates with the API key it received at pairing.
Checking cloud status
From the CLI:cloud_choice carries mode, backend_url and paired. Plain ados status prints the same as a Cloud relay line.
From the REST API:
Next steps
Cloud infrastructure
Backend architecture and the full MQTT topic reference.
Self-hosting
Run the broker, bridge and backend yourself.
MAVLink signing
Protect commands that travel over the relay.
Battery health
Per-pack health computed on the drone.