CONSTELLATION OVERWATCH

Open Source C4ISR

Tactical Data Fabric for Autonomous Systems

Binary size: 30.3MB
curl -LsSf https://constellation-overwatch.github.io/overwatch/install.sh | sh
View on GitHub Join Discord

Lightweight industrial data stack designed with ontological data primitives.

entity_id namespacing for UAVs, robotics, sensors, and real-time video intelligence at the edge and under your security control.

Powered By
Go NATS Templ Datastar Turso

Core Features

Real-time Messaging

Low-latency pub/sub communication powered by NATS JetStream

Telemetry Streaming

Efficient handling of high-frequency sensor data from edge devices

Multi-Entity Support

Manage drones, robots, sensors, and autonomous systems

Secure API

RESTful API with bearer token authentication

Real-time Dashboard

Server-sent events powered UI with Datastar framework

Embedded NATS

Self-contained messaging with rapid global super-clustering capabilities

Offline First Design

Full security perimeter isolation, network-agnostic operation for data residency and air-gapped environments

Edge First Architecture

Portable deployment, proximity-based processing to minimize latency and maximize data locality for field operations

Quick Start

Installer (Recommended)
Build from Source

1Install Overwatch

Linux / macOS
Windows
curl -LsSf https://constellation-overwatch.github.io/overwatch/install.sh | sh
powershell -ExecutionPolicy Bypass -c "irm https://constellation-overwatch.github.io/overwatch/install.ps1 | iex"

2Start the Server

# Rapid start - just run it!
overwatch

# Custom port
overwatch -port 9090

# Production with secure tokens
overwatch -api-token $(openssl rand -hex 32) -nats-token $(openssl rand -hex 32)

Server starts on http://localhost:8080 (API & Web UI)
NATS messaging on port 4222

Default Credentials

Web UI Password: reindustrialize
API Token: reindustrialize-dev-token
NATS Auth Token: reindustrialize-america

Production: Use custom tokens with -api-token and -nats-token flags

CLI Configuration Options

OPTIONS:
    -port <PORT>          Web UI and API port (default: 8080)
    -host <HOST>          Bind address (default: 0.0.0.0)
    -nats-port <PORT>     NATS server port (default: 4222)
    -api-token <TOKEN>    API bearer token
    -nats-token <TOKEN>   NATS auth token
    -data-dir <PATH>      Data directory (default: ./data)
    -env <PATH>           Path to .env file (default: .env)
    -version              Print version and exit
    -help                 Show this help message

Priority Order: CLI flags > environment variables > .env file > defaults

1Clone the Repository

git clone https://github.com/Constellation-Overwatch/constellation-overwatch.git
cd constellation-overwatch

2Install Task Runner

macOS
Linux
Windows
brew install go-task/tap/go-task
sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b ~/.local/bin
scoop install task

Requires Scoop package manager

3Start the Server

# Development mode with auto-reload
task dev

# OR run directly
go run ./cmd/microlith/main.go

Server starts on http://localhost:8080 (API & Web UI)
NATS messaging on port 4222

Default Credentials

Web UI Password: reindustrialize
API Token: reindustrialize-dev-token
NATS Auth Token: reindustrialize-america

Production: Use custom tokens with CLI flags or environment variables

4Create Your Organization

Follow the organization setup steps below (same for both installation methods).

4Create Your Organization

Web UI
API

Recommended: Use the web interface for easy setup

1. Navigate to: http://localhost:8080/organizations
2. Click "Create Organization"
3. Fill form: Name, Type (civilian/military/commercial), Description
4. Navigate to: http://localhost:8080/fleet
5. Register entities to your organization

For programmatic integration

export TOKEN="reindustrialize-dev-token"

curl -X POST http://localhost:8080/api/v1/organizations \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My Fleet",
    "org_type": "civilian",
    "description": "My drone fleet"
  }'

Save the org_id from the response!

Publishing Clients to CONSTELLATION_GLOBAL_STATE

Ontological Data Design

Constellation uses ontological data primitives. Structure all telemetry as signal trees under your entity_id namespace. Each signal should represent a discrete semantic concept (e.g., position.lat, sensors.temperature, state.battery).

Clients publish structured telemetry to the global state using their registered entity_id as the signal namespace root.

1Register Your Entity

export TOKEN="reindustrialize-dev-token"
export ORG_ID='your-org-id-here'

curl -X POST "http://localhost:8080/api/v1/entities?org_id=$ORG_ID" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Drone-001",
    "entity_type": "aircraft_multirotor",
    "description": "Primary inspection drone",
    "metadata": {
      "model": "DJI-M300",
      "serial": "ABC123456"
    }
  }'

Extract the entity_id from the response - this is your unique identifier!

2Publish to Global State via NATS KV

Your client publishes telemetry to the CONSTELLATION_GLOBAL_STATE KV bucket using your entity_id as the key:

# KV bucket for global state
CONSTELLATION_GLOBAL_STATE

# Key format: your entity_id
# Value: ontological telemetry data

# Commands can still use subjects for real-time messaging:
constellation.commands.{org_id}.{entity_id}

3Publish Ontological Telemetry to KV

Publish structured data to the KV store using your entity_id as the key:

export ENTITY_ID='your-entity-id-here'

# Publish ontological telemetry to CONSTELLATION_GLOBAL_STATE KV bucket
# Key: entity_id, Value: ontological signal structure
nats kv put CONSTELLATION_GLOBAL_STATE "$ENTITY_ID" \
  '{
    "position": {"lat": 37.7749, "lon": -122.4194, "alt": 100},
    "orientation": {"roll": 0.1, "pitch": -0.2, "yaw": 1.5},
    "sensors": {"temperature": 22.5, "humidity": 65, "pressure": 1013.25},
    "state": {"battery": 85, "mode": "autonomous", "armed": true},
    "performance": {"velocity": 5.2, "thrust": 0.7, "efficiency": 0.92}
  }'

Entity state now stored in CONSTELLATION_GLOBAL_STATE KV with entity_id as key

Integrations BETA

mavlink2constellation

High-performance MAVLink to NATS JetStream bridge and telemetry router. Ingest MAVLink telemetry from drones/robotic fleets, parse in real-time, and bridge to Constellation mesh.

Repo: github.com/Constellation-Overwatch/mavlink2constellation

vision2constellation

Real-time video edge inference system with modular ML detection for the Constellation Overwatch Fabric.

Models: YOLOE C4ISR threat detection, RT-DETR, SAM2 segmentation, Moondream vision-language

Features: Multi-model detection, NATS JetStream bridge, video frame streaming, device fingerprinting, C4ISR threat intelligence

Repo: github.com/Constellation-Overwatch/vision2constellation

Stay tuned! Follow us for updates:

GitHub Discord

IaC Toolbelt DEPLOY

Deploy Constellation Overwatch to production cloud infrastructure with automated provisioning, security hardening, and container orchestration.

View IaC Toolbelt

1Quick Deploy to Cloud

# Clone and deploy
git clone https://github.com/Constellation-Overwatch/toolbelt.git
cd toolbelt
task setup-config

# Edit .env with your Linode API token and SSH keys
# Then deploy everything:
task deploy

Access your production deployment at your server IP or configured domain

Resources

Web Dashboard

http://localhost:8080 (after starting server)

Join Discord Community

Connect with developers and users

Help grow and strengthen open source assets for advanced engineering in drones, robotics, and sensor deployments