Find your next open-source project

Search by name, purpose, or keyword — or paste a GitHub repository URL

BigBodyCobain/Shadowbroker

Data

Self-hosted OSINT dashboard aggregating public flight, maritime, satellite, CCTV and hazard feeds onto one real-time map.

11,490
1,830
Python
AGPL-3.0
8 months old

What it does

ShadowBroker is a self-hosted geospatial intelligence dashboard that pulls public telemetry from more than 60 sources into a single MapLibre map. It covers commercial, private and military aircraft, AIS vessels, satellite orbits, conflict events, live traffic cameras, earthquakes, wildfires, internet outages and Shodan device searches. A right-click on any point opens a country dossier with the latest Sentinel-2 image.

The stack is Next.js plus MapLibre GL on the frontend and FastAPI on the backend. Optional pieces include a recon toolkit for IP/DNS/WHOIS/sanctions/BGP lookups, an HMAC-signed command channel so an external AI agent (OpenClaw's reference skill ships in openclaw-skills/shadowbroker/) can query layers and act on the map, snapshot playback, and an experimental InfoNet mesh for obfuscated messaging. The README is explicit that the mesh is a testnet with no privacy guarantee and that several privacy primitives are not yet wired.

Quick start

Docker is the recommended path. Clone the repo and launch the pre-built images:

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

Then open http://localhost:3000 (requires Docker Desktop or Docker Engine). Add API keys to a repo-root .env before or after startup. OpenSky OAuth2 credentials are flagged as a critical requirement for flight telemetry; AIS_API_KEY from aisstream.io is needed for the ships layer, and Shodan, Sentinel Hub and LTA keys are optional. A keyless single-file launcher (start.bat on Windows, start.sh on macOS/Linux) is offered through the releases page for users who prefer not to use Docker.

For development: Python 3.10–3.12 (3.13+ may break dependencies), Node 18+, then cd backend && python -m venv venv && pip install ., fill backend/.env, cd ../frontend && npm ci, and run npm run dev from frontend to start both servers.

Operational constraints

  • Self-hosting means outbound calls to every public provider you enable; some feeds are keyless, but OpenSky and aisstream.io require free accounts. Data usage remains bound by each provider's terms.
  • Exposing the dashboard beyond localhost requires care. LAN mode (BIND=0.0.0.0 with SHADOWBROKER_LAN_MODE=1) needs a strong ADMIN_KEY; binding to 0.0.0.0 without it hands full operator control to anyone who can reach port 3000. The backend dev server binds loopback only by default.
  • The InfoNet mesh, Dead Drop DMs and Sovereign Shell governance are experimental: RF lanes are public, gate chat is readable by anyone holding the gate key, and the README says plainly not to transmit anything sensitive.
  • The project is AGPL-3.0 and the README describes it as for educational and personal research use; carrier positions are OSINT estimates, not confirmed locations.

HotRepo's take

The repo was created in March 2026 and its first Show HN reached 312 points and 123 comments, where discussion focused on tile-vs-GeoJSON rendering trade-offs and one commenter noted leaked .env files in the initial release zip. The star history available here shows roughly 6.8k in mid-May, rising to about 8k by the 19th and 11.5k in a November 9th-place Python daily snapshot; these are sparse snapshots, so they show momentum only at those dates, not a continuous curve. The interesting shift over time is scope: what started as a feed aggregator now advertises an agent command protocol and a governance economy, which raises both the audit surface and the maturity bar far above a map dashboard.

Project source and documentation

Written by AI from the project's README, updated . The project's own docs are the source of truth.

Hacker News

Show HN: I built a real-time OSINT dashboard pulling 15 live global feeds
▲ 312 · 123 comments · March 8, 2026