ADOS Mission Control — open-source web GCS

Dashboard

I’m Ajay from Bangalore. I kept running into the same frustration with GCS tools. Changing a flight mode, checking RC channels, calibrating a compass. The existing tools obviously work, decades of development behind them, but the UIs were fighting me more than helping. So I started building my own.

Altnautica Command is an open-source ground control station, GPLv3. Use it in the browser or grab the desktop app (Mac, Windows, Linux). Plug in your FC over USB and WebSerial connects it directly.


What’s New

This post is kept up to date. Newest changes first.

  • Country selector removed. No longer forced on setup, units default to metric, changeable in settings

  • Interactive CLI added. npm run cli for guided setup, demo mode, SITL with 7 drone presets, diagnostics

  • Post cleaned up and reorganized


What it does

Browser FC connection. WebSerial API, no drivers, no middleware. Chrome or Edge on any OS.

Gamepad and flight stick controls. Fly with a gamepad, HOTAS, flight stick, or keyboard. 4-axis analog at 50Hz sending MANUAL_CONTROL messages. Deadzone, expo curves, full axis mapping. I wanted to grab a controller and fly from the browser and nothing else did that, so I built it.

Flash firmware from the browser. Select your board, pick ArduPilot firmware, flash over WebSerial. No STM32CubeProgrammer, no Zadig.

25 config panels. Full parameter tables. Calibration for accel, compass, gyro, level, ESC, RC. Flight modes, motor outputs, PID tuning, failsafe, power monitoring, serial ports, OSD layout editor, geofencing. Timer group conflict detection that shows which outputs share STM32 hardware timers. 9 board profiles right now (SpeedyBee F405 Wing/V3/V4, Matek H743, Pixhawk 4/6C/6X). Happy to add more, just tell me what you’re flying.

Mission planning. Drag and drop waypoints with per-waypoint altitude, speed, and actions. Geofence editor. Mission library for save/load. Upload and download with per-item ACK tracking.

ArduPilot fully supported. PX4 partial. Betaflight and iNav planned.

Interactive CLI

CLI

If you clone the repo, npm run cli gives you an interactive menu. No flags to remember.

  • Dev server on port 4000 with hot reload

  • Demo mode, 1 to 10 simulated drones with full mock telemetry

  • SITL with real ArduPilot physics. 7 presets: 5" FPV freestyle, 7" long range, 10" hex, cinewhoop, X-class racer, tiny whoop, and my 7" reference build. Configurable drone count, sim speed, GPS location, wind

  • Build and deploy in one command

  • Setup wizard that checks Node, installs deps, creates env config

  • System diagnostics

Each command works standalone too: npm run cli dev, npm run cli demo, npm run cli sitl.

Try it now

Demo mode runs 5 simulated drones with realistic telemetry. Visit the live app or clone and run npm run demo. You can poke around every panel and plan missions without plugging anything in.

Rough edges

The 3D view works but it’s not pretty. My time goes into reliable MAVLink, correct parameter handling, and safe FC configuration. The visuals will get there eventually.

It’s a young project. Bugs exist. That’s why I’m here. I want feedback from people who actually fly and configure drones daily.

Screenshots

Dashboard

Mission Planner

Flight Control

3D Simulation

Configure

Parameters

Links

Built on ArduPilot and MAVLink. Respect to everyone maintaining those projects.

GPLv3. PRs welcome. If something breaks, open an issue or come to Discord.

What panels are you missing? What bugs you about your current GCS? If you’ve got hardware to test with, I’d really like to know what works and what breaks.


About this post and AI. I use AI to help write and update this post. My process: I talk through what I want to say, then use AI to clean it up into readable English. I’m not a native speaker and I’m one person building this. I’d rather spend my hours writing code than editing forum posts. The ideas, architecture, and code direction are all mine. AI helps with the words. I also use it to track feature requests from this thread and keep the changelog updated, because maintaining a long post manually every week is not a great use of my time. I still reply to comments myself most of the time.

6 Likes

Looks very interesting.

However, for me there are two things that come immediately to mind:

  • Without an internet connection it can not be used, right?
  • If everything happens live, what about all the data & information that is being sent across ? What are the safeguards to prevent privacy breaches?

You might be interested in another new project just recently introduced:

2 Likes

Yes, it works fully offline via USB/serial, no internet needed, no account.

