Build a Real-Time Global Intelligence Hub on Your NAS
Build a Real-Time Global Intelligence Hub on Your NAS
The idea of watching Air Force One’s location from a home server sounds like something from a thriller. A few weeks ago I came across a project that makes exactly that kind of capability accessible to anyone running a NAS at home. ShadowBroker is an open-source intelligence platform that aggregates live feeds from more than sixty public data sources into a single interface, with built-in support for AI agent integration.
That phrase – “open source” – matters here. Every data query, every source tapped, every piece of information flowing through the system is auditable by design. This is not a black box pulling data from undisclosed feeds. Anyone can inspect the code, verify what it accesses, and understand exactly how the information moves from source to dashboard. For anyone building workflows around real-time global data, that transparency is the core appeal.
What the Platform Tracks
The platform groups its feeds into categories covering aviation, maritime, disasters, UAP (unidentified aerial phenomena), biology, signals, and infrastructure. Within each category, multiple sub-feeds operate simultaneously.
Three data sources form the backbone of the system:
ADS-B aircraft tracking – ShadowBroker taps into the OpenSky Network’s global ADS-B receiver network. This is the same data that flight-tracking platforms like Flightradar24 build on. Every aircraft broadcasting an ADS-B signal within range of a connected receiver gets picked up here: position, altitude, speed, call sign.
AIS maritime tracking – The Automatic Identification System tracks vessels at sea. MarineTraffic and similar platforms rely on this broadcast data. ShadowBroker connects to it the same way, pulling real-time positions for cargo ships, tankers, and pleasure craft that carry AIS transponders.
Fishing vessel activity – A separate layer focused specifically on commercial fishing events. This one is more specialized – useful for monitoring maritime activity patterns instead of individual vessel positions.
The sidebar in the interface lets you toggle each category or sub-feed individually. Run a tight operation focused only on aviation? Disable everything else. Want the full picture? Enable all sixty-plus sources and the dashboard becomes a dense, scrolling wall of global events.
The right-side panel handles data snapshots and playback. You can capture the current global state and review it later, or let the feed run in continuous playback mode to watch events unfold over time. Filtering options narrow the view by region or event type.
Setting Up the Data Feeds
On first login, the system prompts you through initial configuration. The OpenSky Network and AIS feeds require free API credentials – without them, those panels return no data.
For OpenSky, register at opensky-network.org and navigate to Account > API Client. The service generates a JSON file containing a ClientID and ClientSecret. Paste those into the first two configuration fields in ShadowBroker’s setup screen.
For AIS, create a free account at marinetraffic.com. The API key is provided automatically after registration – copy it into the third configuration field.
Once both keys are in place, the aviation and maritime panels populate with live positions. The fishing vessel layer activates independently without additional credentials.
Connecting an AI Agent
This is where the project moves from interesting to genuinely useful. ShadowBroker exposes a URL endpoint that any AI agent can query directly via GET requests. The agent does not need special integration software or custom plugins – just the ability to make web requests and parse the response.
The author connected it to WorkBuddy as a test. Asking WorkBuddy “Where is Air Force One right now?” returned either no data or data classified too high to surface through the OpenSky feed. Switching to “Where is Air Force Two?” produced a live coordinate, altitude, and position from the OpenSky data. The response came back in seconds.
The same approach works for any tracked flight or vessel. “What ships are in the Gulf of Aden right now?” “What is the most recent seismic event in Japan?” “Show me the latest UAP reports in the last hour?” – each question maps to a data feed the platform already maintains.
This is the practical value: converting passive data streams into an active query layer. An agent can pull exactly what you need, when you need it, without you having to keep a browser window open and manually refresh. For OSINT researchers, journalists, or anyone tracking developing situations in real time, that is a meaningful workflow shift.
Deploying on a QNAP NAS
The project ships as a Docker Compose application. For QNAP users running Container Station, the deployment process is straightforward.
Open Container Station, create a new application, and paste the following docker-compose configuration:
services:
backend:
image: ghcr.io/bigbodycobain/shadowbroker-backend:latest
container_name: shadowbroker-backend
ports:
- "18123:8000"
environment:
- MESH_INFONET_FLEET_JOIN=false
- MESH_MQTT_INCLUDE_DEFAULT_ROOTS=false
- SHADOWBROKER_TRUST_DOCKER_BRIDGE_LOCAL_OPERATOR=1
- SHADOWBROKER_TRUSTED_FRONTENDS=frontend,shadowbroker-frontend
- NEWS_ENABLED=true
- TELEGRAM_OSINT_ENABLED=true
volumes:
- backend_data:/app/data
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/api/health"]
interval: 15s
timeout: 10s
retries: 5
start_period: 60s
frontend:
image: ghcr.io/bigbodycobain/shadowbroker-frontend:latest
container_name: shadowbroker-frontend
ports:
- "13123:3000"
environment:
- BACKEND_URL=http://backend:8000
depends_on:
backend:
condition: service_healthy
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:3000/"]
interval: 30s
timeout: 10s
retries: 3
start_period: 20s
volumes:
backend_data:
Deploy the stack and wait for both containers to reach healthy status. The frontend becomes accessible at `http://your-nas-ip:13123`.
One thing worth noting before starting: make sure the OpenSky and AIS credentials are configured inside the application before expecting data in the aviation and maritime panels. The containers will start and run without those keys, but those specific feeds stay blank until the API credentials are in place.
For users on non-QNAP systems, the same Compose file runs on any machine with Docker and Docker Compose installed. The backend requires port 18123 and the frontend needs port 13123 – both need to be available on the host.
What This Means for Independent Intelligence Work
The infrastructure for tracking real-time global events – aircraft movements, maritime traffic, natural disasters, unusual aerial activity – used to require either government-level access or expensive commercial subscriptions. ShadowBroker, combined with freely available public data networks and a home NAS, puts a meaningful subset of that capability into independent hands.
The open-source angle is not just a licensing statement. It is a functional claim: the data sources are known, the code is inspectable, and the entire pipeline from feed to dashboard to agent query is auditable. For researchers who need to verify where their information came from, that matters.
The agent integration is what turns this from a dashboard into a workflow tool. A static wall of data is hard to act on. An agent can answer specific questions against that data – on demand, in context, as part of a larger task – something you can build processes around.
Whether that workflow serves an OSINT researcher, a journalist covering a developing story, or just someone curious about what is moving across the world’s skies and oceans right now, the underlying capability is the same. The difference is who is asking the questions.