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.

PathContentsConfig key to move it
config.jsonEvery 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_hostsSSH host keys of the companion computers you connected to.
branding/Your company logo.
corvus.lockThe 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.

KeyWhat it holds
mavlink_connectionThe saved connection, used when nothing is plugged in (default udp:0.0.0.0:14550).
http_portThe local HTTP port (default 8000).
autoconnectenabled, usb, sik, udp_fallback. See Automatic connection.
forwardingMirroring 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_connectionsSaved SSH hosts: name, host, port, username, key_path.
map, map_tokensThe map service and layer, and the saved API keys.
theme, ui, controls, brandingAppearance, pages, the flown track, the compass, windows, manual controls and the logo.
battery, rtk, remote_id, videoThe settings of those setup pages that live in the ground station rather than on the aircraft.
checklistsYour preflight checklists.
parameterscache_defaults: whether copies of PX4 parameter descriptions are kept.
reviewsensitivity: relaxed, normal or strict.
updatesWhether to look for new releases, and a skipped version.
stream_ratesMAVLink 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

FormMeaning
serial:/dev/ttyUSB0:57600A serial device and baud rate. On macOS /dev/tty.usbserial-…, on Windows COM7 (or \\.\COM12 past COM9).
udp:0.0.0.0:14550Bind a local UDP port and wait for the aircraft (the same as udpin:).
udpout:192.168.1.10:14550Send to a remote UDP port and speak first, for example to a mavlink-router server endpoint.
tcp:192.168.1.10:5760Connect to a TCP server.
tcpin:0.0.0.0:5760Listen for a TCP connection.

Environment variables

VariableEffect
CORVUS_BINDListen on another interface than 127.0.0.1, for example 0.0.0.0. No authentication; see Network and security.
CORVUS_ALLOWED_ORIGINOne exact web origin, besides loopback, allowed to read the API's answers.
CORVUS_ALLOW_MULTI=1Allow a second Corvus to start. See One Corvus at a time.
CORVUS_SSH_HOST_KEYS=strictRefuse SSH hosts whose key is not already known.
CORVUS_MAVLINK_SIGNING_KEY_FILETurn on MAVLink 2 signing with the key in this file. See MAVLink signing.
CORVUS_FFMPEGThe ffmpeg to use for RTSP cameras, when it is not on the path and not set on the Video page.
CORVUS_TILE_CACHE_DIRWhere the offline map store lives, overriding the default.
CORVUS_PYTHONrun.sh only: the Python interpreter to create .venv/ from.
CORVUS_DIST, CODESIGN_IDENTITYBuild 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.

Suggest a change to this page