Sovereign Watch

April 8, 2026 · View on GitHub

Sovereign Watch Logo

Distributed Multi-INT Fusion Center

Release Status License Docker

A self-hosted, edge-to-cloud intelligence platform for high-velocity telemetry (ADS-B, AIS, Orbital) and OSINT fusion.
It enforces data sovereignty by running on local hardware, utilizing a "Pulse" architecture and "Tiered AI" cognition.


Screenshots

Tactical Map View

Sovereign Watch - Tactical Map

Orbital Tracking

Sovereign Watch - Orbital Map

JS8CALL Terminal

Sovereign Watch - JS8CALL Terminal

Global Map Filters and Layers

Sovereign Watch - Global Map Filters and Layers

Dashboard View

Sovereign Watch - Dashbaord View

Intel Map View

Sovereign Watch - Intel Map


Quick Start

# 1. Clone & configure
git clone https://github.com/d3mocide/Sovereign_Watch.git
cd Sovereign_Watch
cp .env.example .env
# Edit .env — see Documentation/Configuration.md for all variables

# 2. Boot
make prod          # production build (static frontend, no hot-reload)
# or
make dev           # development build (Vite HMR, uvicorn --reload)

# 3. Access
#   Tactical Map: http://localhost
#   API Docs:     http://localhost/api/docs

Minimum config required in .env:

CENTER_LAT=45.5152        # Your monitoring area
CENTER_LON=-122.6784
POSTGRES_PASSWORD=...     # Required — choose any strong password
JWT_SECRET_KEY=...        # Required — generate with: openssl rand -hex 32
AISSTREAM_API_KEY=...     # Free at aisstream.io (maritime data)
AISHUB_USERNAME=...       # Optional — enables automatic AIS fallback via AISHub
AIS_PRIMARY_SOURCE=aisstream  # Optional — aisstream or aishub
VITE_MAPBOX_TOKEN=...     # mapbox.com (optional — for 3D terrain)
ANTHROPIC_API_KEY=...     # For AI track analysis (optional)

Documentation

Full documentation is in the Documentation/ folder:

GuideDescription
Deployment & Upgrade GuideInstall, run, upgrade, troubleshoot
Configuration ReferenceAll .env variables
ADS-B PollerAviation data ingestion
AIS Maritime PollerMaritime vessel positions
Space PulseSGP4, SatNOGS, and Space Weather
JS8Call RadioHF Radio / JS8Call Terminal
Infra PollerInternet outages + submarine cables
RF PulseRF repeaters + NOAA weather radio
GEODENT (GDELT)Real-time OSINT event stream
TAK Protocol ReferenceInternal message schema (CoT/Protobuf)
API ReferenceREST endpoints + WebSocket
UI User GuideHow to use the Tactical and Orbital maps
AI ConfigurationHow to configure the AI models

Architecture

graph TD
    subgraph "Entry Point (Nginx)"
        NG[Reverse Proxy :80]
    end

    subgraph "Ingestion (Python Pollers)"
        A[ADS-B Network] -->|JSON| B(Ingestion Services)
        C[AIS Stream] -->|JSON| B
        Z[Space Domain Feed] -->|TLE/SatNOGS/NOAA| B
        H3[H3 Coverage: Live Poller Pulse] -->|JSON| B
        JS[Sovereign JS8Call] -->|UDP Bridge| B
        RF[RF Pulse: ARD/NOAA/RepBook/RadioRef] -->|REST API/SOAP| B
        IN[Infra Poller: IODA/Cables] -->|REST API| B
        GD[GEODENT: GDELT Pulse OSINT] -->|TSV/REST API| B
        B -->|TAK JSON| D(Redpanda Bus)
    end

    subgraph "State & Persistence"
        D -->|Stream| E[(TimescaleDB)]
        RS[(Redis Cache)]
        B -->|Cache| RS
    end

    subgraph "Cognition (LiteLLM)"
        G[Fusion API] -->|Query| H{AI Router}
        H -->|Tier 1| I[Local Llama3]
        H -->|Tier 3| CL[Claude]
    end

    subgraph "Presentation (React + Deck.gl)"
        FE[MainHUD Shell] --> L[Intelligence Feed]
        FE --> M[Projective Velocity Blending]
        M -->|WebGL 3D| N[Mapbox / MapLibre Overlay]
        FE --> SYS[System Settings Widget]
        FE --> INF[Infrastructure Layers]
    end

    NG -->|/| FE
    NG -->|/api/| G
    NG -->|/js8/| JS
    G -->|Read Cache| RS

Data Sources

All upstream data is sourced from public, open-access networks.

DomainSourceUpdate Rate
Aviation (ADS-B)adsb.fi, adsb.lol, airplanes.liveEvery 2–30 seconds
Maritime (AIS)AISStream.io WebSocketEvent-driven (real time)
SpaceCelestrak, SatNOGS, NOAA SWPC5s (SGP4) / 1h (Obs)
Internet OutagesIODA (Georgia Tech)Every 30 minutes
Submarine CablesTeleGeographyEvery 24 hours
RF InfrastructureARD, NOAA NWR, RadioReferenceEvery 24–168 hours
GDELT (OSINT)GDELTproject.orgEvery 15 minutes
WebSDRGlobal NetworkDiscovery (on-demand)

⚠️ Disclaimer

Important

Sovereign Watch ingests telemetry and intelligence from public, open-source networks (e.g., ADS-B, AIS, public API feeds). All data is strictly derivative of these unencrypted, publicly broadcasted signals. [!WARNING] All data is provided "AS IS" without any warranty of accuracy, reliability, or completeness. The developers assume no responsibility for decisions taken based on the intelligence presented. Sovereign Watch is designed purely for research, educational, and hobbyist data fusion purposes.


AI Agent Protocol

This repository is Agent-Aware. Read AGENTS.md before contributing.

  • All inter-service data must adhere to the TAK Protocol — see TAK Protocol Reference
  • Follow the "Sovereign Glass" design principles for all UI modifications
  • Never run commands directly on the host — use Docker Compose

Contributing

Pull requests are welcome. Please review AGENTS.md and the Documentation before contributing.

  • Issues: Use the GitHub issue tracker for bugs and feature requests
  • PRs: Include a clear description; AI agent contributions must align with AGENTS.md

Tech Stack

Docker · FastAPI · React · Deck.gl · MapLibre GL JS · Mapbox GL JS · TimescaleDB · Redpanda · Celestrak · JS8Call · KiwiSDR


Sovereign Watch © 2026
Maintained by d3FRAG Networks & The Antigravity Agent Team.

Back to Top