Skip to main content
Mission Control is a Next.js application. You can use the hosted version at command.altnautica.com, install the desktop app, or run it from source as described here.

Requirements

The npm scripts use POSIX shell syntax (rm -rf, cp -R and inline VAR=value). On Windows, run them from Git Bash or WSL; they fail in cmd and PowerShell.

Run from source

1

Clone the repository

2

Install dependencies

3

Start the dev server

The server listens on port 4000.
4

Open it

Go to http://localhost:4000. The Dashboard opens. On first run a setup wizard asks for language, accepts the operator disclaimer, and sets units, region and theme.

Demo mode

Demo mode replaces real links with a simulated fleet, so every panel has something to show.
npm run demo sets NEXT_PUBLIC_DEMO_MODE=true and starts the dev server on port 4000. You can also add ?demo=true to any Mission Control URL, or turn Demo Mode on in Settings → General. The simulated nodes are listed on Dashboard and fleet.

npm scripts

There is no browser end-to-end test harness in the repository. Cesium assets are self-hosted from /cesium/, copied from node_modules by npm run copy:cesium before dev, demo and build, so the 3D mission preview works offline.

Environment variables

Every variable is optional. Mission Control runs standalone with none of them set. .env.example in the repository is the reference. The variables split in two because two different runtimes read them.

Next.js variables

Set these in .env.local in the project root.

Convex server variables

These run inside Convex functions, not in Next.js, so a .env entry does nothing for them. Set them in the Convex dashboard under Settings, Environment Variables, or from the CLI:
Without either admin variable, every new profile stays pending until an existing admin approves it. Role details are on Cloud features.

Run your own backend

Cloud features need a Convex backend. Running your own (Convex, MQTT broker, video relay) is covered in the self-hosting guide, which starts with a one-command deploy tool.

Self-hosting

Deploy Convex, the MQTT broker and the video relay on your own machine.

Update a source checkout

Troubleshooting

The npm scripts pin port 4000, so PORT is ignored. Free the port, or start Next.js on another port directly:
Web Serial and Web Bluetooth exist only in Chromium browsers. Use Chrome or Edge, or the desktop app.
NEXT_PUBLIC_CONVEX_URL is not set in this build. Set it and restart the dev server, or choose Continue in local mode. Everything except the cloud features works without it.
Run it from Git Bash or WSL. The scripts use POSIX shell commands.

Next steps

Connect to a drone

Reach a flight controller directly or through the Drone Agent.

Dashboard and fleet

Find your way around the main screen and the demo fleet.

Desktop app

Native UDP and TCP sockets and packaged installers.

Test with SITL

Fly a simulated ArduPilot vehicle with no hardware.
Last modified on October 11, 2026