One of the core techwe use is indexDB. Everything is written to the DB in your browser, which means, everything is cached local.

You will lose this data if you clear browser data

Some of the features that we are working on is more tuned towards logistics and management of entire fleets autonomously for cargo delivery.

That requires centralized data so that being said, yes, if you do opt to login, your flight plans, your flight missions are also synced to the cloud.

Of course, you can always clone this entire project and you can self-host it locally or on your servers or anywhere you like honestly. That way data comes to your servers.

Either way, if you don’t log in, all your data stays local and does not leave your machine.

At this moment, we have not introduced any telemetry yet. the project is fresh, but we don’t plan on doing any sort of user tracking as well without explicit consent from users to power certain features (shared flight plan editing etc requires sync)

Hope that clears things up

1 Like

Regarding data, since the project is in it’s infancy and still under beta testing, we will be periodically wiping the data.

It’s recommended to clone this project and run it locally (We are working on a easy deploy CLI in the next release) for everyday use for security.

For our testing and research, we do this as well, ADOS hosted on simple linux server which is on a isolated network.

Future release will also address security concerns more clearly for enterprise use. We plan to have full E2E encryption at rest and in transit. This encryption layer will stay truthful to the open source journey and will be open-sourced as well.

I have seen this, amazing work, although we are heading in another direction for drones with compute autonomy, drones with companion computers. This is actually meant to power other applicatio suites we would be introducing and researching.

We needed a GCS which was reliable even for our own internal everyday use, the calibration solutions lacked dearly and there were always tradeoffs in each.

We also needed support for other autonomous drone features we are natively supporting, this meant a GCS with additional ‘smart’ layers to integrate on top of mavlink protocols that we could continue to develop. it made sense to control and develop this layer and so we built ADOS. We decided it should be made open source as well since that is what powers real innovation and collaboration.

You can read more about the compute board (what we actively developing) here:

  • Removed link to not sound salesly, you can read more aobut us in our website if interested.

I love seeing all the new GCS options coming out. I do have some issues here after just a quick try.

  • I’m not comfortable with the browser based interface. I wasn’t able to re-size windows or move things around. I also often work in areas without internet. I see you say that I can clone it and run it locally, but that’s an extra process that many users aren’t interested in doing when all the other GCSs are already there. How will that work for tablets?
  • I didn’t like that each time I went back to the parameter page it had to re-load all the parameters.
  • There is a lot of wasted space on the main screen for things like the name and Id of the drone, and the regulatory info. That’s all good when opening the software but once I’m connected I don’t need to see that.
  • What do I if I’m in a country that’s not on the list you have? What does it matter? Why is it asking?
  • I find that a lot of the set-up buttons are too easy to access. Great when your setting up the drone, but once it’s flying a user shouldn’t be one click away from the calibrations. Also, having the re-boot button on the main page…. maybe it was just the demo mode but it didn’t even ask “are you sure?” That could be an issue for anyone on a touch screen.

Again, I’m really happy that people are trying new alternates for GCS software. But the browser interface has me very apprehensive. That has it’s place for flying BVLOS over some kind of internet based datalink, on setup and configured hardware. In that case, remove or bury the primary configuration and setup functions. However if I’m flying or configuring something then I want something local that doesn’t have to reload it’s data each time I click back to a page.

1 Like

Quick clarification since I scattered my answer across three posts —

Yes, it works fully offline. USB/serial connection straight from the browser, no internet needed, no account. Your data stays in your browser’s local storage (IndexedDB).

Cloud sync is opt-in if you want multi-device access or fleet tracking down the line. The whole project is self-hostable too — clone and run locally.

@Karl_S what setup are you running? Would be curious to know if you try connecting an FC.

Really appreciate you trying it and writing all this up. This is exactly the kind of feedback I need. Let me go through each point:

Resizing/moving panels you’re right, the layout is fixed right now. No drag-and-drop. Opened an issue for that

Offline use it actually does work without internet. The FC connection is USB/serial straight through the browser (WebSerial API), no server involved. Your parameters, config, everything stays local in the browser. The map tiles are the gap, those still need internet unless you set up local tile serving. No PWA yet either, which would help with caching. That said, the core workflow (connect → configure → fly) doesn’t need internet at all.

Cloning you don’t have to clone anything. The live app works directly. Cloning is just an option if you want to self-host or hack on it. Should’ve been clearer about that.

