One interface for air, ground, and marine robotics. OpenC2 is a command and control client that manages multi-domain fleets from a single application — no special versions, no forks, no environment-specific builds.
Most C2 systems are built for a single domain: drone GCS software doesn't handle ground robots, marine systems can't visualize UAVs, and mixing platforms means running multiple apps with incompatible data formats.
OpenC2 uses a core protocol + extension architecture. The gateway uses an envelope protocol — common fields for position, heading, and status, plus extension payloads for vehicle-specific data. Each vehicle type is added via a manifest and codec — not a fork. The UI receives the same data structures whether it's a Skydio drone, a Clearpath Husky, or a BlueBoat. Adding a new platform means writing an extension, not maintaining a separate codebase.
| Domain | Rendering | Example Platforms |
|---|---|---|
| Air | 3D altitude-aware (Deck.gl) | Skydio, fixed-wing, VTOL, custom UAVs |
| Ground | 2D symbol layers (MapLibre) | Clearpath Husky, Spot, custom UGVs |
| Marine | 3D with hull occlusion | BlueBoat, custom USVs |
All three render simultaneously on the same map. Plan a mission with a drone providing overwatch, a ground robot for inspection, and a surface vessel for perimeter patrol — all coordinated through one interface.
- 3D Mission Planning — Draw tactical elements (no-go zones, routes, search areas) with terrain-aware 3D rendering
- Unified Fleet Management — Monitor and command air, ground, and marine vehicles from one interface
- LLM-Assisted Operations — Chat interface with full mission context for planning assistance
- Imitation Learning Tooling — Capture operator demonstrations for training autonomous behaviors
See also: OpenC2-Field — 2D variant for non-expert operators: high-contrast UI, large touch targets, guided workflows.
- Node.js 22+
- Git
git clone https://github.com/EthanMBoos/OpenC2.git
cd OpenC2
npm install
npm startFor development with hot reload:
npm run devDrawing on the map:
- Right-click to open the Mission Objects menu
- Select a feature type (no-go zone, Search Zone, Route, etc.)
- Click to place vertices, double-click to finish
- Configure altitude settings in the property panel
Map controls:
- Toggle 3D/2D terrain (top-right)
- Toggle satellite imagery (top-right)
- Drag-rotate enabled in 3D mode
npm run make:mac # macOS (.dmg, .zip)
npm run make:win # Windows (.exe)
npm run make:linux # Linux (.deb, .rpm)Packages output to out/make/.
| Layer | Technologies |
|---|---|
| App | Electron 40, React 19, TypeScript 5.9 |
| State | Zustand 5 |
| Maps | MapLibre GL 5.x, Deck.gl 9.x |
| Drawing | @deck.gl-community/editable-layers |
| Build | Vite 8, Electron Forge |
| Document | Purpose |
|---|---|
| ARCHITECTURE.md | System design, architecture decisions, data flows |
| EXTENSIBILITY.md | Adding new vehicle types via gateway extensions |
| TECH_STACK.md | All technologies, packages, and dependencies |
| PATTERNS.md | Coding conventions, design patterns, best practices |
| COMPONENTS.md | React component hierarchy and specifications |
| UI_DESIGN_PHILOSOPHY.md | UI rationale, layout philosophy, power-user design principles |
| HOOKS_AND_MODULES.md | Custom hooks and core module documentation |
| LLM_INTEGRATION.md | LLM chat infrastructure, context injection, and capability roadmap |
| VEHICLE_SYSTEM.md | Vehicle/fleet management architecture |
| COMMS_PIPELINE.md | Go gateway, WebSocket bridge, protocol abstraction, backpressure design |
| IMITATION_LEARNING_DATA.md | Operator demonstration capture for imitation learning datasets |
Contributions welcome! Key unsolved areas:
- UI extensibility — Dynamic overlays and drawing tools from manifests (see EXTENSIBILITY.md for phased approach)
- Offline maps — Tile generation and self-hosting for deployments without internet
- LLM evals — Prompt optimization, model comparison, and output grading infrastructure
- Performance — Comms pipeline throughput and rendering optimizations
- Extension examples — ROS2 integration + radio node setup for various platforms
- Developer tooling — Telemetry replay, protocol inspection, metrics dashboards, simulation mode
npm run dev # Development with HMR
npm test # Run unit tests
npm run test:e2e # Run E2E tests