Reference
Files, settings and variables
Where Corvus keeps what it stores, the config file behind the Settings page, the command-line arguments, the connection string forms, and the environment variables that change its behaviour.
Where Corvus keeps its files
Everything lives in one folder in your home directory:
~/.corvus on macOS and Linux,
%USERPROFILE%\.corvus on Windows. An update replaces the app and
leaves this folder alone, so settings, maps, logs and plugins survive it.
| Path | Contents | Config key to move it |
|---|---|---|
config.json | Every setting. Readable by you alone. | |
tiles/ | The offline map store: imagery, elevation and buildings. | tile_cache_dir |
logs/ | The tlogs Corvus records, one per flight, and exported console transcripts. | tlog_dir |
flightlogs/ | Logs downloaded from the vehicle (ULog, DataFlash). | log_download_dir |
params/ | Parameter exports. | params_dir (also under Settings, Files) |
missions/ | Saved mission plans, as JSON. | missions_dir |
firmware/ | Downloaded firmware images and the release list. | firmware_dir |
plugins/ | Your own plugins, each with its own config.json. | |
param-metadata/ | Copies of PX4 parameter descriptions, when that option is on. | |
known_hosts | SSH host keys of the companion computers you connected to. | |
branding/ | Your company logo. | |
corvus.lock | The lock that keeps a second Corvus from starting. Held by the running process; nothing to clean up after a crash. | |
webengine/ | The desktop app's browser profile. |
An empty value for a folder key means the default above; any other value pins the folder where you want it, for example on a larger disk for tiles.
The config file
~/.corvus/config.json is written by the Settings page, and most
people never open it. It is plain JSON and safe to edit while Corvus is
closed. Every key is optional: a file written by an older version loads
exactly as it did, and a value of the wrong type falls back to the default
rather than being guessed at. Switches that decide something safety
relevant (auto-connect, forwarding, commands from a second station) accept
only a real true or false, so a typo such as
"true" in quotes reads as "not set", never as yes.
| Key | What it holds |
|---|---|
mavlink_connection | The saved connection, used when nothing is plugged in (default udp:0.0.0.0:14550). |
http_port | The local HTTP port (default 8000). |
autoconnect | enabled, usb, sik, udp_fallback. See Automatic connection. |
forwarding | Mirroring the link to a second station: enabled, allow_commands, the other station's host and port, and Corvus's own listen_port (0 for any free port). |
ssh_connections | Saved SSH hosts: name, host, port, username, key_path. |
map, map_tokens | The map service and layer, and the saved API keys. |
theme, ui, controls, branding | Appearance, pages, the flown track, the compass, windows, manual controls and the logo. |
battery, rtk, remote_id, video | The settings of those setup pages that live in the ground station rather than on the aircraft. |
checklists | Your preflight checklists. |
parameters | cache_defaults: whether copies of PX4 parameter descriptions are kept. |
review | sensitivity: relaxed, normal or strict. |
updates | Whether to look for new releases, and a skipped version. |
stream_rates | MAVLink message rates to ask the aircraft for. |
To move a station's settings to another laptop, use Export and import rather than copying this file: the export can leave secrets out and is applied part by part.
Command-line arguments
All three ways of starting Corvus take the same two optional arguments:
corvus-gcs [PORT] [CONNECTION]
./run.sh [PORT] [CONNECTION]
python serve.py [PORT] [CONNECTION] # backend only, UI in a browser
PORT- The local HTTP port, 1 to 65535. Overrides
http_port. If it is taken, Corvus tries the next ones, up to twenty, and reports the one it got. CONNECTION- A MAVLink connection string. Wins over every automatic choice for this launch.
Connection strings
| Form | Meaning |
|---|---|
serial:/dev/ttyUSB0:57600 | A serial device and baud rate. On macOS /dev/tty.usbserial-…, on Windows COM7 (or \\.\COM12 past COM9). |
udp:0.0.0.0:14550 | Bind a local UDP port and wait for the aircraft (the same as udpin:). |
udpout:192.168.1.10:14550 | Send to a remote UDP port and speak first, for example to a mavlink-router server endpoint. |
tcp:192.168.1.10:5760 | Connect to a TCP server. |
tcpin:0.0.0.0:5760 | Listen for a TCP connection. |
Environment variables
| Variable | Effect |
|---|---|
CORVUS_BIND | Listen on another interface than 127.0.0.1, for example 0.0.0.0. No authentication; see Network and security. |
CORVUS_ALLOWED_ORIGIN | One exact web origin, besides loopback, allowed to read the API's answers. |
CORVUS_ALLOW_MULTI=1 | Allow a second Corvus to start. See One Corvus at a time. |
CORVUS_SSH_HOST_KEYS=strict | Refuse SSH hosts whose key is not already known. |
CORVUS_MAVLINK_SIGNING_KEY_FILE | Turn on MAVLink 2 signing with the key in this file. See MAVLink signing. |
CORVUS_FFMPEG | The ffmpeg to use for RTSP cameras, when it is not on the path and not set on the Video page. |
CORVUS_TILE_CACHE_DIR | Where the offline map store lives, overriding the default. |
CORVUS_PYTHON | run.sh only: the Python interpreter to create .venv/ from. |
CORVUS_DIST, CODESIGN_IDENTITY | Build only; see Build the apps. |
The local API
Everything the interface does goes through a local HTTP API on the same port, with live telemetry pushed over Server-Sent Events. Two endpoints are useful from a script or another tool on the same machine:
GET /api/version: the product name and the running version.GET /api/mavlink/capabilities: which features the connected autopilot supports, and why a missing one is missing.
The rest of the API is internal and may change between releases. The auto-connect part of it is documented as a contract in the auto-connect interface reference.