Tablets works on Android Chrome (WebSerial supported). iOS is a no-go, Apple doesn’t support WebSerial in Safari. That’s an Apple limitation I can’t work around.

Parameter reload you’re right, that’s a bug. It re-downloads the full parameter list every time you navigate to that page. The data is already cached in memory from the initial connection the panel just isn’t reading from it. Just pushed a fix, should be work properly now (rebuilding, give 15mins).

Wasted space / info cards some panels do have collapsible sections (the mission planner sidebar for example). If you can tell me which specific view you were in when it felt cluttered, I can point you to the collapse controls or add them where they’re missing.

Country selector it controls unit display (metric vs imperial) and altitude limits. Only has India, USA, and Australia right now. Adding a “Custom” option so you can set your own units regardless of country. We focuse more about being legally compliant, but we should have added a custom option. eitherway, it’s purely there to drive UI tracking of your own drones and ID management.

Setup buttons during flight there’s actually an armed-lock system that blocks all configuration panels when the vehicle is armed. You can’t reach calibrations, parameters, or port config while armed. But I hear you on the touch screen concern when disarmed, the reboot button especially.

Reboot without confirmation you’re right, that’s a miss. Some reboot buttons have a confirmation dialog, others don’t. All of them should. Opened an issue.

Browser vs local fair concern, and I get it. The bet is that browser APIs (WebSerial, WebSocket, Gamepad API) are good enough now for real work, and having one URL that works on any machine is worth the trade-offs. But it’s not for everyone, and I respect that. If the parameter caching and layout issues get fixed, I think the “reload” feeling goes away for most workflows.

What FC and OS are you running? Would help me understand your setup if you want to dig into any of these.

Update - Easy GUI Deploy for Local

npm run cli gives you an interactive menu — dev server, demo mode, SITL simulator, build & deploy, setup wizard, system diagnostics. No need to remember flags or commands.

The SITL launcher has 7 drone presets built in (5" FPV freestyle, 7" long range, 10" hex, cinewhoop, X-class racer, tiny whoop, and my 7" reference build). Pick one, it spins up ArduPilot SITL with a WebSocket bridge so the browser GCS connects directly.

First-time setup walks you through Node check, dependency install, and env config. npm run cli info shows you what’s ready and what’s missing.

If you clone the repo, try npm run cli and let me know if anything’s confusing.

Question , why do you use AI to talk in this forum ?

Dont be so defensive it was just a question implying nothing.

English is also not my native english and im also a one man developer.

2 Likes

No worries <3

Sorry it came across as defensive friend! ( and thats what happens when i type myself :frowning: ) See english really isnt my mains didnt mean it that way :slight_smile:Removed post for any hurt to people’s sentiments. Made disclaimer and updated for better clarity.

I would like to go back to focusing on the product, will also rewrite again main post with disclaimer if it hurts or bothers someone so much, not the intention, peace.

Shipped a few updates.

Desktop apps. Mac, Windows, Linux. Same app, runs as a native window. If the browser wasn’t your thing, try these instead under dev, there are going to be issues, but scaffolding has been set up and stable releases will be announced soon.

Country selector removed. This got flagged in the thread and it was a fair point. Pulled it out, you don’t need to pick a country on setup anymore. Units default to metric and you can change them in settings.

CLI. npm run cli gives you a menu if you clone the repo.

Shipped a few updates (1st March 2026)
Happy March everyone

Desktop apps. v0.1.0 is up on GitHub with downloads for Mac, Windows, and Linux. Same app, just runs as a native window instead of a browser tab. Really wanted use Tauri or Pake here but those don’t support webserial properly out of the box.

Would highly suggest using web as it should always be the up to date copy. Might deprecated desktop apps as they require builds to keep updated, users who want to use this can leverage the CLI to run locally or just through the browser.

— UPDATE
While writing this I encountered a API rate limit on accessing px4 builds, this would ultimately affect betaflight too at somepoint. An github API key is required.

General users are not going to do this. This greatly affects critical functionality and is one reason why desktop apps are inefficient and requires builds, an auto update loop etc, all foundational processes that I do not like to at this point atleast spend effort on developing.

So desktop builds will be only made for major release versions.

Please use web for the latest builds (Deployed using verified tokens so it is ready to go and honestly just better QoL), or build and run locally using CLI. with own tokens for features that do require them now or in the future.

