Configuration
The agent’s configuration lives at /etc/ados/config.yaml. It is a single YAML file validated by Pydantic models at load time. Every field has a sensible default, so a minimal config (or no config file at all) produces a working agent.
Config search order
When the agent starts, it looks for config in this order:
- Path passed as argument or environment variable (
ADOS_CONFIG)
/etc/ados/config.yaml
./config.yaml (current directory)
- Pure defaults (no file needed)
Full config structure
The config is organized into 16 top-level sections. Here is the complete structure with defaults:
Key settings explained
Agent profile
When set to auto, the agent fingerprints the hardware at boot. If it finds an OLED on I2C, GPIO buttons, an RTL8812EU in receive mode, and no flight controller, it picks ground_station. Otherwise it picks drone.
Force a specific profile by setting it explicitly.
MAVLink serial port
Leave serial_port empty for auto-detection. The agent scans /dev/ttyS*, /dev/ttyAMA*, and /dev/ttyACM* based on the board profile’s uart_paths. It tries each port at the configured baud rate and looks for MAVLink heartbeats.
Common baud rates: 57600 (ArduPilot default), 115200 (PX4 default), 921600 (high-speed telemetry).
Video codec
Use h264 for maximum compatibility. Browser-based players (MSE, WebRTC) expect avc1.640029 (H.264 High Profile Level 4.1). H.265 saves bandwidth but browser support is inconsistent for WebRTC.
Cloud server mode
- cloud: connects to the ADOS cloud backend.
- self_hosted: connects to your own MQTT broker and Convex instance.
- local: no cloud connectivity; Mission Control reaches the agent over the LAN. Default.
For both cloud and self_hosted modes, the url must point at the Convex site origin on port :3211 (HTTP actions: pairing register, heartbeat, command poll), not the client API on :3210. If you paste the :3210 URL, the register call lands on the wrong origin and returns a 404. The agent normalizes a known :3210 URL to :3211 as a safety net, but set :3211 explicitly. See Self-hosting the agent.
Vision backend
When auto, the agent probes for available inference backends in order: RKNN (Rockchip NPU), TensorRT (NVIDIA), OpenCV DNN, TFLite. It picks the first one that initializes successfully.
Reading and writing config
Use the setup webapp for common MAVLink, video, network, and remote-access
settings. Advanced users can edit /etc/ados/config.yaml directly or use the
REST API.
From the REST API
Editing the file
You can edit /etc/ados/config.yaml directly with any text editor, then restart the affected service (see the tip at the end of this page). The terminal status page (ados) is read-only and does not edit config.
Per-board overrides
The install script writes board-specific overrides into /etc/ados/config.yaml during installation. For example, a Raspberry Pi 4B gets:
While a Radxa ROCK 5C Lite gets:
These overrides are merged on top of the built-in defaults. Your manual edits always take priority.
After editing the config file manually, restart the affected service for changes to take effect. For example, sudo systemctl restart ados-mavlink after changing the baud rate.