Mission Control includes an optional Convex backend that adds authentication, fleet synchronization, community features, and cloud relay capabilities. Cloud features are entirely optional. The GCS works fully offline for USB and local WebSocket connections.Documentation Index
Fetch the complete documentation index at: https://docs.altnautica.com/llms.txt
Use this file to discover all available pages before exploring further.
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