A common operating picture for teams without a SOC.
A browser-based 3D situational awareness tool. A photorealistic globe, twelve live public-data feeds, and a server-side credential vault. Google Earth meets Palantir — for the operations cell, the mission org, and the small-team analyst who never had access to either one.
The convoy left thirty-eight minutes ago. Two pickups and a hilux, food and clinic supplies, four staff, a translator, and a community liaison who knows every village inside this corridor by name. They are watching the road. The operations team, two thousand kilometers away, is watching seven feeds layered on top of the same patch of ground.
The first thing they notice is in the sky. A military aircraft has been circling a long oval pattern eighty kilometers west of the route for the last forty minutes — flying at twenty-two thousand feet, no civilian flight plan filed. A public flight-tracking feed has been pushing its position every ten seconds; the consumer flight apps had already filtered it out. The operations team does not know why the aircraft is there. They know it is.
The second thing is a heat signature. A NASA fire-detection satellite flagged a hotspot six kilometers off the route, in the bush north of the corridor, eighteen minutes ago. It was warm when it first appeared. The next pass came through forty minutes later and the same spot of ground is reading hotter. The fire is not out. It is growing. It is also a hundred and twenty meters from a track the convoy will pass.
The third thing is a cluster. Thirty-five kilometers north of the corridor, the violence-incident database has logged four events in the last fourteen days — three of them with fatalities, all of them attributed to militant Fulani groups operating against farming villages along the river. The database categorizes much of this as “farmer-herder”, a framing the team rejects. On the shared map the dots are red, the label reads Fulani militant attacks, and the cluster is moving south.
The fourth thing is invisible until you look for it. The crowdsourced traffic feed on the primary route shows roads going quiet — stretches that should be carrying GPS-traced movement at this hour are not. Traffic has thinned by sixty percent in the last twenty minutes. Locals know something the operations team does not. The fact that they have stopped driving is itself the data point.
A fifth feed, the seismic monitor, is quiet. A sixth, the UN refugee layer, shows an existing displacement site forty kilometers north where the convoy will eventually stop. A seventh, the satellite tracker, shows an imaging satellite passing over the area in fourteen minutes — useful for follow-up imagery if anything happens.
The team makes a call. The convoy reroutes thirty kilometers east, adds ninety minutes to the trip, and goes around the cluster. The team on the ground does not know about the aircraft, the fire, the attack site, or the traffic falloff. They know the operations team told them to turn. Six hours later they are at the clinic site, unloading.
Overwatch is not built on a flat map. It is built on a photogrammetric reconstruction of the surface of the Earth — real buildings with real shadows, real terrain with real slope, real forests, real ocean meshes. Streamed live from Google’s 3D Tiles service, decoded by the same renderer NASA-AMMOS uses for planetary missions, drawn into a Three.js scene that runs in any modern browser.
The reason this matters is simple. A flat tile map shows you where a village is. A photoreal globe shows you what it looks like from the ridge above it — which roads have line-of-sight, which approach corridors are masked by vegetation, where the riverbed cuts, where the high ground sits. Operators read terrain. A globe lets them.
The renderer is a hierarchical LOD pipeline. The browser asks for the bounding region the camera is looking at; the tileset root returns coarse tiles; as the camera zooms, the renderer asks for finer tiles inside the frustum and discards the rest. By the time you are at rooftop height, you are looking at centimeter-resolution photogrammetry draped over an EGM2008 geoid. Above that, the post-processing pass composites every data layer the operator has turned on — aircraft trails, thermal detections, conflict pins, orbit polylines — into a single coherent picture.
The whole thing runs in WebGL. Not Unity. Not Unreal. Not a desktop-installed thick client. A browser tab.
The globe is the canvas. The feeds are the picture. Overwatch fuses twelve-plus public data sources into a single operational view — each one trivially available on its own, none of them useful in isolation. Grouped here by the question they answer.
Three feeds, one airspace. OpenSky Network pulls state vectors for roughly seven thousand civilian aircraft worldwide on a ten-second polling cadence, fused from ADS-B, MLAT and FLARM receivers. Every state vector carries ICAO24, callsign, position, altitude, velocity, heading and a position-source flag — everything needed to draw a trajectory that an operator can read at a glance.
ADS-B Exchange covers the flights commercial trackers filter out. Military movement, surveillance orbits, tanker tracks, evacuation flights, anything with a callsign prefix like RCH, EVAC, DUKE, or an ICAO24 hex inside a known military allocation. Same state vector, distinct visual treatment, persistent callsign label — because if a military aircraft is loitering near your convoy, you want it to be obvious.
CelesTrak TLE drives the satellite layer. Two-line element sets for active satellites are fetched once a day and fed to satellite.js, which propagates SGP4 / SDP4 orbits client-side every frame. The result is live ground tracks for the ISS, the visual-magnitude catalogue, the Starlink constellations and any other group the operator cares to toggle on — with orbit polylines extending ninety minutes forward and ninety minutes back from now.
{
"time": 1614842673,
"states": [
[
"a51bc4", // icao24
"DUKE71", // callsign
"United States",
false, // on_ground
1614842670,
8.5391, // lon
7.7323, // lat
6705.6, // baro_alt m
false,
230.0, // velocity m/s
88.0, // true_track
...
]
]
}
ISS (ZARYA)
1 25544U 98067A 24315.54791667
2 25544 51.6429 305.4127 0007123
42.8472 317.2891 15.50373611
ACLED is the canonical academic record of political violence. Overwatch pulls events — armed clashes, attacks on civilians, riots, abductions — with their actors, fatalities, sources, and geocoded coordinates, renders them as magnitude-scaled red pins, and clusters them on the globe by region. ACLED is updated weekly. Overwatch caches it for an hour at the proxy.
NASA FIRMS handles thermal anomalies. VIIRS and MODIS detections from the last twenty-four hours are rendered as heat-graded points, with brightness temperature and confidence band exposed in the inspect panel. FIRMS is how Overwatch sees fires — the literal kind, and the structural-burn kind that follows an attack on a village.
UNHCR and IOM DTM handle displacement. UNHCR’s population-of-concern API gives country-level totals and demographic breakdowns; the geographic companion endpoint returns refugee-site geometry. The IOM Displacement Tracking Matrix layers site-level IDP counts on top. The terrorattack dataset adds historical and recent attack records geocoded to the incident.
None of these feeds were built to work together. The reason Overwatch exists is so that they can.
{
"event_date": "2024-11-08",
"event_type": "Violence against civilians",
"actor1": "Fulani Ethnic Militia",
"location": "Ukum LGA, Benue",
"latitude": 7.3491,
"longitude": 9.2814,
"fatalities": 14,
"source": "Daily Trust; ACLED",
"notes": "Attack on..."
}
{
"latitude": 7.3577,
"longitude": 9.2691,
"bright_ti4": 341.2,
"acq_date": "2024-11-08",
"acq_time": "1422",
"confidence": "nominal",
"frp": 8.4,
"daynight": "D"
}
OpenStreetMap road geometry, queried through the Overpass API, feeds a custom GPU particle system that animates traffic flow along the actual road graph. The particles do not represent real cars — they represent the road network being alive. When a region of road suddenly empties out, the operator sees a literal absence of flow against a region where flow is still healthy. The data point is the contrast.
Geocoding goes both directions. Forward geocoding through Geoapify and Nominatim lets an analyst type a place name and fly to it. Reverse geocoding lets the operator click an event pin and get back an administrative hierarchy — country, state, LGA, ward. Both run through the proxy so search history stays on the platform, not on a third-party server.
Overpass is also the on-demand detail mechanism. When the operator zooms into a region and asks for local features — clinics, schools, mosques, churches, petrol stations, water points — Overwatch fires an OSM query against the bounding box and overlays the result. Cached for a day. Use it once, never refetch.
[out:json][timeout:25]; ( way["highway"~"^(motorway|trunk|primary)$"] (6.5,7.0,8.5,10.0); ); out geom;
{
"country": "Nigeria",
"state": "Benue",
"county": "Ukum",
"city": "Zaki Biam",
"lat": 7.3491,
"lon": 9.2814
}
The USGS earthquake feed is the quietest layer on the globe most days, and the most important one the day it goes loud. Magnitude-scaled markers, depth-coded color, sixty-second polling cadence. When an operations cell is running response in a seismically active region — Türkiye, Indonesia, Nepal, the Andes, the western US — having USGS already on the same canvas as the conflict, fire, and displacement layers means the cell does not have to switch context to a different tool the moment the ground starts moving.
It is also the layer that proves the philosophy. The earthquake feed is free, public, and trivially fetched. It has been free and public for thirty years. The only reason it does not already sit next to the convoy you are running, the camp you are managing, and the airspace you are watching is that nobody bothered to put it there. That is the whole job. That is Overwatch.
{
"type": "Feature",
"properties": {
"mag": 4.7,
"place": "23 km E of...",
"time": 1731088342000,
"tsunami": 0,
"sig": 340
},
"geometry": {
"coordinates": [
142.518, 38.297, 35.0
]
}
}
The globe renders to a single composite canvas, which means every pixel can be transformed by a final post-processing pass. Overwatch ships five of them — three operational, two for briefings. Each is one keystroke away.
Overwatch is a browser client talking to a Laravel backend. The browser bundle ships exactly one client-side key — the Google Maps key, which is domain-restricted and useless outside the deployment. Every other credential lives server-side, behind Sanctum session auth, in an encrypted vault.
A SOC seat at a defense prime starts at roughly half a million dollars a year per analyst, before the onboarding cycle, before the cleared facility, before the IT integration. Overwatch is not that tool. It is the tool the people who never had access to that tool can actually run — in a browser, on the data that already exists, this quarter.
| Sandbox | Pilot | Operational | |
|---|---|---|---|
| Pricing | $0 / 7 days | $ — / quarter | $ — / year |
| Seats | 1 analyst | 1 team · up to 6 | Multi-team · org-wide |
| Feeds | All 12+ public | All 12+ public | + Custom layers on request |
| API credentials | Platform fallback | BYO keys or platform | Org-wide vault + BYO |
| Rate limit | Per-user evaluation cap | Per-user, raised cap | Negotiated per service |
| Vision modes | All five | All five | All five + custom shaders |
| Support | Documentation | Email + 1 onboarding call | Named contact · training |
| Data residency | Shared platform | Shared platform | Dedicated tenant available |
| Best for | Evaluation, single analyst | Single ops cell, defined region | Multi-region deployment |
Overwatch is in early operational use with a small set of partner organizations. If your team is running response, monitoring deployed people in fragile regions, or doing analytical work that deserves better than a tab full of bookmarks — talk to us.