Global Threat Intercept β Real-Time Geospatial Intelligence Platform
ShadowBroker is a real-time, multi-domain OSINT dashboard that aggregates live data from dozens of open-source intelligence feeds and renders them on a unified dark-ops map interface. It tracks aircraft, ships, satellites, earthquakes, conflict zones, CCTV networks, GPS jamming, and breaking geopolitical events β all updating in real time.
Built with Next.js, MapLibre GL, FastAPI, and Python, it's designed for analysts, researchers, and enthusiasts who want a single-pane-of-glass view of global activity.
- Track private jets of billionaires
- Monitor satellites passing overhead and see high-resolution satellite imagery
- Nose around local emergency scanners
- Watch naval traffic worldwide
- Detect GPS jamming zones
- Follow earthquakes and disasters in real time
Windows portable version. Download the .zip from releases. The .exe is in 'dist'.
- 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
- 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
- Automated GDELT news scraping for carrier movement intelligence
- 50+ geographic region-to-coordinate mappings
- Disk-cached positions, auto-updates at 00:00 & 12:00 UTC
- Cruise & Passenger Ships β Dedicated layer for cruise liners and ferries
- Clustered Display β Ships cluster at low zoom with count labels, decluster on zoom-in
- 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)
- Global Incidents β GDELT-powered conflict event aggregation (last 8 hours, ~1,000 events)
- Ukraine Frontline β Live warfront GeoJSON from DeepState Map
- SIGINT/RISINT News Feed β Real-time RSS aggregation from multiple intelligence-focused sources
- Region Dossier β Right-click anywhere on the map for:
- Country profile (population, capital, languages, currencies, area)
- Head of state & government type (Wikidata SPARQL)
- Local Wikipedia summary with thumbnail
- 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)
- SATELLITE Style Preset β Quick-toggle high-res imagery via the STYLE button (DEFAULT β SATELLITE β FLIR β NVG β CRT)
- 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
- CCTV Mesh β 2,000+ live traffic cameras from:
- π¬π§ Transport for London JamCams
- πΊπΈ Austin, TX TxDOT
- πΊπΈ NYC DOT
- πΈπ¬ Singapore LTA
- Custom URL ingestion
- 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
- 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 for monitoring communications
- Earthquakes (24h) β USGS real-time earthquake feed with magnitude-scaled markers
- 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
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β FRONTEND (Next.js) β
β β
β βββββββββββββββ ββββββββββββ βββββββββββββββββ β
β β MapLibre GL β β NewsFeed β β Control Panelsβ β
β β 2D WebGL β β SIGINT β β Layers/Filtersβ β
β β Map Render β β Intel β β Markets/Radio β β
β ββββββββ¬βββββββ ββββββ¬ββββββ βββββββββ¬ββββββββ β
β ββββββββββββββββββΌβββββββββββββββββββ β
β β REST API (60s / 120s) β
ββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββ€
β BACKEND (FastAPI) β
β β β
β βββββββββββββββββββββββββΌβββββββββββββββββββββββββββ β
β β Data Fetcher (Scheduler) β β
β β β β
β β ββββββββββββ¬βββββββββββ¬βββββββββββ¬ββββββββββββ β β
β β β OpenSky β adsb.lol βCelesTrak β USGS β β β
β β β Flights β Military β Sats β Quakes β β β
β β ββββββββββββΌβββββββββββΌβββββββββββΌββββββββββββ€ β β
β β β AIS WS β Carrier β GDELT β CCTV β β β
β β β Ships β Tracker β Conflict β Cameras β β β
β β ββββββββββββΌβββββββββββΌβββββββββββΌββββββββββββ€ β β
β β β DeepStateβ RSS β Region β GPS β β β
β β β Frontlineβ Intel β Dossier β Jamming β β β
β β ββββββββββββ΄βββββββββββ΄βββββββββββ΄ββββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Source | Data | Update Frequency | API Key Required |
|---|---|---|---|
| OpenSky Network | Commercial & private flights | ~60s | Optional (anonymous limited) |
| 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 |
| Transport for London | London CCTV JamCams | ~5min | No |
| TxDOT | Austin TX traffic cameras | ~5min | No |
| NYC DOT | NYC traffic cameras | ~5min | No |
| Singapore LTA | Singapore traffic cameras | ~5min | Yes |
| 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 |
| 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 |
| KiwiSDR | Public SDR receiver locations | ~30min | No |
| OSM Nominatim | Place name geocoding (LOCATE bar) | On-demand | No |
| CARTO Basemaps | Dark map tiles | Continuous | No |
All layers are independently toggleable from the left panel:
| Layer | Default | Description |
|---|---|---|
| Commercial Flights | β ON | Airlines, cargo, GA aircraft |
| Private Flights | β ON | Non-commercial private aircraft |
| Private Jets | β ON | High-value bizjets with owner data |
| Military Flights | β ON | Military & government aircraft |
| Tracked Aircraft | β ON | Special interest watch list |
| Satellites | β ON | Orbital assets by mission type |
| Carriers / Mil / Cargo | β ON | Navy carriers, cargo ships, tankers |
| Civilian Vessels | β OFF | Yachts, fishing, recreational |
| Cruise / Passenger | β ON | Cruise ships and ferries |
| Earthquakes (24h) | β ON | USGS seismic events |
| CCTV Mesh | β OFF | Surveillance camera network |
| Ukraine Frontline | β ON | Live warfront positions |
| Global Incidents | β ON | GDELT conflict events |
| GPS Jamming | β ON | NAC-P degradation zones |
| MODIS Terra (Daily) | β OFF | NASA GIBS daily satellite imagery |
| High-Res Satellite | β OFF | Esri sub-meter satellite imagery |
| KiwiSDR Receivers | β OFF | Public SDR radio receivers |
| Day / Night Cycle | β ON | Solar terminator overlay |
The platform is optimized for handling massive real-time datasets:
- Gzip Compression β API payloads compressed ~92% (11.6 MB β 915 KB)
- ETag Caching β
304 Not Modifiedresponses skip redundant JSON parsing - Viewport Culling β Only features within the visible map bounds (+20% buffer) are rendered
- Clustered Rendering β Ships, CCTV, and earthquakes use MapLibre clustering to reduce feature count
- Debounced Viewport Updates β 300ms debounce prevents GeoJSON rebuild thrash during pan/zoom
- Position Interpolation β Smooth 10s tick animation between data refreshes
- React.memo β Heavy components wrapped to prevent unnecessary re-renders
- Coordinate Precision β Lat/lng rounded to 5 decimals (~1m) to reduce JSON size
live-risk-dashboard/
βββ backend/
β βββ main.py # FastAPI app, middleware, API routes
β βββ carrier_cache.json # Persisted carrier OSINT positions
β βββ cctv.db # SQLite CCTV camera database
β βββ services/
β βββ data_fetcher.py # Core scheduler β fetches all data sources
β βββ ais_stream.py # AIS WebSocket client (25K+ vessels)
β βββ carrier_tracker.py # OSINT carrier position tracker
β βββ cctv_pipeline.py # Multi-source CCTV camera ingestion
β βββ geopolitics.py # GDELT + Ukraine frontline fetcher
β βββ region_dossier.py # Right-click country/city intelligence
β βββ radio_intercept.py # Scanner radio feed integration
β βββ kiwisdr_fetcher.py # KiwiSDR receiver scraper
β βββ sentinel_search.py # Sentinel-2 STAC imagery search
β βββ network_utils.py # HTTP client with curl fallback
β βββ api_settings.py # API key management
β
βββ frontend/
β βββ src/
β β βββ app/
β β β βββ page.tsx # Main dashboard β state, polling, layout
β β βββ components/
β β βββ MaplibreViewer.tsx # Core map β 2,000+ lines, all GeoJSON layers
β β βββ NewsFeed.tsx # SIGINT feed + entity detail panels
β β βββ WorldviewLeftPanel.tsx # Data layer toggles
β β βββ WorldviewRightPanel.tsx # Search + filter sidebar
β β βββ FilterPanel.tsx # Basic layer filters
β β βββ AdvancedFilterModal.tsx # Airport/country/owner filtering
β β βββ MapLegend.tsx # Dynamic legend with all icons
β β βββ MarketsPanel.tsx # Global financial markets ticker
β β βββ RadioInterceptPanel.tsx # Scanner-style radio panel
β β βββ FindLocateBar.tsx # Search/locate bar
β β βββ ChangelogModal.tsx # Version changelog popup
β β βββ SettingsPanel.tsx # App settings
β β βββ ScaleBar.tsx # Map scale indicator
β β βββ WikiImage.tsx # Wikipedia image fetcher
β β βββ ErrorBoundary.tsx # Crash recovery wrapper
β βββ package.json
# Required
AIS_API_KEY=your_aisstream_key # Maritime vessel tracking (aisstream.io)
# Optional (enhances data quality)
OPENSKY_CLIENT_ID=your_opensky_client_id # OAuth2 β higher rate limits for flight data
OPENSKY_CLIENT_SECRET=your_opensky_secret # OAuth2 β paired with Client ID above
LTA_ACCOUNT_KEY=your_lta_key # Singapore CCTV cameras| Variable | Where to set | Purpose |
|---|---|---|
NEXT_PUBLIC_API_URL |
.env next to docker-compose.yml, or shell env |
Override backend URL when deploying publicly or behind a reverse proxy. Leave unset for auto-detection. |
How auto-detection works: When NEXT_PUBLIC_API_URL is not set, the frontend
reads window.location.hostname in the browser and calls {protocol}//{hostname}:8000.
This means the dashboard works on localhost, LAN IPs, and public domains without
any configuration β as long as the backend is reachable on port 8000 of the same host.
This is an educational and research tool built entirely on publicly available, open-source intelligence (OSINT) data. No classified, restricted, or non-public data sources are used. Carrier positions are estimates based on public reporting. The military-themed UI is purely aesthetic.
Do not use this tool for any operational, military, or intelligence purpose.
This project is for educational and personal research purposes. See individual API provider terms of service for data usage restrictions.
Built with β and too many API calls

