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
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
Port 4000 is already in use
Port 4000 is already in use
The npm scripts pin port 4000, so
PORT is ignored. Free the port, or start Next.js on another port directly:USB Serial shows Chrome or Edge
USB Serial shows Chrome or Edge
Web Serial and Web Bluetooth exist only in Chromium browsers. Use Chrome or Edge, or the desktop app.
Sign-in shows Cloud Not Available
Sign-in shows Cloud Not Available
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.npm run dev fails on Windows
npm run dev fails on Windows
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.