Skip to content

EthanMBoos/OpenC2

Repository files navigation

OpenC2

Version codecov License: MIT Node.js TypeScript Electron Platform

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.

OpenC2 Preview

Why OpenC2?

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.

Core Capabilities

  1. 3D Mission Planning — Draw tactical elements (no-go zones, routes, search areas) with terrain-aware 3D rendering
  2. Unified Fleet Management — Monitor and command air, ground, and marine vehicles from one interface
  3. LLM-Assisted Operations — Chat interface with full mission context for planning assistance
  4. 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.

Quick Start

Prerequisites

  • Node.js 22+
  • Git

Installation

git clone https://github.com/EthanMBoos/OpenC2.git
cd OpenC2
npm install
npm start

For development with hot reload:

npm run dev

Usage

Drawing 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

Building

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/.

Tech Stack

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

Documentation

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

Contributing

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

License

MIT

About

A high-performance C2 interface for modern robotic fleets. Powered by Electron, React, and Deck.gl for 3D tactical awareness.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages