BigBodyCobain/ShadowbrokerPublic

Open-source intelligence for the global theater. Track everything from the corporate/private jets of the wealthy, and spy satellites, to seismic events in one unified interface. Hook an AI agent up to have it parse through data and find previously unseen correlations. The knowledge is available to all but rarely aggregated in the open, until now.

AI summary: A decentralized, real-time geospatial intelligence platform for tracking global assets.

Stars
10.6K
+70 today
Forks
1.7K
Watchers
88
Open issues
0
Open PRs
0
Contributors
~27
Commits
467
Branches
45

PythonAGPL-3.0Created Mar 5, 2026Last push 1d agoLatest release v0.9.83+328 stars this week+432 this month

Star history

since Mar 1, 2026
05K10KMar 2026Apr 2026Jun 2026Aug 2026
10.6K stars as of Aug 6, 2026, tracked back to Mar 1, 2026. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

commits per day, last 52 weeks
AugSepOctNovDecJanFebMarAprMayJunJulMonWedFri2025-08-02: 0 commits2025-08-03: 0 commits2025-08-04: 0 commits2025-08-05: 0 commits2025-08-06: 0 commits2025-08-07: 0 commits2025-08-08: 0 commits2025-08-09: 0 commits2025-08-10: 0 commits2025-08-11: 0 commits2025-08-12: 0 commits2025-08-13: 0 commits2025-08-14: 0 commits2025-08-15: 0 commits2025-08-16: 0 commits2025-08-17: 0 commits2025-08-18: 0 commits2025-08-19: 0 commits2025-08-20: 0 commits2025-08-21: 0 commits2025-08-22: 0 commits2025-08-23: 0 commits2025-08-24: 0 commits2025-08-25: 0 commits2025-08-26: 0 commits2025-08-27: 0 commits2025-08-28: 0 commits2025-08-29: 0 commits2025-08-30: 0 commits2025-08-31: 0 commits2025-09-01: 0 commits2025-09-02: 0 commits2025-09-03: 0 commits2025-09-04: 0 commits2025-09-05: 0 commits2025-09-06: 0 commits2025-09-07: 0 commits2025-09-08: 0 commits2025-09-09: 0 commits2025-09-10: 0 commits2025-09-11: 0 commits2025-09-12: 0 commits2025-09-13: 0 commits2025-09-14: 0 commits2025-09-15: 0 commits2025-09-16: 0 commits2025-09-17: 0 commits2025-09-18: 0 commits2025-09-19: 0 commits2025-09-20: 0 commits2025-09-21: 0 commits2025-09-22: 0 commits2025-09-23: 0 commits2025-09-24: 0 commits2025-09-25: 0 commits2025-09-26: 0 commits2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 5 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 18 commits2026-03-09: 36 commits2026-03-10: 6 commits2026-03-11: 13 commits2026-03-12: 10 commits2026-03-13: 17 commits2026-03-14: 22 commits2026-03-15: 4 commits2026-03-16: 6 commits2026-03-17: 0 commits2026-03-18: 1 commit2026-03-19: 0 commits2026-03-20: 2 commits2026-03-21: 1 commit2026-03-22: 7 commits2026-03-23: 1 commit2026-03-24: 5 commits2026-03-25: 2 commits2026-03-26: 41 commits2026-03-27: 3 commits2026-03-28: 6 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 4 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 0 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 0 commits2026-04-14: 0 commits2026-04-15: 0 commits2026-04-16: 0 commits2026-04-17: 0 commits2026-04-18: 0 commits2026-04-19: 0 commits2026-04-20: 0 commits2026-04-21: 0 commits2026-04-22: 0 commits2026-04-23: 0 commits2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 0 commits2026-04-30: 0 commits2026-05-01: 5 commits2026-05-02: 22 commits2026-05-03: 5 commits2026-05-04: 3 commits2026-05-05: 0 commits2026-05-06: 6 commits2026-05-07: 0 commits2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 3 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 3 commits2026-05-19: 5 commits2026-05-20: 6 commits2026-05-21: 15 commits2026-05-22: 15 commits2026-05-23: 9 commits2026-05-24: 4 commits2026-05-25: 4 commits2026-05-26: 0 commits2026-05-27: 0 commits2026-05-28: 4 commits2026-05-29: 1 commit2026-05-30: 1 commit2026-05-31: 0 commits2026-06-01: 0 commits2026-06-02: 3 commits2026-06-03: 5 commits2026-06-04: 2 commits2026-06-05: 0 commits2026-06-06: 4 commits2026-06-07: 1 commit2026-06-08: 5 commits2026-06-09: 2 commits2026-06-10: 4 commits2026-06-11: 5 commits2026-06-12: 3 commits2026-06-13: 0 commits2026-06-14: 5 commits2026-06-15: 6 commits2026-06-16: 3 commits2026-06-17: 1 commit2026-06-18: 2 commits2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 1 commit2026-06-22: 0 commits2026-06-23: 2 commits2026-06-24: 3 commits2026-06-25: 1 commit2026-06-26: 1 commit2026-06-27: 0 commits2026-06-28: 1 commit2026-06-29: 1 commit2026-06-30: 2 commits2026-07-01: 0 commits2026-07-02: 0 commits2026-07-03: 2 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 1 commit2026-07-07: 0 commits2026-07-08: 0 commits2026-07-09: 0 commits2026-07-10: 2 commits2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 0 commits2026-07-14: 0 commits2026-07-15: 0 commits2026-07-16: 0 commits2026-07-17: 0 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 0 commits2026-07-21: 0 commits2026-07-22: 0 commits2026-07-23: 0 commits2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 0 commits2026-07-27: 0 commits2026-07-28: 0 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits
389 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Widely adopted

    10,595 stars

  • Actively maintained

    Pushed within 48 hours

  • Continuous integration

    Automated checks passing

What Shadowbroker does

ShadowBroker is a powerful Open Source Intelligence (OSINT) aggregator that unifies disparate global tracking data into a single interface. It continuously monitors and displays the movements of private aircraft, spy satellites, and maritime vessels. The platform also integrates environmental data, such as real-time seismic events, to provide comprehensive situational awareness. By exposing an API, it allows AI agents to parse this aggregated data to uncover hidden correlations and anomalies. It effectively democratizes access to high-level global theater intelligence previously scattered across the open web.

Aimed at OSINT researchers, investigative journalists, and geospatial data analysts. It requires familiarity with complex data visualization and intelligence gathering techniques.

  • Multi-domain tracking: Simultaneously monitors ADS-B aircraft data, satellite trajectories, and maritime AIS signals.
  • Unified visualization: Renders complex, global datasets onto a single, high-performance geospatial interface.
  • AI agent integration: Provides structured data hooks for LLMs to analyze and detect unseen patterns.
  • Real-time event streaming: Updates tracking metrics and seismic alerts instantly as data is received.
  • Decentralized architecture: Aggregates intelligence from numerous open sources to prevent single points of failure.

Where teams use it

Journalistic investigation

Reporters tracking the movements of corporate jets and oligarch assets for investigative pieces.

Geopolitical analysis

OSINT researchers monitoring the deployment of surveillance satellites and maritime fleet movements.

Automated threat detection

Security analysts deploying AI agents to flag anomalous intersections of private flights and seismic events.

Global situational awareness

Enthusiasts seeking a comprehensive dashboard of real-time planetary activity.

Getting started: docker-compose up -d

README

main branch

🛰️ S H A D O W B R O K E R

Global Threat Intercept — Real-Time Geospatial Intelligence Platform


SHADOWBROKER_LOG1423.MP4

ShadowBroker is a decentralized intelligence platform that aggregates real-time, multi-domain OSINT telemetry from 60+ live intelligence feeds into a single dark-ops map interface. Aircraft, ships, satellites, conflict zones, CCTV networks, GPS jamming, internet-connected devices, police scanners, mesh radio nodes, and breaking geopolitical events — all updating in real time on one screen as well as an obfuscated communications protocol and information exchange infrastructure.

🛰️ Project Description

Built with Next.js, MapLibre GL, FastAPI, and Python. 40+ toggleable data layers, including SAR ground-change detection, Telegram OSINT (public channel previews geoparsed onto the map), a server-side recon toolkit (DNS, WHOIS, sanctions, BGP, IP sweep, and more), supply-chain risk overlays, and malware/C2 + CISA KEV cyber threat feeds. Multiple visual modes (DEFAULT / SATELLITE / FLIR / NVG / CRT). Right-click any point on Earth for a country dossier, head-of-state lookup, entity-graph expansion, and the latest Sentinel-2 satellite photo. ShadowBroker has no accounts, product telemetry, or analytics; the dashboard talks to your self-hosted backend. Sensitive recon and Shodan queries never hit third-party APIs from the browser — they are proxied through the backend with SSRF guards and local-operator auth. The OpenClaw / agent command channel exposes the same recon backends plus full telemetry search — no separate API integration required.

Designed for analysts, researchers, radio operators, and anyone who wants to see what the world looks like when every public signal is on the same map.


🌍 Why This Exists

A surprising amount of global telemetry is already public — aircraft ADS-B broadcasts, maritime AIS signals, satellite orbital data, earthquake sensors, mesh radio networks, police scanner feeds, environmental monitoring stations, internet infrastructure telemetry, and more. This data is scattered across dozens of tools and APIs. ShadowBroker combines all of it into a single interface.

The project does not introduce new surveillance capabilities — it aggregates and visualizes existing public datasets. It is fully open-source so anyone can audit exactly what data is accessed and how. ShadowBroker does not include product telemetry, analytics, or accounts. Operator-supplied keys stay in your local deployment, but live OSINT features necessarily make outbound requests to the public data providers you enable or query.


📡 Shodan & Recon (security-first)

ShadowBroker includes an optional Shodan connector for operator-supplied API access (SHODAN_API_KEY) and a Recon Toolkit panel for keyless OSINT lookups. Both run server-side only: the browser calls your self-hosted /api/osint/* and /api/tools/shodan/* routes; outbound requests are made by the backend after SSRF validation. Recon requires local-operator access (same trust model as layer toggles and admin routes). Shodan results render as a separate map overlay and remain subject to Shodan’s terms of service.


🗺️ Interesting Use Cases
  • Track Air Force One, the private jets of billionaires and dictators, and every military tanker, ISR, and fighter broadcasting ADS-B. Air Force One and all of the accompanying Presidential/Vice Presidential planes are highlighted and monitored from the moment they leave the ground.
  • Connect an AI agent as a co-analyst through ShadowBroker's HMAC-signed agentic command channel — supports OpenClaw and any other agent that speaks the protocol (Claude, GPT, LangChain, custom). The agent gets full read/write access to all 40+ data layers, compact cross-layer search (search_telemetry, search_news), the full recon toolkit (osint_lookup for IP/DNS/WHOIS/sanctions/CVE/etc.), entity-graph expansion, pin placement, map control, SAR ground-change, mesh networking, and alert delivery. It sees everything the operator sees and can take actions on the map in real time.
  • Communicate on the InfoNet testnet — The first decentralized intelligence mesh built into an OSINT tool. Obfuscated messaging with gate personas, Dead Drop peer-to-peer exchange, and a built-in terminal CLI. No accounts, no signup. Privacy is not guaranteed yet — this is an experimental testnet — but the protocol is live and being hardened.
  • Right-click anywhere on Earth for a country dossier (head of state, population, languages), Wikipedia summary, and the latest Sentinel-2 satellite photo at 10m resolution
  • Click a KiwiSDR node and tune into live shortwave radio directly in the dashboard. Click a police scanner feed and eavesdrop in one click.
  • Watch 11,000+ CCTV cameras across 6 countries — London, NYC, California, Spain, Singapore, and more — streaming live on the map
  • See GPS jamming zones in real time — derived from NAC-P degradation analysis of aircraft transponder data
  • Monitor satellites overhead color-coded by mission type — military recon, SIGINT, SAR, early warning, space stations — with SatNOGS and TinyGS ground station networks
  • Track naval traffic including 25,000+ AIS vessels, fishing activity via Global Fishing Watch, and billionaire superyachts
  • Follow earthquakes, volcanic eruptions, active wildfires (NASA FIRMS), severe weather alerts, and air quality readings worldwide
  • Map military bases, 35,000+ power plants, 2,000+ data centers, and internet outage regions — cross-referenced automatically
  • Connect to Meshtastic mesh radio nodes and APRS amateur radio networks — visible on the map and integrated into Mesh Chat
  • Detect ground changes through cloud cover with SAR (Synthetic Aperture Radar) — mm-scale ground deformation, flood extent, vegetation disturbance, and damage assessments from NASA OPERA and Copernicus EGMS. Define your own watch areas and get anomaly alerts. Free with a NASA Earthdata account.
  • Switch visual modes — DEFAULT, SATELLITE, FLIR (thermal), NVG (night vision), CRT (retro terminal) — via the STYLE button
  • Track trains across the US (Amtrak) and Europe (DigiTraffic) in real time
  • Estimate where US aircraft carriers are using automated GDELT news scraping — no other open tool does this
  • Search internet-connected devices worldwide via Shodan — cameras, SCADA systems, databases — plotted as a live overlay on the map
  • Run a full recon toolkit from the left sidebar — IP geolocation, DNS, RDAP/WHOIS, certificate transparency, BGP/ASN, OFAC sanctions search, CVE lookup, Tor/OTX threat checks, and subnet sweeps (InternetDB proxied server-side)
  • Expand an entity graph when you select an aircraft, vessel, company, or IP — Wikidata + OFAC + live store cross-links rendered in the Entity Graph panel
  • Monitor supply-chain risk — Tier 1/2 semiconductor and battery fabs scored against nearby earthquakes, wildfires, and conflict events (SCM panel)
  • Toggle malware C2 hotspots — abuse.ch Feodo Tracker + URLhaus feeds mapped by country (opt-in layer)
  • Monitor Telegram OSINT channels — public t.me/s war/conflict feeds (OSINTdefender, NEXTA, etc.) scraped hourly, risk-scored, geoparsed to metro anchors, and plotted as clickable map pins with inline media
  • Overlay global submarine cables — static TeleGeography-derived cable routes (opt-in layer)

⚡ Quick Start (Docker)

From GitHub (default — uses GHCR images)

git clone https://github.com/bigbodycobain/Shadowbroker.git
cd Shadowbroker
docker compose pull
docker compose up -d

From GitLab (uses GitLab Container Registry)

git clone https://gitlab.com/bigbodycobain/Shadowbroker.git
cd Shadowbroker
docker compose -f docker-compose.yml -f docker-compose.gitlab.yml pull
docker compose -f docker-compose.yml -f docker-compose.gitlab.yml up -d

Both paths produce identical containers — same source, same CI, same images byte-for-byte. Pick whichever ecosystem you already use.

Open http://localhost:3000 to view the dashboard! (Requires Docker Desktop or Docker Engine)

Join the private InfoNet swarm (sb-testnet-0): Click NODE in the dashboard, or run ./meshnode.sh for a headless participant. No manual peer list — fleet defaults discover the seed and pull the signed manifest automatically. Set MESH_INFONET_FLEET_JOIN=false in .env for a private solo node.

Backend port already in use? The browser only needs port 3000, but the backend API is also published on host port 8000 for local diagnostics. If another app already uses 8000, create or edit .env next to docker-compose.yml and set BACKEND_PORT=8001, then run docker compose up -d.

Blank news/UAP/bases/wastewater after several minutes? Check for backend OOM restarts with docker events --since 30m --filter container=shadowbroker-backend --filter event=oom. The default compose file gives the backend 4GB; if your host has less memory, reduce enabled feeds or set BACKEND_MEMORY_LIMIT=3G and expect slower/heavier layers to warm more gradually.

Podman users: Podman works, but podman compose is a wrapper and still needs a Compose provider installed. On Windows/WSL, if you see looking up compose provider failed, install podman-compose and run podman-compose pull followed by podman-compose up -d from inside the cloned Shadowbroker folder. On Linux/macOS/WSL shells you can also use ./compose.sh --engine podman pull and ./compose.sh --engine podman up -d.


🔄 How to Update

ShadowBroker uses pre-built Docker images — no local building required. Updating takes seconds:

docker compose pull
docker compose up -d

That's it. pull grabs the latest images, up -d restarts the containers.

Coming from an older version? Pull the latest repo code first, then pull images:

git pull origin main
docker compose down
docker compose pull
docker compose up -d

Podman users should run the equivalent provider command, for example podman-compose pull and podman-compose up -d, or use ./compose.sh --engine podman pull and ./compose.sh --engine podman up -d from a bash-compatible shell.

Update Integrity

Docker updates are delivered through signed container registries. The legacy ZIP self-updater verifies release archives through this chain, in order:

  • MESH_UPDATE_SHA256 when an operator pins a digest explicitly.
  • backend/data/release_digests.json for bundled release pins.
  • The release SHA256SUMS.txt asset on GitHub when a bundled pin is not present.

Release maintainers should run python backend/scripts/release_helper.py hash <ShadowBroker_vX.Y.Z.zip> before publishing, then publish SHA256SUMS.txt and update backend/data/release_digests.json when shipping a ZIP updater target. The updater keeps the operator override path intact instead of failing closed on missing bundled digests, so existing installs do not get stranded by a release-process mistake.

CSP Hardening

The production frontend ships with a hydration-compatible CSP and a strict nonce-only CSP in Content-Security-Policy-Report-Only. Set SHADOWBROKER_STRICT_CSP=1 only after verifying the exact build hydrates correctly in your deployment. Runtime Google Fonts are not required; the bundled Next font pipeline serves the dashboard font from the app build.

⚠️ Stuck on the old version?

If git pull fails or docker compose up keeps building from source instead of pulling images, your clone predates a March 2026 repository migration that rewrote commit history. A normal git pull cannot fix this. Run:

# Back up any local config you want to keep (.env, etc.)
cd ..
rm -rf Shadowbroker
git clone https://github.com/bigbodycobain/Shadowbroker.git
cd Shadowbroker
docker compose pull
docker compose up -d

How to tell if you're affected: If docker compose up shows RUN apt-get, RUN npm ci, or RUN pip install — it's building from source instead of pulling pre-built images. You need a fresh clone.

Other troubleshooting:

  • Force re-pull: docker compose pull --no-cache
  • Prune old images: docker image prune -f
  • Check logs: docker compose logs -f backend

☸️ Kubernetes / Helm (Advanced)

For high-availability deployments or home-lab clusters, ShadowBroker supports deployment via Helm. This chart is based on the bjw-s-labs template and provides a robust, modular setup for both the backend and frontend.

1. Add the Repository:

helm repo add bjw-s-labs https://bjw-s-labs.github.io/helm-charts/
helm repo update

2. Install the Chart:

# Default — pulls images from GHCR
helm install shadowbroker ./helm/chart --create-namespace --namespace shadowbroker

# GitLab registry variant
helm install shadowbroker ./helm/chart --create-namespace --namespace shadowbroker \
  -f helm/chart/values.yaml \
  -f helm/chart/values-gitlab.yaml

3. Key Features:

  • Modular Architecture: Individually scale the intelligence backend and the HUD frontend.
  • Security Context: Runs with restricted UIDs (1001) for container hardening.
  • Ingress Ready: Compatible with Traefik, Cert-Manager, and Gateway API for secure, external access to your intelligence node.

Special thanks to @chr0n1x for contributing the initial Kubernetes architecture.


🌐 Experimental Testnet — No Privacy Guarantee

ShadowBroker v0.9.7 ships InfoNet (decentralized intelligence mesh + Sovereign Shell governance economy), an agentic AI command channel (supports OpenClaw and any HMAC-signing agent), Time Machine snapshot playback, and SAR satellite ground-change detection. This is an experimental testnet — not a private messenger and not a production governance system.

Channel Privacy Status Details
Meshtastic / APRS PUBLIC RF radio transmissions are public and interceptable by design.
InfoNet Gate Chat OBFUSCATED Messages are obfuscated with gate personas and canonical payload signing, but NOT end-to-end encrypted. Metadata is not hidden despite being designed through Tor and Reticulum (Work in progress).
Dead Drop DMs STRONGEST CURRENT LANE Token-based epoch mailbox with SAS word verification. Strongest lane in this build, but not yet confidently private.
Sovereign Shell governance PUBLIC LEDGER Petitions, votes, upgrade hashes, and dispute stakes are signed events on a public hashchain. Pseudonymous via gate persona, but governance actions are intentionally observable.
Privacy primitives (RingCT / stealth / DEX) NOT YET WIRED Locked Protocol contracts are in place, but the cryptographic scheme has not been chosen. The privacy-core Rust crate is the integration target for a future sprint.

Do not transmit anything sensitive on any channel. Treat all lanes as open and public for now. E2E encryption and deeper native/Tauri hardening are the next milestones. If you fork this project, keep these labels intact and do not make stronger privacy claims than the implementation supports.

For a full picture of what the mesh actually defends against and what it doesn't, read the threat model and the claims reconciliation. Every sentence above is mapped there to the code path that enforces it (or doesn't).


✨ Features

🧅 InfoNet — Decentralized Intelligence Mesh + Sovereign Shell (expanded in v0.9.7)

The first decentralized intelligence communication and governance layer built directly into an OSINT platform. No accounts, no signup, no identity required. v0.9.7 promotes InfoNet from a chat layer into a full governance economy with a clear path to a privacy-preserving decentralized intelligence platform.

Communication layer (since v0.9.6):

  • InfoNet Experimental Testnet — A global, obfuscated message relay using Tor and Reticulum. Anyone running ShadowBroker can transmit and receive on the InfoNet. Messages pass through a Wormhole relay layer with gate personas, Ed25519 canonical payload signing, and transport obfuscation.
  • Mesh Chat Panel — Three-tab interface: INFONET (gate chat with obfuscated transport), MESH (Meshtastic radio integration), DEAD DROP (peer-to-peer message exchange with token-based epoch mailboxes — strongest current lane).
  • Gate Persona System — Pseudonymous identities with Ed25519 signing keys, prekey bundles, SAS word contact verification, and abuse reporting.
  • Mesh Terminal — Built-in CLI: send, dm, market commands, gate state inspection. Draggable panel, minimizes to the top bar. Type help to see all commands.
  • Crypto Stack — Ed25519 signing, X25519 Diffie-Hellman, AESGCM encryption with HKDF key derivation, hash chain commitment system. Double-ratchet DM scaffolding in progress.

Sovereign Shell — governance economy (NEW in v0.9.7):

  • Petitions + Governance DSL — On-chain parameter changes via signed petitions. Type-safe payload executor for UPDATE_PARAM, BATCH_UPDATE_PARAMS, ENABLE_FEATURE, and DISABLE_FEATURE. Tunable knobs change by vote — no code deploys required.
  • Upgrade-Hash Governance — Protocol upgrades that need new logic (not just parameter changes) vote on a SHA-256 hash of the verified release. 80% supermajority, 40% quorum, 67% Heavy-Node activation. Lifecycle: signatures → voting → challenge window → awaiting readiness → activated.
  • Resolution & Dispute Markets — Stake on market resolution outcomes (yes / no / data_unavailable), open disputes with bonded evidence, and stake on dispute confirm-or-reverse. Per-row submission state stays isolated so concurrent actions don't share an in-flight slot.
  • Evidence Submission — Bonded evidence bundles with client-side SHA-256 canonicalization that matches Python repr() exactly, so hashes round-trip cleanly through the chain.
  • Gate Suspension / Shutdown / Appeals — Filing forms for suspending or shutting down a gate, with a reusable appeal flow auto-targeting the pending petition.
  • Bootstrap Eligible-Node-One-Vote — The first 100 markets resolve via one-vote-per-eligible-node instead of stake-weighted resolution. Eligibility: identity age ≥ 3 days, not in predictor exclusion set, valid Argon2id PoW (Heavy-Node-only). Transitions to staked resolution at 1000 nodes.
  • Two-Tier State + Epoch Finality — Tier 1 events propagate CRDT-style for low latency; Tier 2 events require epoch finality before they can be acted on. Identity rotation, progressive penalties, ramp milestones, and constitutional invariants enforced via MappingProxyType.
  • Adaptive Polling — Sovereign Shell views poll every 8 seconds during active voting / challenge / activation phases, every 30–60 seconds when idle. Voting feels live without a websocket layer.
  • Verbatim Diagnostics — Every write button surfaces the backend's verbatim rejection reason. No opaque "denied" toasts.

Privacy primitive runway (NEW in v0.9.7):

  • Function Keys — Anonymous Credential Scaffolding — The plumbing is in place for nullifiers, challenge-response, two-phase commit receipts, enumerated denial codes, and batched settlement. Today's challenge-response is an HMAC-based placeholder for integration testing, not a production anonymous or zero-knowledge citizenship proof. True unlinkable issuance still waits on a primitive decision (RSA blind sigs vs BBS+ vs U-Prove vs Idemix).
  • Locked Protocol Contracts — Stable interfaces in services/infonet/privacy/contracts.py for ring signatures, stealth addresses, Pedersen commitments, range proofs, and DEX matching. The privacy-core Rust crate is the integration target — no caller of the privacy module needs to know which scheme is active.
  • Sprint 11+ Path — When the cryptographic scheme is chosen, primitives wire into the locked Protocols without API churn.

Experimental Testnet — No Privacy Guarantee: InfoNet messages are obfuscated but NOT end-to-end encrypted. The Mesh network (Meshtastic/APRS) is NOT private — radio transmissions are inherently public. The privacy primitive contracts are scaffolded but not yet wired. Do not send anything sensitive on any channel. Treat all channels as open and public for now.

🔍 Recon Toolkit & Shodan (Osiris-derived, security-first)

Adapted from the OSIRIS recon stack (MIT) with ShadowBroker’s proxy model. Attribution: backend/third_party/osiris/NOTICE.md.

Recon Toolkit (left sidebar — local operator only):

  • IP / DNS / WHOIS — ip-api.com geolocation, Google DNS-over-HTTPS, RDAP registrant data with optional HTTP security header scoring
  • Certificates & BGP — crt.sh subdomain discovery, bgpview.io ASN/prefix lookups
  • Threat intel — AlienVault OTX pulses, Tor exit-node checks, optional per-IP/domain reputation
  • Sanctions — OpenSanctions us_ofac_sdn index (CC-BY); cross-checks on WHOIS entities and IP ISP/org strings
  • CVE / MAC / GitHub / leaks — MITRE CVE API, MAC vendor lookup, GitHub profile recon, public breach checks
  • IP sweep/api/osint/sweep/scan geolocates a target /24–/32 and proxies Shodan InternetDB host discovery server-side (browser never contacts InternetDB directly)
  • SSRF guard — Private, loopback, link-local, and metadata hostnames are blocked before any user-supplied fetch

Entity graph — Select any map entity to open the Entity Graph panel (GET /api/entity/expand). Resolves aircraft, vessels, companies, persons, IPs, and countries into a node/link graph (Wikidata SPARQL + OFAC + in-memory flight/ship store).

OpenClaw / agent access — The same recon backends are available on the HMAC command channel (no browser local-operator gate): osint_lookup (passive IP/DNS/WHOIS/certs/BGP/sanctions/CVE/MAC/GitHub/leaks/threats), entity_expand (relationship graph), and osint_sweep (active subnet scan — full access tier only). Call osint_tools to list supported lookup types. Skill package: openclaw-skills/shadowbroker/ (SKILL.md + sb_query.py).

Shodan overlay (unchanged):

  • Internet Device Search — Query Shodan with your own API key; results plotted as a live overlay
  • Configurable Markers — Shape, color, and size customization for Shodan results

🛩️ Aviation Tracking

  • Commercial Flights — Real-time positions via OpenSky Network (~5,000+ aircraft)
  • Private Aircraft — Light GA, turboprops, bizjets tracked separately
  • Private Jets — High-net-worth individual aircraft with owner identification
  • Military Flights — Tankers, ISR, fighters, transports via adsb.lol military endpoint
  • Flight Trail Accumulation — Persistent breadcrumb trails for all tracked aircraft
  • Holding Pattern Detection — Automatically flags aircraft circling (>300° total turn)
  • Aircraft Classification — Shape-accurate SVG icons: airliners, turboprops, bizjets, helicopters
  • Grounded Detection — Aircraft below 100ft AGL rendered with grey icons

🚢 Maritime Tracking

  • AIS Vessel Stream — 25,000+ vessels via aisstream.io WebSocket (real-time)
  • Ship Classification — Cargo, tanker, passenger, yacht, military vessel types with color-coded icons
  • Carrier Strike Group Tracker — All 11 active US Navy aircraft carriers with OSINT-estimated positions. No other open tool does this.
    • Automated GDELT news scraping parses carrier movement reporting to estimate positions
    • 50+ geographic region-to-coordinate mappings (e.g. "Eastern Mediterranean" → lat/lng)
    • Disk-cached positions, auto-refreshes at 00:00 & 12:00 UTC
  • Cruise & Passenger Ships — Dedicated layer for cruise liners and ferries
  • Fishing Activity — Global Fishing Watch vessel events (NEW)
  • Clustered Display — Ships cluster at low zoom with count labels, decluster on zoom-in

🚆 Rail Tracking (NEW in v0.9.6)

  • Amtrak Trains — Real-time positions of Amtrak trains across the US with speed, heading, route, and status
  • European Rail — DigiTraffic integration for European train positions

🛰️ Space & Satellites

  • Orbital Tracking — Real-time satellite positions via CelesTrak TLE data + SGP4 propagation (2,000+ active satellites, no API key required)
  • Mission-Type Classification — Color-coded by mission: military recon (red), SAR (cyan), SIGINT (white), navigation (blue), early warning (magenta), commercial imaging (green), space station (gold)
  • SatNOGS Ground Stations — Amateur satellite ground station network with live observation data (NEW)
  • TinyGS LoRa Satellites — LoRa satellite constellation tracking (NEW)

🌍 Geopolitics & Conflict

  • Global Incidents — GDELT-powered conflict event aggregation (last 8 hours, ~1,000 events)
  • Ukraine Frontline — Live warfront GeoJSON from DeepState Map
  • Ukraine Air Alerts — Real-time regional air raid alerts (NEW)
  • SIGINT/RISINT News Feed — Real-time RSS aggregation from multiple intelligence-focused sources with user-customizable feeds (up to 20 sources, configurable priority weights 1-5)
  • Region Dossier — Right-click anywhere on Earth for an instant intelligence briefing:
    • Country profile (population, capital, languages, currencies, area)
    • Current head of state & government type (live Wikidata SPARQL query)
    • Local Wikipedia summary with thumbnail
    • Latest Sentinel-2 satellite photo with capture date and cloud cover (10m resolution)

🛰️ Satellite Imagery

  • NASA GIBS (MODIS Terra) — Daily true-color satellite imagery overlay with 30-day time slider, play/pause animation, and opacity control (~250m/pixel)
  • High-Res Satellite (Esri) — Sub-meter resolution imagery via Esri World Imagery — zoom into buildings and terrain detail (zoom 18+)
  • Sentinel-2 Intel Card — Right-click anywhere on the map for a floating intel card showing the latest Sentinel-2 satellite photo with capture date, cloud cover %, and clickable full-resolution image (10m resolution, updated every ~5 days)
  • Sentinel Hub Process API — Copernicus CDSE satellite imagery with OAuth2 token flow (NEW)
  • VIIRS Nightlights — Night-time light change detection overlay (NEW)
  • 5 Visual Modes — Toggle the entire map aesthetic via the STYLE button:
    • DEFAULT — Dark CARTO basemap
    • SATELLITE — Sub-meter Esri World Imagery
    • FLIR — Thermal imaging aesthetic (inverted greyscale)
    • NVG — Night vision green phosphor
    • CRT — Retro terminal scanline overlay

🛰️ SAR Ground-Change Detection (NEW)

  • Synthetic Aperture Radar Layer — Detects ground changes through cloud cover, at night, anywhere on Earth. Two modes, both free:
    • Mode A (Catalog) — Free Sentinel-1 scene metadata from Alaska Satellite Facility. No account required. Shows when radar passes happened over your AOIs and when the next pass is coming.
    • Mode B (Full Anomalies) — Real-time ground-change alerts from NASA OPERA (DISP, DSWx, DIST-ALERT) and Copernicus EGMS. Requires a free NASA Earthdata account — the in-app wizard walks you through setup in under a minute.
  • Anomaly Types — Ground deformation (mm-scale subsidence, landslides), surface water change (flood extent), vegetation disturbance (deforestation, burn scars, blast craters), damage assessments (UNOSAT/Copernicus EMS verified), and coherence change detection
  • Map Visualization — Color-coded anomaly pins by kind (orange for deformation, cyan for water, green for vegetation, red for damage, purple for coherence). AOI boundaries drawn as dashed polygons with category-based coloring. Click any pin for a detail popup with magnitude, confidence, solver, scene count, and provenance link.
  • AOI Editor — Define areas of interest directly from the map. Click the "EDIT AOIs" button when the SAR layer is active, then use the crosshair tool to click-to-drop an AOI center on the map. Set name, radius (1–500 km), and category. AOIs appear on the map immediately.
  • OpenClaw Integration — The AI agent can inspect SAR anomaly details (sar_pin_click) and fly the operator's map to any AOI center (sar_focus_aoi) — enabling collaborative analyst workflows.
  • Settings Panel — Dedicated SAR tab in Settings shows Mode A/B status, OpenClaw integration state, and lets you revoke Earthdata credentials with one click.

📻 Software-Defined Radio & SIGINT

  • KiwiSDR Receivers — 500+ public SDR receivers plotted worldwide with clustered amber markers
  • Live Radio Tuner — Click any KiwiSDR node to open an embedded SDR tuner directly in the SIGINT panel
  • Metadata Display — Node name, location, antenna type, frequency bands, active users
  • Meshtastic Mesh Radio — MQTT-based mesh radio integration with node map, integrated into Mesh Chat (NEW)
  • APRS Integration — Amateur radio positioning via APRS-IS TCP feed (NEW)
  • GPS Jamming Detection — Real-time analysis of aircraft NAC-P (Navigation Accuracy Category) values
    • Grid-based aggregation identifies interference zones
    • Red overlay squares with "GPS JAM XX%" severity labels
  • Radio Intercept Panel — Scanner-style UI with OpenMHZ police/fire scanner feeds. Click any system to listen live. Scan mode cycles through active feeds automatically. Eavesdrop-by-click on real emergency communications.

📷 Surveillance

  • CCTV Mesh — 22,000+ live traffic cameras from 21 ingestors across 10 countries (US, UK, Canada, Australia, Austria, Spain, Singapore, Netherlands when NDW feed is up, plus OSM):
    • 🇬🇧 Transport for London JamCams
    • 🇺🇸 NYC DOT, Austin TX (TxDOT)
    • 🇺🇸 California (12 Caltrans districts), Washington State (WSDOT), Georgia DOT, Illinois DOT, Michigan DOT
    • 🇪🇸 Spain DGT National (20 cities), Madrid City (357 cameras via KML)
    • 🇦🇹 Austria ASFINAG motorway webcams
    • 🇸🇬 Singapore LTA
    • 🌍 Windy Webcams
  • Feed Rendering — Automatic detection & rendering of video, MJPEG, HLS, embed, satellite tile, and image feeds
  • Clustered Map Display — Green dots cluster with count labels, decluster on zoom

🔥 Environmental & Hazard Monitoring

  • NASA FIRMS Fire Hotspots (24h) — 5,000+ global thermal anomalies from NOAA-20 VIIRS satellite, updated every cycle. Flame-shaped icons color-coded by fire radiative power (FRP): yellow (low), orange, red, dark red (intense). Clustered at low zoom with fire-shaped cluster markers.
  • Volcanoes — Smithsonian Global Volcanism Program Holocene volcanoes plotted worldwide (NEW)
  • Weather Alerts — Severe weather polygons with urgency/severity indicators (NEW)
  • Air Quality (PM2.5) — OpenAQ stations worldwide with real-time particulate matter readings (NEW)
  • Earthquakes (24h) — USGS real-time earthquake feed with magnitude-scaled markers
  • Space Weather Badge — Live NOAA geomagnetic storm indicator in the bottom status bar. Color-coded Kp index: green (quiet), yellow (active), red (storm G1–G5). Data from SWPC planetary K-index 1-minute feed.

🏗️ Infrastructure Monitoring

  • Internet Outage Monitoring — Regional internet connectivity alerts from Georgia Tech IODA. Grey markers at affected regions with severity percentage. Uses only reliable datasources (BGP routing tables, active ping probing) — no telescope or interpolated data.
  • Data Center Mapping — 2,000+ global data centers plotted from a curated dataset. Clustered purple markers with server-rack icons. Click for operator, location, and automatic internet outage cross-referencing by country.
  • Military Bases — Global military installation and missile facility database (NEW)
  • Power Plants — 35,000+ global power plants from the WRI database (NEW)
  • Submarine Cables — Global undersea cable routes from static TeleGeography-derived GeoJSON (frontend/public/data/submarine-cables.json). Opt-in line overlay.
  • Malware C2 Layer — Botnet C2 servers (Feodo Tracker) and recent malware URLs (URLhaus) from abuse.ch, refreshed on the slow tier when the layer is enabled.
  • SCM Supplier Risk — Tier 1/2 fabs and battery plants (TSMC, Samsung, CATL, etc.) cross-referenced against earthquakes, FIRMS fires, and GDELT conflict proximity. Alerts in the SCM panel; optional map layer.
  • Cyber Threats Feed — Recent CISA Known Exploited Vulnerabilities (KEV) entries exposed via /api/cyber-threats and the layer toggle.
  • Country Risk Index — Static geopolitical risk scores with USGS earthquake enrichment via /api/country-risk.
  • Telegram OSINT — Public channel web previews (t.me/s/*) from configurable war/OSINT feeds. Hourly incremental merge (no redundant re-scrape), keyword risk scoring, Cyrillic/Arabic place aliases, metro-anchor geocoding (separate from news centroids), inline photo/video via /api/telegram/media proxy. Layer key: telegram_osint.

🌐 Additional Layers & Tools

  • Day/Night Cycle — Solar terminator overlay showing global daylight/darkness
  • Global Markets Ticker — Live financial market indices (minimizable)
  • Measurement Tool — Point-to-point distance & bearing measurement on the map
  • LOCATE Bar — Search by coordinates (31.8, 34.8) or place name (Tehran, Strait of Hormuz) to fly directly to any location — geocoded via OpenStreetMap Nominatim

Gaza

🤖 Agentic AI Command Channel — OpenClaw + Compatible Agents (expanded in v0.9.7)

ShadowBroker exposes a bidirectional agentic AI command channel — a signed, tier-gated bridge that gives any compatible AI agent full read/write access to the intelligence platform. OpenClaw is the reference agent, but the channel is an open protocol: any LLM-driven agent that signs requests with HMAC-SHA256 (Claude Code, GPT, LangChain, custom Python/TypeScript clients, or your own integration) can connect as an analyst that sees the same data as the operator and can take actions on the map. ShadowBroker does not bundle an LLM, an agent runtime, or model weights — it provides the surface; you bring the agent.

v0.9.7 turns ShadowBroker from a dashboard a human watches into an intelligence surface any agent can act on.

Channel transport (NEW in v0.9.7):

  • Single Command ChannelPOST /api/ai/channel/command accepts {cmd, args} and dispatches to any registered tool.
  • Batched Concurrent ExecutionPOST /api/ai/channel/batch accepts up to 20 commands in one request. The backend runs them concurrently and returns a fan-out result map. Cuts agent latency by an order of magnitude over sequential calls.
  • Tier-Gated AccessOPENCLAW_ACCESS_TIER controls which commands the agent can call: restricted exposes the read-only set, full adds writes and injection. Discovery endpoint returns available_commands so the agent can introspect its own capabilities.
  • HMAC-SHA256 Signing — Every command is signed HMAC-SHA256(secret, METHOD|path|timestamp|nonce|sha256(body)) with timestamp + nonce replay protection and request integrity. Supports local mode (no config) and remote mode (agent on a different machine / VPS).

Capabilities:

  • Full Telemetry Access — The agent queries all 40+ data layers: flights, ships, satellites, SIGINT, conflict events, earthquakes, fires, wastewater, Telegram OSINT, malware/C2, CISA KEV cyber threats, SCM overlays, fishing activity (GFW), prediction markets, and more. Fast and slow tier endpoints return enriched data with geographic coordinates, timestamps, and source attribution.
  • Compact Search (preferred over full dumps)get_summaryget_layer_slice with per-layer since_layer_versions (SSE layer_changed push tells the agent exactly which layers updated). search_telemetry is the Google-style cross-layer keyword index. search_news covers news, GDELT, CrowdThreat, LiveUAMap, frontlines, and Telegram posts. entities_near, brief_area, find_flights/find_ships/find_entity, and correlate_entity answer targeted questions without multi-megabyte pulls.
  • Recon Toolkit on the Channelosint_lookup runs the same SSRF-guarded backends as the Recon panel (ip, dns, whois, certs, bgp, sanctions, cve, mac, github, leaks, threats, sweep_init). entity_expand builds Wikidata + OFAC relationship graphs. osint_sweep runs Shodan InternetDB subnet discovery (full tier). Layer aliases: telegram, malware/botnet, cyber/cisa/kev, scm/suppliers, gfw/fishing.
  • AI Intel Pins — Place color-coded investigation markers directly on the operator's map. 14 pin categories (threat, anomaly, military, maritime, aviation, SIGINT, infrastructure, etc.) with confidence scores, TTL expiry, source URLs, and batch placement up to 100 pins at once.
  • Map Control — Fly the operator's map view to any coordinate, trigger satellite imagery lookups, and open region dossiers. The agent can direct the operator's attention to specific locations in real time.
  • SAR Ground-Change — Query SAR anomaly feeds, inspect pin details, manage AOIs, and fly the map to watch areas. The agent can monitor for ground deformation, flood extent, or damage and promote anomalies to pins.
  • Native Layer Injection — Push custom data directly into ShadowBroker's native layers (CCTV cameras, ships, SIGINT nodes, military bases, etc.) so agent-discovered sources render alongside real feeds.
  • Wormhole Mesh Participation — The agent can join the decentralized InfoNet, post signed messages, join encrypted gate channels, send/receive encrypted DMs, and interact with Meshtastic radio and Dead Drops — operating as a full mesh peer.
  • Sovereign Shell Participation (v0.9.7) — File petitions, sign and vote on governance changes, stake on resolutions and disputes, signal Heavy-Node readiness for upgrades — all programmatically, all gated by tier and HMAC. Agents become first-class participants in the decentralized intelligence economy.
  • Geocoding & Proximity Scans — Resolve place names to coordinates, then scan all layers within a radius for a complete proximity digest.
  • News & GDELT Near Location — Pull GDELT conflict events and aggregated news articles near any coordinate for regional situational awareness.
  • Alert Delivery — Send branded intelligence briefs, warnings, and threat notifications to Discord webhooks and Telegram channels.
  • Intelligence Reports — Generate structured reports with summary stats, top military flights, correlations, earthquake activity, SIGINT counts, and pin inventories.
  • Auditable — Every channel call is logged; the operator can introspect what the agent has done.

Connect an agent: Open the AI Intel panel in the left sidebar, click Connect Agent, and copy the HMAC secret. From there, point any compatible agent at the channel — for OpenClaw, import ShadowBrokerClient from openclaw-skills/shadowbroker/sb_query.py (see SKILL.md for examples); for any other agent, use the same HMAC contract documented above (timestamp + nonce + body digest, tier-gated). Discovery: GET /api/ai/tools and GET /api/ai/capabilities. The channel is the protocol, not the agent.

Docker Compose + remote agents: The dashboard UI talks to the backend over Docker's private bridge (trusted automatically). An OpenClaw agent running on the host (outside the container) hits http://localhost:8000 from the Docker gateway IP — HMAC is required there. In AI Intel → Connect Agent, click Bootstrap then Reveal, copy SHADOWBROKER_HMAC_SECRET into your agent env, and restart the backend once so data/openclaw.env on the backend_data volume is loaded. Smoke-test with:

export SHADOWBROKER_URL=http://127.0.0.1:8000
export SHADOWBROKER_HMAC_SECRET=<from Connect Agent modal>
python openclaw-skills/shadowbroker/verify_hmac.py

Use the backend port (:8000), not the Next.js dashboard port (:3000). Hand-rolled signers must hash the exact POST bytes: json.dumps(payload, separators=(",", ":"), sort_keys=True).

⏱️ Time Machine — Snapshot Playback (NEW in v0.9.7)

A media-style transport for the entire telemetry feed. Treat the live map as a recording that can be scrubbed, paused, and replayed.

  • Live ↔ Snapshot Toggle — Switching to snapshot mode pauses the global polling loop instantly; switching back to Live invalidates ETags and force-refreshes both fast and slow tiers so the dashboard catches up without a stale-frame flicker.
  • Hourly Index — Every captured snapshot is indexed by its hour bucket with count, latest_id, latest_ts, and the full snapshot_ids list. Jump to any captured timestamp directly from the timeline scrubber.
  • Frame Interpolation — Moving entities (aircraft, ships, satellites, military flights) interpolate smoothly between recorded frames during playback so motion stays continuous even when snapshots are sparse.
  • Variable Playback Speed — Step, play, fast-forward, and rewind through saved telemetry at adjustable speed.
  • Profile-Aware — Each snapshot records the privacy profile that was active when it was captured, so playback is faithful to what an operator on that profile would have seen.
  • Operator-Side, Not Server-Side — Snapshots are stored locally in the backend; no third party ever sees the playback timeline.

📦 API Keys Panel — Path-First, Read-Only (NEW in v0.9.7)

Settings → API Keys is now a read-only registry. Key values never reach the browser process — not even an obfuscated prefix. The panel surfaces:

  • The absolute path to the backend .env file as resolved by Path(__file__).resolve() — works on every OS, every drive, every install location (Linux /home/..., macOS /Users/..., Windows on any drive, Docker containers, cloud VMs).
  • [exists] / [will be created on first save] / [NOT WRITABLE — edit by hand] indicators on the path itself.
  • The path to the .env.example template so users can copy it and fill in their keys.
  • A binary CONFIGURED / NOT CONFIGURED badge per key, plus a copy-pastable env line (e.g. OPENSKY_CLIENT_ID=YOUR_VALUE) the user can drop into the file by hand.

OpenSky API credentials are now a critical-warn environment requirement: the startup environment check flags missing OpenSky OAuth2 credentials with a strong warning, and the changelog modal links directly to the free registration page. Without them, the flights layer falls back to ADS-B-only coverage with significant gaps in Africa, Asia, and Latin America.


🏗️ Architecture

ShadowBroker v0.9.7 is composed of three vertically-stacked planes — the Operator UI, the Backend Service Plane, and the Decentralized Layer (InfoNet) — plus two cross-cutting bridges (the Time Machine and the Agentic AI Channel, which is the protocol that OpenClaw and any other compatible agent connects through) and a Privacy Core Rust crate that backstops both the legacy mesh and the future shielded coin / DEX work.

╔═════════════════════════════════════════════════════════════════════════════╗
║                       OPERATOR UI  (Next.js + MapLibre)                     ║
║                                                                             ║
║  ┌────────────────┐  ┌──────────┐  ┌────────────────┐  ┌────────────────┐   ║
║  │ MapLibre GL    │  │ NewsFeed │  │ Sovereign Shell│  │   Mesh Chat    │   ║
║  │  WebGL render  │  │  SIGINT  │  │  Petitions /   │  │  + Mesh Term.  │   ║
║  │  + clusters    │  │  GDELT   │  │  Upgrades /    │  │  (Infonet /    │   ║
║  │                │  │  Threat  │  │  Disputes /    │  │   Mesh /       │   ║
║  │                │  │          │  │  Gates /       │  │   Dead Drop)   │   ║
║  │                │  │          │  │  Bootstrap /   │  │                │   ║
║  │                │  │          │  │  Function Keys │  │                │   ║
║  └──────┬─────────┘  └────┬─────┘  └────────┬───────┘  └────────┬───────┘   ║
║         │                 │                 │                   │           ║
║  ┌──────┴─────────────────┴─────────────────┴───────────────────┴───────┐   ║
║  │  Time Machine ◀── snapshot playback ── snapshotMode toggle ──▶ Live │   ║
║  │  hourly index │ frame interpolation │ profile-aware │ per-tier ETag  │   ║
║  └──────────────────────────────────┬───────────────────────────────────┘   ║
║                                     │ REST  +  /api/[...path] proxy         ║
╠═════════════════════════════════════╪═══════════════════════════════════════╣
║                       BACKEND SERVICE PLANE  (FastAPI)                      ║
║                                     │                                       ║
║  ┌──────────────────────────────────┴────────────────────────────────────┐  ║
║  │              Data Fetcher  (APScheduler — fast / slow tiers)          │  ║
║  │                                                                       │  ║
║  │  ┌───────────┬───────────┬───────────┬───────────┬───────────┐        │  ║
║  │  │  OpenSky* │ adsb.lol  │ CelesTrak │   USGS    │   AIS WS  │        │  ║
║  │  │  Flights  │ Military  │   Sats    │  Quakes   │   Ships   │        │  ║
║  │  ├───────────┼───────────┼───────────┼───────────┼───────────┤        │  ║
║  │  │  Carrier  │   GDELT   │ CCTV (12) │ DeepState │   NASA    │        │  ║
║  │  │  Tracker  │ Conflict  │  Cameras  │ Frontline │   FIRMS   │        │  ║
║  │  ├───────────┼───────────┼───────────┼───────────┼───────────┤        │  ║
║  │  │   GPS     │  KiwiSDR  │  Shodan   │  Amtrak   │  SatNOGS  │        │  ║
║  │  │  Jamming  │   Radios  │  Devices  │ DigiTraf  │  TinyGS   │        │  ║
║  │  ├───────────┼───────────┼───────────┼───────────┼───────────┤        │  ║
║  │  │ Volcanoes │  Weather  │  Fishing  │ Mil Bases │   IODA    │        │  ║
║  │  │  Air Qual │  Alerts   │  Activity │ PwrPlants │  Outages  │        │  ║
║  │  ├───────────┼───────────┼───────────┼───────────┼───────────┤        │  ║
║  │  │ Sentinel  │   MODIS   │   VIIRS   │   Data    │ Meshtastic│        │  ║
║  │  │  Hub/STAC │   Terra   │ Nightlts  │  Centers  │   APRS    │        │  ║
║  │  ├───────────┴───────────┴───────────┴───────────┴───────────┤        │  ║
║  │  │  SAR (NEW v0.9.7)                                         │        │  ║
║  │  │   Mode A: ASF Search catalog (free, no account)           │        │  ║
║  │  │   Mode B: NASA OPERA / Copernicus EGMS / GFM / EMS /      │        │  ║
║  │  │           UNOSAT  ground-change anomalies (opt-in)        │        │  ║
║  │  └───────────────────────────────────────────────────────────┘        │  ║
║  │   * OpenSky: REQUIRED for global flight coverage                      │  ║
║  └───────────────────────────────────────────────────────────────────────┘  ║
║                                     │                                       ║
║  ┌──────────────────────────────────┴────────────────────────────────────┐  ║
║  │                   Snapshot Store  (Time Machine source)               │  ║
║  │   Hourly index  │  per-snapshot layer manifest  │  profile metadata   │  ║
║  └───────────────────────────────────────────────────────────────────────┘  ║
║                                                                             ║
║  ┌───────────────────────────────────────────────────────────────────────┐  ║
║  │   Agentic AI Channel  (HMAC-SHA256, tier-gated  —  OpenClaw + others) │  ║
║  │                                                                       │  ║
║  │   POST /api/ai/channel/command   →  one tool call                     │  ║
║  │   POST /api/ai/channel/batch     →  up to 20 concurrent tool calls    │  ║
║  │                                                                       │  ║
║  │   Tier:   restricted (read-only)   │   full (read + write + inject)   │  ║
║  │   Auth:   X-SB-Timestamp + X-SB-Nonce + X-SB-Signature                │  ║
║  │   Sig  =  HMAC-SHA256(secret, METHOD|path|ts|nonce|sha256(body))      │  ║
║  └───────────────────────────────────────────────────────────────────────┘  ║
╠═════════════════════════════════════════════════════════════════════════════╣
║                  DECENTRALIZED LAYER  (InfoNet Testnet — signed events)     ║
║                                                                             ║
║  ┌────────────────────────────┐    ┌──────────────────────────────────┐     ║
║  │    Mesh Hashchain          │    │   Sovereign Shell Governance     │     ║
║  │                            │    │                                  │     ║
║  │  Ed25519 signed events     │    │  Petitions  (DSL: UPDATE_PARAM,  │     ║
║  │  Public-key binding        │    │              ENABLE_FEATURE …)   │     ║
║  │  Replay / sequence guard   │    │  Upgrade-Hash voting (80% / 40%  │     ║
║  │  Two-tier finality         │    │             quorum / 67% Heavy)  │     ║
║  │   ├ Tier 1 (CRDT, fast)    │    │  Resolution & Dispute markets    │     ║
║  │   └ Tier 2 (epoch finality)│    │  Gate suspend / shutdown / appeal│     ║
║  │  Identity rotation         │    │  Bootstrap eligible-node-1-vote  │     ║
║  │  Constitutional invariants │    │   (Argon2id PoW, Heavy-Node only)│     ║
║  │  (MappingProxyType)        │    │  Function Keys (5 of 6 pieces)   │     ║
║  └─────────────┬──────────────┘    └─────────────┬────────────────────┘     ║
║                │                                 │                          ║
║                └──────────────┬──────────────────┘                          ║
║                               │                                             ║
║  ┌────────────────────────────┴──────────────────────────────────────┐      ║
║  │            Wormhole / InfoNet Relay  (transport layer)            │      ║
║  │   Gate personas │ canonical signing │ Dead Drop epoch mailboxes   │      ║
║  └───────────────────────────────────────────────────────────────────┘      ║
╠═════════════════════════════════════════════════════════════════════════════╣
║              PRIVACY CORE  (Rust crate — locked Protocol contracts)         ║
║                                                                             ║
║   privacy-core/  ─►  Argon2id │ Ed25519/X25519 │ AESGCM │ HKDF              ║
║                      Ring sigs* │ Stealth addrs* │ Pedersen* │ Bulletproofs*║
║                      Blind-sig issuance* (RSA / BBS+ / U-Prove / Idemix)    ║
║                                                                             ║
║   * = locked Protocol contract; cryptographic primitive lands Sprint 11+    ║
╚═════════════════════════════════════════════════════════════════════════════╝

   Distribution
   ────────────
     GitHub (primary):  ghcr.io/bigbodycobain/shadowbroker-{backend,frontend}
     GitLab (mirror):   registry.gitlab.com/bigbodycobain/shadowbroker/{backend,frontend}
     Multi-arch:        linux/amd64  +  linux/arm64  (Raspberry Pi 5 supported)
     Desktop:           Tauri shell  →  packaged backend-runtime  +  Next.js frontend

📊 Data Sources & APIs
Source Data Update Frequency API Key Required
OpenSky Network Commercial & private flights ~60s Yes
adsb.lol Military aircraft ~60s No
aisstream.io AIS vessel positions Real-time WebSocket Yes
CelesTrak Satellite orbital positions (TLE + SGP4) ~60s No
USGS Earthquake Global seismic events ~60s No
GDELT Project Global conflict events ~6h No
DeepState Map Ukraine frontline ~30min No
Shodan Internet-connected device search On-demand Yes
OpenSanctions OFAC SDN sanctions index (recon + entity graph) 24h cache No
abuse.ch Feodo + URLhaus Malware C2 / distribution URLs ~5min (opt-in layer) No
CISA KEV Known exploited CVEs ~5min (opt-in layer) No
ip-api.com IP geolocation (recon, entity graph) On-demand No
Google Public DNS DNS-over-HTTPS lookups (recon) On-demand No
RDAP.org Domain registration data (recon) On-demand No
crt.sh Certificate transparency (recon) On-demand No
bgpview.io BGP/ASN routing (recon) On-demand No
TeleGeography (static) Submarine cable routes Static No
ASFINAG Austria motorway webcams ~10min No
Amtrak US train positions ~60s No
DigiTraffic European rail positions ~60s No
Global Fishing Watch Fishing vessel activity events ~1hr Yes (GFW_API_TOKEN)
Telegram public previews War/OSINT channel posts (telegram_osint) ~1hr No (optional TELEGRAM_OSINT_CHANNELS)
Transport for London, NYC DOT, TxDOT CCTV cameras (UK, US) ~10min No
Caltrans, WSDOT, GDOT, IDOT, MDOT CCTV cameras (5 US states) ~10min No
Spain DGT, Madrid City CCTV cameras (Spain) ~10min No
Singapore LTA Singapore traffic cameras ~10min Yes
Windy Webcams Global webcams ~10min No
SatNOGS Amateur satellite ground stations ~30min No
TinyGS LoRa satellite ground stations ~30min No
Meshtastic MQTT Mesh radio node positions Real-time No
APRS-IS Amateur radio positions Real-time TCP No
KiwiSDR Public SDR receiver locations ~30min No
OpenMHZ Police/fire scanner feeds Real-time No
Smithsonian GVP Holocene volcanoes worldwide Static (cached) No
OpenAQ Air quality PM2.5 stations ~120s No
NOAA / NWS Severe weather alerts & polygons ~120s No
WRI Global Power Plant DB 35,000+ power plants Static (cached) No
Military base datasets Global military installations Static (cached) No
NASA FIRMS NOAA-20 VIIRS fire/thermal hotspots ~120s No
NOAA SWPC Space weather Kp index & solar events ~120s No
IODA (Georgia Tech) Regional internet outage alerts ~120s No
DC Map (GitHub) Global data center locations Static (cached 7d) No
NASA GIBS MODIS Terra daily satellite imagery Daily (24-48h delay) No
Esri World Imagery High-res satellite basemap Static (periodically updated) No
MS Planetary Computer Sentinel-2 L2A scenes (right-click) On-demand No
Copernicus CDSE Sentinel Hub imagery (Process API) On-demand Yes (free)
VIIRS Nightlights Night-time light change detection Static No
RestCountries Country profile data On-demand (cached 24h) No
Wikidata SPARQL Head of state data On-demand (cached 24h) No
Wikipedia API Location summaries & aircraft images On-demand (cached) No
OSM Nominatim Place name geocoding (LOCATE bar) On-demand No
CARTO Basemaps Dark map tiles Continuous No

Outbound privacy & audit (#348–#366): Each self-hosted install uses its own backend IP and per-install User-Agent handle. See docs/OUTBOUND_DATA.md for what contacts third parties, opt-in/env controls, and accepted tradeoffs (CCTV Referer, basemap CDN, LiveUAMap, etc.).


🚀 Getting Started

🐳 Docker Setup (Recommended for Self-Hosting)

The repo includes a docker-compose.yml that pulls pre-built images from GitHub Container Registry.

git clone https://github.com/BigBodyCobain/Shadowbroker.git
cd Shadowbroker
# Add your API keys in a repo-root .env file (optional — see Environment Variables below)
docker compose pull
docker compose up -d

Open http://localhost:3000 to view the dashboard.

Deploying publicly or on a LAN? No configuration needed for most setups. The frontend proxies all API calls through the Next.js server to BACKEND_URL, which defaults to http://backend:8000 (Docker internal networking). Host port 8000 is only published for local API/debug access (127.0.0.1:8000 in docker-compose.yml). If it conflicts with another service, set BACKEND_PORT=8001 in .env; leave BACKEND_URL as http://backend:8000 because that is the Docker-internal port.

Running the backend outside Docker (cd backend && python main.py): the dev server binds loopback only (127.0.0.1:8000) so other machines on your LAN cannot hit admin/local-trust routes with an empty ADMIN_KEY. Set SHADOWBROKER_DEV_BIND_ALL=true in .env only when you deliberately need 0.0.0.0 and use a strong ADMIN_KEY for any non-local callers. The backend memory cap is controlled by BACKEND_MEMORY_LIMIT and defaults to 4G. If Docker reports OOM events, the backend will restart and slow layers can look empty until they repopulate.

If your backend runs on a different host or port, set BACKEND_URL at runtime — no rebuild required:

# Linux / macOS
BACKEND_URL=http://myserver.com:9096 docker compose up -d

# Podman (via compose.sh wrapper)
BACKEND_URL=http://192.168.1.50:9096 ./compose.sh up -d

# Windows (PowerShell)
$env:BACKEND_URL="http://myserver.com:9096"; docker compose up -d

# Or add to a .env file next to docker-compose.yml:
# BACKEND_URL=http://myserver.com:9096

Podman users: Do not pass the GitHub URL to podman compose pull; clone the repo first, cd Shadowbroker, then run compose from that folder. podman compose also requires a Compose provider. If Podman reports looking up compose provider failed, install one:

# Linux / macOS / WSL
python3 -m pip install --user podman-compose
podman-compose pull
podman-compose up -d
# Windows PowerShell
py -m pip install --<

(README truncated)

View on GitHub

Recent activity

commits and pull requests

Discussions

all 27

Releases and announcements

18 total
  1. ShadowBroker v0.9.83v0.9.83Jun 15, 20261.6K downloads

    ## Summary - **Gate messaging on the hashchain** — MLS-encrypted gate rooms, `gate_message` events on private Infonet chains, swarm push/pull replication; only gate members decrypt - **DM protocols live** — short wormhole address (out-of-band), contact request/approve flow, ratchet-encrypted DMs over Tor/wormhole; fleet-tested across onion participants - **Infonet transport hardening** — Tor/SOCKS readiness fixes, terminal session teardown on exit, clearer node status vs stale ARTI WARMING / sync backoff - **v0.9.83 UI** — version decal and what's-new modal covering Infonet gate + DM release notes ## Upgrade paths | Install type | Path to v0.9.83 | |---|---| | **Desktop v0.9.82+** | One-click **Update** (signed Tauri `latest.json` + minisign) | | **ZIP / source updater** | Auto-update via `SHA256SUMS.txt` integrity chain | | **Desktop v0.9.81** | One manual MSI install to v0.9.82 first if needed, then one-click to v0.9.83 | | **Desktop v0.9.79 / v0.9.8** | Manual MSI hop to v0.9.81+ first (signing key reset at v0.9.81), then auto-update | ## Artifacts | Asset | SHA-256 | |---|---| | `ShadowBroker_v0.9.83.zip` | `53f56631731ad3cdc7be68df09bedd6570ed91ecda6fa

  2. ShadowBroker v0.9.82v0.9.82Jun 9, 2026322 downloads

    ## Summary - **Telegram OSINT map layer** — hourly public channel scrape, risk scoring, metro-anchor geocoding, inline media popups - **Osiris-derived intel ports** — Recon toolkit, SCM supply-chain overlay, entity graph, malware C2 + CISA KEV feeds, submarine cables - **OpenClaw agent parity** — `search_telemetry`, slow-tier slices, and new `osint_lookup` / `entity_expand` / `osint_sweep` commands cover the same layers operators see on the map - **GFW fishing layer** in Settings; map UX fixes for Telegram pin clickability above threat overlays ## Upgrade paths | Install type | Path to v0.9.82 | |---|---| | **Desktop v0.9.81+** | One-click **Update** (signed Tauri `latest.json` + minisign) | | **ZIP / source updater** | Auto-update via `SHA256SUMS.txt` integrity chain | | **Desktop v0.9.79 / v0.9.8** | One manual MSI install first (signing key reset at v0.9.81), then auto-update works | ## Artifacts | Asset | SHA-256 | |---|---| | `ShadowBroker_v0.9.82.zip` | `202ab043465741dcc06de57c19ec8314904332f8e818b891d7174655719d084c` | | `ShadowBroker_0.9.82_x64-setup.exe` | `0eb9f2bda02ab691b39687641abc97e6bfb507b42f48de21970ad7dfb4ea15fc` | | `ShadowBroker_0.9.82_x64_en-US.msi` | `ce

  3. ShadowBroker v0.9.81v0.9.81May 24, 2026703 downloads

    ShadowBroker v0.9.81 establishes signed auto-update from this version forward and fixes the admin_session_required race that made the in-app Update button error out for everyone on v0.9.79 and v0.9.8. Highlights - **Signed auto-update finally works.** Every prior release (v0.9.79, v0.9.8) shipped without latest.json or .sig signatures because the matching private key for the embedded pubkey was lost. v0.9.81 rotates to a fresh keypair and ships signed installers + a signed latest.json. From v0.9.81 onward, every release is a one-click in-app upgrade. - **Fixes the "admin_session_required" race in the Update button.** Desktop installs now correctly detect Tauri at React-init time and default the update action to manual_download, so a click on Update opens the GitHub release page in a browser instead of POSTing to /api/system/update and throwing the cryptic admin_session error. - Carries forward everything from v0.9.8: cumulative fuel/CO2 per flight, AIS resilience (outage banner + AISHub fallback), UAP cutoff repair, GPS jamming threshold tuning, per-flight source attribution, cross-node DM mailbox replication, and the Infonet HTTP 429 retry fix. - Carries the v0.9.8 desktop-build

  4. ShadowBroker v0.9.8v0.9.8May 23, 202640 downloads

    ShadowBroker v0.9.8 ships cumulative fuel/CO2 tracking per flight, AIS maritime resilience with an upstream-outage banner and a slow REST fallback when AISStream is offline, and repairs to two long-broken data layers (UAP sightings and GPS jamming detection). Highlights - Cumulative fuel & CO2 per flight — the aircraft tooltip now shows how much fuel each plane has actually burned in the air, not just the per-hour rate. Running totals accumulate from first observation, reset on a 15-minute gap between sightings (treated as a new flight), and survive trail-rendering cache pruning so cumulative counters never reset mid-flight. - AIS maritime resilience — when stream.aisstream.io is unreachable (as it has been upstream since 2026-05-23), the ships layer no longer goes silently empty. A dismissible amber banner explains the outage end-to-end, and an opt-in AISHub REST fallback polls every 20 minutes when the WebSocket primary is disconnected so the layer stays populated. Configure via the AISHUB_USERNAME env var. - Data-layer repair — UAP sightings no longer serve 3-year-old NUFORC reports via the Hugging Face fallback (60-day cutoff applied to the fallback path too, scheduler moved

  5. ShadowBroker v0.9.79v0.9.79May 12, 20261.2K downloads

    ShadowBroker v0.9.79 refreshes the current desktop/source packages with the latest Infonet and Secure Messages hardening. Highlights - Improves Infonet bootstrap recovery by prioritizing bundled/seed peers and shortening stale seed cooldowns. - Allows local-operator DM invite imports without forcing a full admin session prompt. - Reworks Secure Messages public addresses so users copy the full signed invite while the UI shows readable address details. - Adds contact-request approve/deny handling and safer sealed-send behavior while the private delivery route is still connecting. Notes - This is a v0.9.79 package refresh; the version number is unchanged. - Windows installers are unsigned public builds, so SmartScreen may warn until code signing is added. - Assets were rebuilt from tag v0.9.79 and include SHA256SUMS.txt plus release-manifest.json.

Commits per week

last 52 weeks
1220Week of 2025-08-02: 0 commitsWeek of 2025-08-09: 0 commitsWeek of 2025-08-16: 0 commitsWeek of 2025-08-23: 0 commitsWeek of 2025-08-30: 0 commitsWeek of 2025-09-06: 0 commitsWeek of 2025-09-13: 0 commitsWeek of 2025-09-20: 0 commitsWeek of 2025-09-27: 0 commitsWeek of 2025-10-04: 0 commitsWeek of 2025-10-11: 0 commitsWeek of 2025-10-18: 0 commitsWeek of 2025-10-25: 0 commitsWeek of 2025-11-01: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 5 commitsWeek of 2026-03-08: 122 commitsWeek of 2026-03-15: 14 commitsWeek of 2026-03-22: 65 commitsWeek of 2026-03-29: 4 commitsWeek of 2026-04-05: 0 commitsWeek of 2026-04-12: 0 commitsWeek of 2026-04-19: 0 commitsWeek of 2026-04-26: 27 commitsWeek of 2026-05-03: 14 commitsWeek of 2026-05-10: 3 commitsWeek of 2026-05-17: 53 commitsWeek of 2026-05-24: 14 commitsWeek of 2026-05-31: 14 commitsWeek of 2026-06-07: 20 commitsWeek of 2026-06-14: 17 commitsWeek of 2026-06-21: 8 commitsWeek of 2026-06-28: 6 commitsWeek of 2026-07-05: 3 commitsWeek of 2026-07-12: 0 commitsWeek of 2026-07-19: 0 commitsWeek of 2026-07-26: 0 commitsAug 2, 2025Jul 26, 2026
389 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 0 commitsSun 1:00 — 2 commitsSun 2:00 — 1 commitsSun 3:00 — 0 commitsSun 4:00 — 0 commitsSun 5:00 — 2 commitsSun 6:00 — 0 commitsSun 7:00 — 0 commitsSun 8:00 — 1 commitsSun 9:00 — 1 commitsSun 10:00 — 0 commitsSun 11:00 — 3 commitsSun 12:00 — 4 commitsSun 13:00 — 2 commitsSun 14:00 — 6 commitsSun 15:00 — 8 commitsSun 16:00 — 4 commitsSun 17:00 — 1 commitsSun 18:00 — 1 commitsSun 19:00 — 1 commitsSun 20:00 — 1 commitsSun 21:00 — 5 commitsSun 22:00 — 1 commitsSun 23:00 — 2 commitsMon 0:00 — 4 commitsMon 1:00 — 4 commitsMon 2:00 — 5 commitsMon 3:00 — 0 commitsMon 4:00 — 1 commitsMon 5:00 — 3 commitsMon 6:00 — 3 commitsMon 7:00 — 3 commitsMon 8:00 — 3 commitsMon 9:00 — 2 commitsMon 10:00 — 0 commitsMon 11:00 — 2 commitsMon 12:00 — 3 commitsMon 13:00 — 2 commitsMon 14:00 — 2 commitsMon 15:00 — 1 commitsMon 16:00 — 2 commitsMon 17:00 — 1 commitsMon 18:00 — 4 commitsMon 19:00 — 10 commitsMon 20:00 — 2 commitsMon 21:00 — 4 commitsMon 22:00 — 2 commitsMon 23:00 — 3 commitsTue 0:00 — 3 commitsTue 1:00 — 5 commitsTue 2:00 — 1 commitsTue 3:00 — 0 commitsTue 4:00 — 3 commitsTue 5:00 — 0 commitsTue 6:00 — 0 commitsTue 7:00 — 0 commitsTue 8:00 — 0 commitsTue 9:00 — 1 commitsTue 10:00 — 1 commitsTue 11:00 — 1 commitsTue 12:00 — 2 commitsTue 13:00 — 1 commitsTue 14:00 — 0 commitsTue 15:00 — 3 commitsTue 16:00 — 0 commitsTue 17:00 — 1 commitsTue 18:00 — 1 commitsTue 19:00 — 0 commitsTue 20:00 — 5 commitsTue 21:00 — 3 commitsTue 22:00 — 0 commitsTue 23:00 — 0 commitsWed 0:00 — 1 commitsWed 1:00 — 2 commitsWed 2:00 — 1 commitsWed 3:00 — 0 commitsWed 4:00 — 0 commitsWed 5:00 — 0 commitsWed 6:00 — 2 commitsWed 7:00 — 0 commitsWed 8:00 — 0 commitsWed 9:00 — 4 commitsWed 10:00 — 0 commitsWed 11:00 — 1 commitsWed 12:00 — 1 commitsWed 13:00 — 3 commitsWed 14:00 — 9 commitsWed 15:00 — 1 commitsWed 16:00 — 1 commitsWed 17:00 — 0 commitsWed 18:00 — 5 commitsWed 19:00 — 1 commitsWed 20:00 — 3 commitsWed 21:00 — 1 commitsWed 22:00 — 6 commitsWed 23:00 — 4 commitsThu 0:00 — 1 commitsThu 1:00 — 7 commitsThu 2:00 — 1 commitsThu 3:00 — 1 commitsThu 4:00 — 1 commitsThu 5:00 — 1 commitsThu 6:00 — 8 commitsThu 7:00 — 2 commitsThu 8:00 — 3 commitsThu 9:00 — 7 commitsThu 10:00 — 13 commitsThu 11:00 — 5 commitsThu 12:00 — 3 commitsThu 13:00 — 1 commitsThu 14:00 — 0 commitsThu 15:00 — 5 commitsThu 16:00 — 3 commitsThu 17:00 — 5 commitsThu 18:00 — 1 commitsThu 19:00 — 0 commitsThu 20:00 — 8 commitsThu 21:00 — 0 commitsThu 22:00 — 3 commitsThu 23:00 — 1 commitsFri 0:00 — 4 commitsFri 1:00 — 0 commitsFri 2:00 — 2 commitsFri 3:00 — 1 commitsFri 4:00 — 0 commitsFri 5:00 — 0 commitsFri 6:00 — 0 commitsFri 7:00 — 1 commitsFri 8:00 — 1 commitsFri 9:00 — 2 commitsFri 10:00 — 1 commitsFri 11:00 — 2 commitsFri 12:00 — 2 commitsFri 13:00 — 3 commitsFri 14:00 — 2 commitsFri 15:00 — 0 commitsFri 16:00 — 4 commitsFri 17:00 — 4 commitsFri 18:00 — 5 commitsFri 19:00 — 4 commitsFri 20:00 — 5 commitsFri 21:00 — 2 commitsFri 22:00 — 4 commitsFri 23:00 — 6 commitsSat 0:00 — 3 commitsSat 1:00 — 0 commitsSat 2:00 — 2 commitsSat 3:00 — 0 commitsSat 4:00 — 0 commitsSat 5:00 — 7 commitsSat 6:00 — 2 commitsSat 7:00 — 6 commitsSat 8:00 — 9 commitsSat 9:00 — 2 commitsSat 10:00 — 1 commitsSat 11:00 — 0 commitsSat 12:00 — 0 commitsSat 13:00 — 2 commitsSat 14:00 — 6 commitsSat 15:00 — 2 commitsSat 16:00 — 4 commitsSat 17:00 — 1 commitsSat 18:00 — 1 commitsSat 19:00 — 12 commitsSat 20:00 — 5 commitsSat 21:00 — 3 commitsSat 22:00 — 0 commitsSat 23:00 — 1 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.

Who is committing

last 52 weeks
Maintainer commits263 (56%)
Community commits204 (44%)

467 commits in total over the last year.

DateListRankStars gained
May 18, 2026daily#21+45