Skip to main content
Mission Control is a Next.js 16 application. You can run it in your browser during development, or build a standalone Electron desktop app.

System Requirements

WebSerial (USB connections) only works in Chromium-based browsers. Safari and Firefox do not support it.

Quick Start

1

Clone the repository

2

Install dependencies

3

Start the dev server

This starts the development server on port 4000 with Turbopack.
4

Open in your browser

Navigate to http://localhost:4000. You will see the dashboard.

Available Scripts

Demo Mode

Demo mode is the fastest way to explore Mission Control without hardware.
This sets NEXT_PUBLIC_DEMO_MODE=true and starts the dev server. Seven simulated drones (ArduPilot, PX4, and iNav) appear on the dashboard with realistic telemetry, GPS tracks, and flight modes. All configuration panels work with mock parameters. You can also activate demo mode by adding ?demo=true to any URL:

Environment Variables

Create a .env file in the project root for optional features. A .env.example file is included in the repo.
Cloud features are entirely optional. Mission Control works fully offline for direct USB and WebSocket connections. The Convex backend adds fleet sync, authentication, and community features.

Electron Desktop App

Build a standalone desktop application for macOS, Windows, or Linux.
1

Build the Next.js app and compile Electron

2

Find the output

The built application is in the dist/ directory. On macOS, look for the .dmg file. On Windows, the .exe installer. On Linux, the .AppImage or .deb.
For development, you can run the Electron app without building a distributable:

Electron Architecture

The Electron app wraps the same Next.js standalone server. No proxy layer is needed. The main process starts the Node.js server and opens a BrowserWindow pointed at http://127.0.0.1:4000.
The Electron app always uses 127.0.0.1 instead of localhost. On macOS, localhost can resolve to ::1 (IPv6), causing connection failures when the server only listens on IPv4.

Convex Backend (Optional)

If you want cloud features (authentication, fleet sync, community changelog, cloud relay), deploy a Convex backend.
The convex/ directory in the repo contains the standalone backend with around 30 custom tables plus the auth tables. Community users can deploy their own instance without depending on any external service.

Updating

Pull the latest changes and reinstall dependencies:

Troubleshooting

Another process is using port 4000. Kill it or change the port:
WebSerial requires a Chromium-based browser (Chrome 89+, Edge 89+). It is not available in Firefox or Safari. Make sure you are not running in an incognito window with restricted permissions.
Check that your NEXT_PUBLIC_CONVEX_URL is correct and the Convex backend is running. Cloud features are optional. The GCS works fine without Convex for local connections.
Make sure Xcode command line tools are installed: xcode-select --install. Electron Builder needs native compilation tools for the packaging step.