Skip to content

Configuration and modules

The launcher reads one explicit environment file. That file takes precedence over environment variables inherited from a developer shell, reducing accidental connections to another database or bucket.

Terminal window
bun run deploy modules
bun run deploy config --env-file deploy/.env.staging

COMPOSE_PROFILES selects services. The default staging selection is core,world,automation,monitoring.

Profile Services Additional configuration
core Mainframe, Postgres, SRS, indexer, Caddy Core secrets, storage, admin account, public IP
storage Local MinIO and bucket initialization Use for a local deployment, not the managed staging bucket
world world-sim Admin token, world configuration, advertised admin URL
automation auto-operator Mode, serial selection, provider selection, battery thresholds
monitoring Grafana, Prometheus, host/container/Postgres exporters, Loki, Alloy Grafana admin credentials
feeds Weather and radar-net Weather sites and upstream connectivity
detections Vision module OpenRouter key and model roster; incurs model usage
interop TAK bridge CA, server certificate, key, and client certificates
autel Remote Autel observer Broker credentials and remote SRS addresses
native-autel Native Autel service and authenticated MQTT broker Provisioned controller bindings and native config

Choose autel or native-autel, never both: they use the same Core provider identity. The launcher makes this check and builds MAINFRAME_ENABLED_MODULES from the selected profiles. API keys remain stable across restarts; changing a configured value does not rotate an existing database key automatically.

Setting Meaning
MAINFRAME_BASE_URL Mainframe’s public authentication origin
MAINFRAME_PUBLIC_URL Frontend build-time default connection URL
MAINFRAME_TRUSTED_ORIGINS Browser origins allowed to carry credentials
PUBLIC_IP SRS’s reachable WebRTC candidate
SRS_RTMP Publishing address reachable by providers and controllers
BLOB_S3_* Private object-store endpoint, region, bucket, and credentials
WORLD_SIM_PUBLIC_URL Base URL for the simulator admin link
MAINFRAME_AUTONOMY Core rule behavior: suggestions by default, or automatic actions
AUTO_OPERATOR_MODE Separate module behavior: suggestions or automatic mission dispatch
AUTO_OPERATOR_SERIALS Exact comma-separated serial allowlist
AUTO_OPERATOR_SERIAL_PREFIX Optional literal serial prefix; no wildcard syntax
AUTO_OPERATOR_PROVIDER_IDS Provider identities allowed by the serial selection

Exact serials and a prefix form an OR selection, then the provider restriction applies. Empty serial selection permits no aircraft. Automatic mode refuses to start without a selection.

Changes to deployment environment values require container recreation. Changing MAINFRAME_PUBLIC_URL also requires rebuilding the frontend image. Document edits made through Terminal take effect through Mainframe’s document watches.

The shared environment helper supports _FILE variants for application secrets. To use Compose secrets, explicitly mount the file and pass its _FILE variable in the service configuration; the default deployment examples use a protected environment file.