Initial testing on Mac atleast has been stable. If you try it, do let me know how it goes on your machine.

Parameter caching fix. This was flagged in the thread and filed as Issue 1. Parameters were re-downloading every time you opened the config panel. Fixed that, the list caches after first download now. (Will simplify the cta row in the future after all the config panels are in and tested.)

Protocol refactor. Restructured the entire protocol layer into modular directories. Not user-facing, but it makes the codebase easier to work with and extend.

Drone Protocol Enhancements
Groundwork for supporting more firmware down the line (100% ARDUPILOT & PX4 coverage has been shipped.)

All dropdowns Revamped & UX Improvements

Used custom dropdowns throughout with descriptive labels to make it easier to understand what each option does. Other minor QoL fixes and updates.

And more others, platform uses a shared descriptive label combo component now.

Elevated and Shifted Flash Tool as a ICON CTA to header right for easy access (I used this alot to test firmware).

State Awareness to more tabs and pages to not rerender everything again on subsequent access with fallback to refresh cta to refresh data.

Codebase Refactor & Performance Update Refactored the entire codebase to be more modular, with descriptive file names, and better organization.

Flash Tool Improvements

  • Betaflight : Stable Releases + Full Cloud Build Support (with custom build parameters)
  • PX4 : uses different bootloader → px_uploader plus DFU support to ensure complete PX4 flashing coverage
    -Better board detection + type identification (ardupilot, betaflight, px4 etc)
1 Like

another web based GCS that I got to 90% but never shipped a version to users… GitHub - davidbuzz/ardu-configurator its got mavlink over web serial, a nodw.js backend with mavlink , missions planning/up/down, 3d models of a dozen common aircraft types, HUD, can set/read params , can do the 2 common calibrations , can upload .hex ( dfu mode) or .apj to a board by choosing it from a dropdown, … its got a lot of features, and some of the code might be helpful to you.?

1 Like

Thanks for checking out my project. Just checked out the code, very cool!

Always love looking at how different providers approach this problem already, apm, qgcs etc, each have a unique way that caters to different users.

Your app looks very good, love how you render the 3d model, I have not gotten to that part yet, I hope implementation isn’t as hard. Also noticed you used node for backend, in this project, i’m using convex, it handles both db, and cloud functions as well. Opensource so we could selfhost it.

It’s also familiar and simple, any reason why you have not launched it? There have been users in this thread itself who prefer desktop apps too. Pretty sure some might like it.

I’m happy to help. I learned a lot doing this and would love to see more people building tools & GCS flavours for ArduPilot or any other platform for that matter.

Shipped a few updates (2nd March 2026)

  • Thread locked from editing, need better way to update changelogs and manage roadmap features. Added in-app community platform with feature requests, bug requests, contact form. Roadmap with kanban view has also been implemented and populated tomorrow. Live changelogs at Changelog — Altnautica , and in-app. Check it out!

- Improved auth handling and security checks

-Minor UX optimizations and CTA positioning fixes

Here’s another major work that’s been shipped, and is still in dev to be better!

Advanced flight planning & simulation:

  • 3D Global render

  • Add terrain-resolved 3d flight path

  • Visual Feedback during terrain resolution

  • Much better render performance updates

  • Better terrain elevation awareness in simulation

  • Advanced flight planning toolkits

  • KML/KMZ/CSV export/import shipped

Much more!

OP Notes-

Thread apparently has a limit on how often you could update it. Therefore will be posting updates daily here. Will consider creating new thread once major stable version ships.

2 Likes

Additional Screenshots from 2nd march update just got live

Better 3D aerial visualizations with terrain + elevation tracking

3D World Models for Simulate

Sat Map Mode + Demonstration of Real 3d Terrain Sim

2 Likes

Next Patch → Hardened calibration suites for all board platforms & More planning & simulation fixes & feature coming soon. Do stay tuned!

Updates - 3rd March 2026

  • Better Changelogs Popup for Web Users

  • Frame and Motor Visualization now uses 3d model, Config Log

  • Added actions panel for the left telemetry and cleaned up flight view

  • Gave flight view a immersive mode

  • Refactored Telemetry Panel

  • Planner Tool Enhancements

  • AI PID Tuning (WIP)

  • Qol updates for collapsed panels

  • More simulation and planning bug fixes