/etc/ados/profile.conf. The agent does not detect it from the hardware.
The four profiles
Reconstruction and perception offload are not core services on any profile. They come with the World Engine extension, which the installer turns on by default for
workstation and compute and leaves off for the other two.
The installer accepts ground-station and ground_station as the same value and saves the underscore form. Use ground_station in commands and config.
What each profile starts
The supervisor keeps one service registry with a profile gate on each entry. A service with no gate runs on every profile; a gated one runs only on the profiles it names.- Every profile runs the core shell: the native HTTP front on port 8080, the cloud relay, the plugin host and the extensions installed on it. The Black Box log store is available everywhere but ships off.
droneandground_stationadd the MAVLink router, the swarm state bus, and the optional CRSF control lane and config-over-radio service when they are enabled.workstationandcomputehave no flight controller, so they never install or start the MAVLink router.droneadds the camera encode pipeline, the WFB-ng transmitter and the onboard vision services.ground_stationadds WFB-ng receive and video serving, the OLED and display, the Wi-Fi access point, the HDMI kiosk and input stack with the pilot-in-command arbiter, the uplink router and, by role, the mesh services.workstationandcomputerun only the core shell. With the World Engine extension installed, its node service runs here and never on a drone or ground station.
How the profile is chosen
The agent resolves the profile in this order:agent.profilein/etc/ados/config.yaml, when it holds an explicit value./etc/ados/profile.conf, when the config field isauto, empty or absent. The installer always writes this file, andados profile setchanges it.droneas the final fallback.
--profile when you pass it, then an existing /etc/ados/profile.conf (so an upgrade keeps the profile), then drone. In the interactive installer, the What is this device? screen sets it; pick This receives on the ground (Ground station) for a ground station. A non-interactive install with no --profile on a fresh box installs a drone.
Pin the profile at install time:
--board flag. For every installer flag, see Install the Drone Agent.
macOS installs a workstation
On macOS the install script builds the installer from source and passes--profile workstation unless you pinned a profile yourself. It needs the Rust toolchain (install it with rustup) and the Xcode Command Line Tools (xcode-select --install), and the first install compiles from source. It refuses to run under sudo: a Mac node installs per-user LaunchAgents under $HOME/.ados, not into /opt and /etc.
Inspect and change the profile
ados profile set accepts drone and ground_station (and the ground-station spelling). It writes both /etc/ados/profile.conf and agent.profile in /etc/ados/config.yaml, then restarts ados-wfb, ados-wfb-rx and ados-supervisor so the new gates take effect. Pass --no-restart to skip that and restart yourself:
What a workstation node does not have
A macOS workstation node is rootless and runs only the native services. Its HTTP front serves the native routes (such as/api/status and /api/pairing/*) but not the routes served by the Python service, which does not run there. The ados CLI reads the native routes on macOS for that reason.
So a workstation node has no setup wizard, no captive portal, no Wi-Fi access point, no radio and no flight controller link. It has the pairing surface, the status surface, the logs and the plugin host, which runs extensions such as the World Engine as per-user LaunchAgents. A compute node is the same shell with no UI.
Profiles on the wire and in Mission Control
The agent reports its profile in the hyphenated form:ground_station is reported as ground-station, workstation and compute pass through, and anything unrecognised reports drone.
Mission Control has built-in node surfaces for drone, ground-station and workstation. A compute node shows the workstation surfaces. An installed extension can add surfaces for the profiles it names; the World Engine’s compute and jobs tabs on a workstation or compute node come from there.
The ground-station role (direct, relay or receiver) is read from /etc/ados/mesh/role and defaults to direct. Other profiles report no role.
Profiles in an extension manifest
An extension declares which node profiles it installs on:["drone"]. The agent refuses to install an extension whose list excludes the node’s own profile. See the manifest reference.
Next steps
Choose what to install
Match the software to your hardware.
Install the Drone Agent
Every installer flag and the install flow.
Install the Ground Agent
Set up a ground station.
Systemd services
Every unit and the profile that starts it.