What Cloud Adds
| Feature | Without Cloud | With Cloud |
|---|---|---|
| USB/WebSocket connections | Yes | Yes |
| All configuration panels | Yes | Yes |
| Mission planning | Yes | Yes |
| Video feed (LAN) | Yes | Yes |
| Authentication & profiles | No | Yes |
| Fleet sync across devices | No | Yes |
| Cloud relay to remote drones | No | Yes |
| Community changelog | No | Yes |
| Community roadmap | No | Yes |
| Contact form | No | Yes |
Architecture
The cloud backend is built on Convex, a reactive backend platform. The GCS repo includes a completeconvex/ directory with 25 tables (7 auth + 18 custom).
Key tables:
| Table | Purpose |
|---|---|
profiles | User profiles with roles (admin, member, viewer) |
cmd_droneStatus | Cloud relay drone status (heartbeat from agent) |
cmd_droneCommands | Cloud relay command queue (GCS enqueues, agent polls) |
cmd_missions | Stored missions synced across devices |
cmd_preferences | User preferences synced to cloud |
communityChangelog | Public changelog entries |
comments | Comments on changelog, roadmap, and other content |
contactSubmissions | Contact form submissions |
Cloud Relay
When the GCS runs on HTTPS, it auto-activates cloud mode. This enables connecting to remote drones through the Convex backend. The cloud relay has three layers:- Convex HTTP (Baseline)
- MQTT (Real-time)
- WebRTC (Video)
The simplest layer. The Drone Agent POSTs status to the Convex backend every 5 seconds. The GCS subscribes to reactive queries.
- Latency: 2-5 seconds
- Infrastructure: Just the Convex backend, nothing else
- Use case: Monitoring, fleet overview, non-critical telemetry
Authentication
Cloud mode uses Convex Auth with a password provider. Users sign up with email and password. The first user to register is automatically granted admin role. Roles:- Admin: Full access. Manage users, view all drones.
- Member: Standard access. View paired drones, use community features.
- Viewer: Read-only. Can view fleet status but cannot send commands.
Community Features
The community section (/community route) provides:
- Changelog: Browse project updates and release notes. Admins can create and edit entries.
- Roadmap: View the project roadmap as a kanban board.
- Contact form: Submit feedback or questions.
Self-Hosting
You can deploy your own Convex backend and run the full cloud stack independently.Start the dev backend
From the ADOSMissionControl directory:This starts a local Convex development backend and pushes your schema and functions.
Production Deployment
For production, deploy the Convex backend to Convex Cloud (free tier available) or self-host using Convex’s open-source backend with Docker and SQLite.MQTT Bridge Tool
Thetools/mqtt-bridge/ directory contains a Node.js service that bridges MQTT telemetry to Convex:
- Subscribes to MQTT topics (
ados/+/status,ados/+/telemetry) - Debounces updates (3 seconds per device)
- POSTs to the Convex HTTP API
Video Relay Tool
Thetools/video-relay/ directory contains a video relay that converts RTSP streams to WebSocket fMP4:
- Accepts WebSocket connections from browser clients
- Spawns ffmpeg per device (copy codec, no transcoding)
- Streams fMP4 fragments over WebSocket
- Cleans up ffmpeg when the last viewer disconnects
Offline Behavior
Cloud features degrade gracefully when the network is unavailable:- Local connections (USB, WebSocket) continue to work
- Settings stored in IndexedDB remain available
- Previously loaded fleet data stays visible but marked as potentially stale
- The GCS retries cloud connections in the background