Skip to main content

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:
  1. Path passed as argument or environment variable (ADOS_CONFIG)
  2. /etc/ados/config.yaml
  3. ./config.yaml (current directory)
  4. 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.
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.