DroneOS
Getting Started

Overview

What DroneOS is and what you can do with it.

DroneOS is an open-source framework for controlling drones programmatically. You write code (or talk to an AI), and drones fly.

Built on PX4 and ROS 2, it gives you high-level APIs so you don't have to deal with raw flight controller topics. Arm, takeoff, fly to a position, land — in a few lines of Python or C++.

What You Can Do

  • Fly drones in simulation — PX4 SITL + Gazebo, no hardware needed
  • Control real drones remotely — over 4G/VPN from a cloud server
  • Run multiple drones — namespaced fleet coordination
  • Let AI fly — autonomous dispatch where an AI agent picks and flies drones
  • Monitor everything — web dashboard with telemetry, camera feeds, and AI chat

How You Interact With It

There are several ways in, depending on what you're building:

InterfaceWhat it isBest for
drone_control.pyPython API + CLIScripts, automation, AI agents
droneos CLIShell wrapperQuick commands, dispatch system
drone_coreC++ SDK (ROS 2 services)Low-level control, custom nodes
MCP ServerAI tool protocolMCP-compatible AI agents and tools
OpenAI Agents SDKPython agent frameworkOpenAI-based AI agents
Web Command CenterBrowser dashboardMonitoring, manual control, AI chat

All of these talk to the same drone_core services underneath. Pick whatever fits your stack.

What's Under the Hood

drone_core is a C++ ROS 2 library that subscribes to PX4 topics and exposes drone control as ROS 2 services (/drone1/arm, /drone1/set_position, etc.). Everything else builds on top of that.

drone_control.py connects to drone_core over rosbridge (WebSocket), so it works from anywhere — locally, from a remote server, over a VPN. No ROS 2 installation needed on the client side.

Running It

For development: everything runs on one machine. PX4 SITL simulates the drone, Docker runs the SDK, you send commands from the same box.

For production: the command center runs on any server, the drone runs on a companion computer (Raspberry Pi), connected over a mesh VPN. Same code, different Docker Compose file.

→ Quick Start to get flying in simulation.

On this page