SENTINEL // OPEN INTEL
00

Overview

What you're looking at

SENTINEL is an OSINT globe, a real-time aggregation of public, non-classified data layered on a 3D Earth. Everything you see comes from sources anyone with the right time and tooling can pull on their own: open ADS-B aggregators, AIS streams, NASA / USGS / NOAA feeds, Microsoft’s Planetary Computer, the global volunteer monitoring networks. The novelty isn’t in the data, it’s in fusing dozens of feeds, applying lightweight pattern-detection heuristics on top, and rendering the result in a single coherent picture.

These docs explain what each layer is, where it comes from, and how the pattern detectors form an opinion about what they see. They are deliberately selective, see the callout below.

01

On the globe

What every layer represents

Below is every layer the globe can render, grouped by family. Toggle them via the layers panel (Layers icon, top-right of the toolbar). The layers list is data-driven from a typed catalogue - if a layer ships, it’s in this list.

Flights

Military aircraft

flights-mil

Live ADS-B positions of military aircraft worldwide, colored by mission category (ISR, tanker, cargo, fighter, bomber, VIP, patrol, helicopter).

Source
Open community ADS-B aggregators
Refresh
Every few minutes

Coverage depends on the volunteer ground-station network. Mid-ocean and remote-region coverage is sparse, long over-water transits regularly drop off ADS-B before re-appearing. Trail bridging stitches a hex back to its prior trail across short coverage gaps; bridged segments render dashed.

Civilian aircraft

flights-civ

A filtered slice of civilian air traffic, capped to keep the globe legible, prioritising long-haul widebodies and regional anomalies.

Source
Open community ADS-B aggregators
Refresh
Every few minutes

The cap scales with the active graphics preset.

Maritime

Maritime traffic (AIS)

ais

Vessel positions broadcast over AIS, tankers, cargo, fishing, and other ship classes, with multi-hour trails per vessel.

Source
AIS aggregator
Refresh
Continuous stream

AIS can be spoofed or transponders turned off. Vessels in dense lanes are clustered above certain altitudes for legibility.

Submarine cables

cables

Major undersea fibre-optic cable routes with landing points.

Source
TeleGeography open dataset
Refresh
Static (manually refreshed)

Fleet

Allied / adversary fleet

fleet

Hand-curated tracking of named carriers (CVN/CVL), strike groups (CSG), amphibs (LHA/LHD), and notable destroyers.

Source
Open-source naval movement reporting + AIS cross-checks
Refresh
Daily

Curated by hand from public deployment reports. Not exhaustive.

Intel layers

Thermal anomalies

fires

Active fire detections with fire radiative power readings, flares, wildfires, infrastructure fires.

Source
NASA FIRMS (VIIRS / MODIS)
Refresh
Hourly

Detections at energy infrastructure are auto-flagged in the patterns rail.

Energy infrastructure

energy-infra

Oil terminals, gas / LNG facilities, nuclear plants, coal plants, hydro dams, and major substations.

Source
OpenStreetMap-derived
Refresh
Static (manually refreshed)

GNSS / GPS interference

gpsjam

Daily H3-cell aggregation of aircraft NIC values, the same dataset gpsjam.org publishes, colored by jam ratio.

Source
gpsjam.org
Refresh
Daily (1-day trailing)

Cells fade in as you zoom past city level so the map stays readable from globe view.

NOTAMs (global)

notams

Warning, restricted, prohibited, danger, and security-airspace zones rendered as outline rings.

Source
Aggregated NOTAM publications
Refresh
Hourly

TFRs (US)

tfrs

Active US Temporary Flight Restrictions.

Source
FAA
Refresh
Hourly

Air-defence alerts

airdef

Active rocket / missile sirens (e.g. Israel Tzeva Adom) painted as red diagonal-striped warning circles around affected cities.

Source
Public alerting feeds
Refresh
Continuous

Live cameras

cameras

Public webcams, borders, ports, infrastructure, weather, geolocated and clickable for live feeds.

Source
Public webcam directories
Refresh
Camera index daily; feeds live on click

Imagery

Sentinel imagery overlay

imagery-overlay

Sentinel-2 L2A optical and Sentinel-1 RTC SAR scenes overlaid on the globe with adjustable opacity.

Source
Microsoft Planetary Computer (STAC + TiTiler)
Refresh
Search runs on demand for the current view

Geolocation accuracy ~6-12 m absolute; 10 m pixels for Sentinel-2 visual bands.

Photoreal 3D Tiles

photoreal

Optional photoreal 3D tile overlay for major cities and landmarks, toggleable, persists per user.

Source
Google 3D Tiles
Refresh
Tile cache shared across users

Space

Satellites

satellites

Live propagation of satellites via SGP4 from public TLEs, orbits drawn for the active selection.

Source
celestrak.org
Refresh
TLE catalog reloaded periodically; positions propagated client-side every animation frame

Catalog size scales with the active graphics preset.

ISS Live

iss

Real-time ISS position separate from the general satellite catalog.

Source
Public ISS tracking API
Refresh
Every few seconds (polled)

Space weather

space-weather

Geomagnetic Kp index, solar X-ray flux / flare class, and active SWPC alerts.

Source
NOAA SWPC
Refresh
Every few minutes

Environment

Earthquakes

earthquakes

Recent seismic events sized by magnitude.

Source
USGS
Refresh
Every few minutes

Major disasters (GDACS)

gdacs

UN-GDACS multi-hazard alerts (cyclones, floods, droughts, etc.) with affected-population polygons.

Source
GDACS
Refresh
Hourly

Weather radar

radar

Global precipitation radar mosaic, past frames plus a 30-min nowcast, with a scrub timeline.

Source
RainViewer
Refresh
Tiles refresh every ~10 min upstream

Borders & POIs

Country borders + threat shading

borders

Country polygons with a threat-score-driven fill; click any country to open the country panel. Border line resolution scales with the active graphics preset (low keeps the small low-resolution source, medium and high step up to a smoother source, extreme uses the highest-resolution source).

Source
Natural Earth (boundaries) + internal scoring
Refresh
Boundaries static per source; threat scoring updated continuously

State / province borders

admin1

Internal administrative boundaries for every country (US states, Russian oblasts, Indian states, Brazilian states, and so on). Renders as a warm-amber line that reads on both the dark and satellite basemaps.

Source
Natural Earth admin-1
Refresh
Static (manually refreshed)

Default on for medium and higher graphics presets, off on the low preset and on mobile so the larger payload only loads when an analyst is actually using it. Toggle: Layers > Ground > State / province borders.

Points of interest

pois

Curated military bases, naval bases, airports, capitals.

Source
Curated list
Refresh
Static

Camera + UX

Click and drag rotates and tilts the globe; scroll zooms. The attitude indicator in the bottom right is also draggable for fine pitch and heading control, with a reset button to snap back to top-down. Country panels stay on the right rail; live info cards (aircraft, ships, satellites, fleet, points of interest) live on the left, and the two surfaces can be open at the same time so a country brief and a tracked target are visible together.

Aircraft, ship, and satellite info cards each carry a Follow button. Engaging follow on a ship or aircraft pins the camera directly above the target at a regional altitude that keeps the surrounding area in view; engaging follow on a satellite pins the camera radially above the satellite so the orbit rotates the camera through space alongside it. Any direct interaction with the globe (drag, zoom, touch) cancels the follow.

The layers panel has a “Rotate in background” toggle in the Visual section. When on, the globe slowly spins about its polar axis after roughly fifteen seconds of inactivity, with the speed adjustable via a slider underneath the toggle (default 2 minutes per revolution). Live data layers continue updating during rotation. Any pointer, wheel, or keyboard interaction stops the spin and resets the idle clock.

Cinematic mode

Click the TV icon at the top-left of the globe (or open Settings then Cinematic mode) to flip the surface into a self-running broadcast view. The camera autonomously cycles through whatever is most interesting right now: air-defense alerts as they fire, strategic airlift waves in motion, tanker activity, refinery thermal anomalies, hurricanes and tsunamis, volcanic activity, GDACS humanitarian alerts, US carrier movements, GPS-spoof events, and breaking news from UN, DoD, and NATO press feeds. Live rocket launches and the White House live broadcast also hold the camera while they are active, with the webcast playing in a small window on screen.

A red pulse badge at the top-left opens a Noteworthy panel that lists active and upcoming priority events with countdown timers and the same embedded video, so a launch or a presidential briefing is one click away even when cinematic mode is off.

Every scene shows a lower-third caption with both UTC and your local time, plus a side detail card that mirrors the same surface a normal click would open. Voice narration describes each event in newscaster cadence. When an air alert fires anywhere in Ukraine or Israel, a curated multi-cam livestream pops in at the top-left and stays for five minutes; a fresh alert in the same region resets the timer. A right-side rail auto-scrolls through the latest X and Telegram signals (under thirty minutes old, with any attached images or short videos rendered inline). When nothing newsworthy is firing, the globe slowly orbits at continent altitude.

When the camera flies to an event, cinematic mode temporarily switches on whatever globe layer that scene needs (FIRMS for fire scenes, fleet markers for carrier scenes, GDACS polygons for disaster scenes, oblast outlines for Ukraine air alerts, and so on) and restores your prior layer state when it cycles to the next event. You always see the thing the camera is pointed at, without leaving every layer toggled on the rest of the time.

Cinematic mode is desktop-only and pauses automatically when any modal opens or when the browser tab is hidden. Press Escape to pause, click the EXIT pill in the lower- third to leave. The mute toggle next to the EXIT pill silences voice cues while keeping the visual loop running. Append ?cinematic=1 to the URL to boot directly into cinematic for newsroom or iframe display.

Voice narration uses your browser's built-in text-to-speech by default. For higher-quality newscaster audio you can paste your own OpenAI API key into the cinematic settings panel; the key is stored only in your browser and never sent to our servers (the audio request goes directly to OpenAI). Get a key at platform.openai.com. Cost is roughly a cent per minute of speech.

02

Country intel

The country panel

Click any country on the globe, or search by name, to open the country panel. The panel is organised into seven tabs across two rows. The top row holds the daily-use views (Overview, Intel, Live, Briefing); the second row holds deeper structural tabs (Government, Relations, Military). The persistent header keeps the threat score, tier label, capital local time, and base / signal delta / CZIB breakdown visible no matter which tab is selected. Leader portraits collapse on demand to reclaim screen space.

Daily briefings

Each tracked country has a hand-maintained intelligence-style situation brief, a single dense paragraph naming officials, events, casualty figures, and the immediate forward outlook. Briefs are updated when the on-the-ground picture shifts; the file is plain JSON so changes go live without a rebuild.

Briefs are written from public reporting only. We don’t originate facts; we condense them.

Leaders & elections

Heads of state and heads of government come from a daily Wikidata scrape (P35 and P6 properties), merged with a hand-curated override file for cases the scrape gets wrong - e.g. recent successions, contested claims, or de-facto leaders Wikidata still lists by an outdated record. Leader photos resolve through the Wikidata image property when available.

Next-election dates are hand-curated from public election commission announcements; the panel shows the ISO country code, date, and election type plus a days-until pill.

Sanctions

Sanctioned individuals, organisations, and vessels are aggregated from the OpenSanctions consolidated dataset, which merges OFAC, EU, UK, UN, and other sanctions lists into one queryable corpus. We stream-parse the consolidated CSV server-side, derive a tiny per-country index, and serve it back to the panel. The country panel breaks the count down by category (rose pink for individuals, violet for organisations, cyan for vessels) and links out to the OpenSanctions search for the country.

Internet traffic

The traffic chart shows Cloudflare Radar’s 48-hour netflow timeseries for the country, with annotations when Cloudflare detects a national-scale outage. It’s a useful tell during civil disturbances or government-imposed shutdowns , the curve drops when the country goes dark.

Country dossier

The Overview tab leads with a Country dossier card showing region, subregion, capital, population, land area, GDP and government debt with the year of the underlying World Bank reading, the official currency code, and the official language(s). GDP and debt come from the World Bank Open Data API (NY.GDP.MKTP.CD and GC.DOD.TOTL.GD.ZS) refreshed daily. The local currency exchange rate to USD comes from open.er-api.com, refreshed hourly, so the dossier always shows a current value.

Threat score and composition

The threat score is the sum of weighted channels. A structural baseline reflects long-running risk (active conflicts, sanctions, recent incident history). On top of it sit live conflict channels: sustained activity, which tracks war-grade reporting held across days and is smoothed so it rises within hours and decays over days rather than flickering; a last twenty-four hours channel that weights fresh items more heavily than day-old ones; detector corroboration, which adds weight when thermal or pattern detections fire above the country’s own normal rate; and a de-escalation channel that subtracts on ceasefire, withdrawal, and truce reporting. All channels read the same curated term lexicon, including non-English vocabulary, so a Russian rocket-strike report or an Arabic ceasefire mention counts the same as its English equivalent. A gate keeps tension talk alone from reaching the war band without direct-attack reporting behind it.

Score composition rows show each channel’s point value and its share of the score, with the underlying signal evidence (source counts and matched vocabulary) listed below. Score breakdown adds the channels to the threat score line, with a range-clamp row when the total is held to the 5 to 100 band, so the math is always reconcilable end to end.

World tension index

The world tension meter in the top bar is a single 0 to 100 read on how close the world is to wider conflict, paired with a five-level readiness condition. It compounds the active wars, weighting each by the power of the states involved, then adds separate terms for great-power escalation, strategic movement (airlift waves and tanker surges above normal), and nuclear rhetoric across the feed. Wars compound, but only great-power belligerence reaches the top of the scale, so a single regional war cannot saturate the meter. Click it for the breakdown and the top contributing countries. It updates every fifteen minutes.

Government tab

The Government tab shows the country’s system of government, the head of state and head of government with their official portraits, parliament chamber composition with a hemicycle seat-dot visualisation when party seat counts are catalogued, and the next election date per chamber when Wikidata records one. Leaders, system labels, chambers, and next-election dates are auto-sourced from Wikidata and refreshed daily. Portraits resolve through the Wikidata image property.

Foreign relations

The Relations tab surfaces the country’s membership in twenty international organisations across global, defense, economic, and regional categories: UN, NATO, BRICS, OPEC, EU, OECD, G7, G20, Five Eyes, ASEAN, Mercosur, USMCA, AU, Arab League, OAS, ECOWAS, SCO, CSTO, Commonwealth, and OPEC. Each row notes the year the country joined when Wikidata records it. UN Security Council status is called out separately, with permanent five and current rotating membership both surfaced. All data refreshed daily via Wikidata.

Military tab

The Military tab pulls active duty and reserve personnel, paramilitary strength, annual defence expenditure and percentage of GDP, conscription status, and a list of service branches (army, navy, air, marines, space, coast guard, paramilitary). Numbers come from Wikidata structured records where they exist, plus the open-licensed CIA World Factbook mirror for the narrative summary and personnel breakdowns. Refreshed daily server-side.

Live broadcasts

The Live tab embeds the country’s catalogued news broadcasts (state and major commercial broadcasters where they stream live) directly inside the panel as auto-mounting iframes with thumbnail posters from the YouTube channel. Streams that go offline switch to an OFFLINE pill; live streams pulse a red indicator. Pop-out opens a floating window that survives panel close and country switches.

03

Pattern detection

Heuristic flagging on top of the live data

The patterns rail (top-right) surfaces moments where the live data fits a known operational shape, a circling ISR aircraft, a vessel sitting motionless above an undersea cable, a thermal anomaly directly on a refinery, a wave of strategic airlift between two theatres. Each pattern is a lightweight heuristic: we’re looking for shapes, not making claims about intent.

Orbit / racetrack

Aircraft trails are scored continuously for two shapes - tight orbits (multiple full revolutions inside a small diameter) and racetrack patterns (sustained parallel-leg tracks with reversals). Both are signatures of ISR / AEW / refueling stations. Trainer aircraft are excluded categorically because routine syllabus flights produce these shapes by design.

Cable loiter

A vessel is flagged for cable loiter when its recent track sits tightly clustered, mostly stationary, near the published route of an undersea cable, with no other vessels nearby and no registered anchorage in range. The detector layers proximity, stationary fraction, cluster diameter, and crowd-density gates; it weights confidence by how far above each gate’s floor the candidate clears. Time-of-day shading mildly discounts the dawn and dusk windows because that’s when fishing fleets concentrate.

Fires at infrastructure

FIRMS thermal detections are joined against the energy-infra catalogue. Detections within proximity of an oil / gas / LNG / nuclear / coal / hydro asset surface as fire_at_infra; higher fire radiative power readings escalate to high_frp_at_infra.

Routine flare-stack burnoff at refineries, gas plants, and LNG terminals is classified separately as infra_flare_routineso the live patterns rail stays focused on novel fire incidents rather than expected industrial activity. Routine detections still render on the globe under a dedicated Routine FIRMS layer (default off) so they remain auditable. An anomaly escape promotes a routine detection back to a live fire alert when the intensity spikes well above the site’s baseline or when several zones at the same facility light up at once.

Strategic airlift

We watch for sustained transits of strategic airlift airframes , C-17, C-130, C-5, KC-46, KC-135, A330 MRTT, A400M, Il-76, Y-20, and similar, between major theatres (North America, Europe, MENA, Indo-Pacific). When several distinct airframes traverse the same theatre pair within a rolling window, the pattern fires once as a bidirectional cluster, a NA↔EU wave fires the same whether some airframes went outbound, others returned, or both.

The expanded entry shows a per-direction breakdown so you can see which way the bulk of traffic is moving, plus the per- aircraft list with type and last position. A “Show flight paths” button overlays every cluster member’s trail on the globe; each polyline and the matching panel callsign share the same color as the live aircraft icon (tankers pink, cargo turquoise, etc.) so the three are unambiguously linked. Coverage gaps mid-Atlantic that were stitched together by trail-bridging render as dashed segments so the line stays honest about what was actually tracked. Clicking a callsign in the panel auto-loads the path overlay (if it isn’t already on) and flies the camera to that aircraft’s latest position.

Origin resolution is multi-source: a flight’s explicit first-sighting field, a backwards walk through the trail buffer for the earliest point in a different region than current, and a corridor-and-heading heuristic for flights that drop off ADS-B coverage on the eastern Mediterranean approach (where coverage thins). The detector won’t fire on intra-theatre traffic, Tampa to Virginia is both North America, and never qualifies.

Tanker cluster & swarm

Two related signals on aerial-refueling activity. A tanker cluster fires when two or more refueling platforms (KC-135, KC-46, KC-10, A330 MRTT, A310 MRTT, Il-78) are airborne within roughly a typical AAR holding-anchor diameter of each other; that’s the signature of a single anchor being worked, common ahead of regional ops. Connected components by transitive proximity, so three tankers spread across a wider stretch still resolve to one cluster.

A tanker swarm is the same idea at theatre scale: three or more tankers concurrently flying racetrack or orbit patterns across an entire macro-region (the broader Atlantic arc, or the Pacific) at the same time. Distinct from a cluster (proximity = one operation) because a swarm is dispersed and represents coordinated multi-anchor activity. A separate tanker theatre surge fires when six or more tankers are airborne in a single macro-theatre regardless of whether they have settled into orbits yet, which catches mass refueling about to start before the orbits are visible.

Tanker cluster, tanker swarm, and tanker theatre surge details are subscriber-only. Free tier sees the count, the theatre or region label, and the aircraft inventory; per- aircraft callsigns, positions, and the flight paths overlay are gated. Strategic airlift uses the same gate.

GPS spoofing

We walk each tracked aircraft’s recent ADS-B trail looking for consecutive position reports whose implied ground speed exceeds physical aircraft limits. Modern airframes cruise well below Mach 1; anything that purports to have covered tens or hundreds of kilometers in seconds is either a bad receiver or, more often, a deliberate position spoof, which is routine in known electronic-warfare zones (Eastern Europe, the Levant, the Strait of Hormuz, the Black Sea). The pattern surfaces a critical-severity entry on the rail with the implied speed, displacement, and the two coordinates between which the impossible jump occurred.

The detector trusts the upstream trail-bridging gate, so it skips pairs separated by the long ADS-B silences common on transoceanic routes. A flight that reappears far downrange after a long over-water gap won’t false-positive: by the time the next ping is appended, the gap evaluation has already accepted or rejected it on plausibility grounds, and only short-cadence implausible jumps reach the spoof check.

04

Live feeds

Text + signal layered onto the picture

The right-side news widget aggregates five live signal streams, curated X / Twitter handles for OSINT, public Telegram channels covering the active conflict surfaces, country-tagged news from an RSS aggregator, GDELT events, and Wikipedia’s current-events feed. Items are deduplicated on canonical URL and country-tagged where possible.

The country panel splits these into three groups in the Intel tab, X feed, Telegram, and News articles, each collapsible. The Overview tab’s score composition shows the point contribution from each group separately so you can see which source is driving the live signal delta.

Translate posts

Every signal post carries a small EN button next to the timestamp. Click it once and the post text swaps to English; click again to revert. Telegram posts in non-Latin scripts (Russian, Ukrainian, Persian, Arabic, Hebrew, Chinese) are pre-translated when they enter the cache, so the button serves them instantly. Other posts translate on demand and cache the result for an hour, so a second click on the same post is free.

Translations are produced by a public translation service. The original text is what gets scored for the threat composition, the English render is just for reading; nothing you read in English changes the underlying numbers.

Canal transit numbers

Click the strategic asset markers for the Suez Canal or the Panama Canal and the side card now shows the latest reported daily transit count along with a vessel-type breakdown (containers, tankers, dry bulk, general cargo, ro-ro). Numbers come from the IMF PortWatch dataset, which derives daily chokepoint transits from automatic identification system traffic and publishes them as a public ArcGIS feature service. The card links back to the PortWatch landing page as the source.

Weather overlays

A Weather group in the layer filter exposes three live overlays. Active weather alerts are pulled from the National Weather Service Common Alerting Protocol feed (United States coverage) and rendered as severity-shaded polygons. Active hurricane and tropical-storm cones come from the National Hurricane Center in the Atlantic, East Pacific, and Central Pacific basins, with the cone of uncertainty as a polygon and the forecast track as a dashed line. Volcanic ash advisories from the nine regional Volcanic Ash Advisory Centres render as ash-colored polygons over their published extents.

All three are off by default; toggle them on from the Weather section of the layer filter. The weather radar overlay (RainViewer, separate live precipitation feed) and the space-weather chip in the toolbar are unchanged.

The live-stream player above the news rail polls the live URLs of around ten major news YouTube channels (Sky News, ABC News, NBC News, CBS News, Al Jazeera, GB News, LiveNOW from Fox, Bloomberg TV, Reuters, AP News). The dropdown only lists channels that are actually broadcasting at the moment of the poll; results are cached so the channel list refreshes about every ten minutes.

The weather radar overlay is a separate live feed pulled from RainViewer, with a scrub-and-play timeline through the past ~2 hours plus a 30-minute nowcast.

The space-weather chip in the toolbar reads NOAA’s Space Weather Prediction Center, geomagnetic Kp, solar X-ray flux / flare class, and any active alerts (G-storm, R-radio blackout, S-radiation).

05

Cyber

The cyber panel

The cyber panel collapses four cyber-relevant feeds into a single accordion: CISA’s Known Exploited Vulnerabilities catalog, ransomware leak-site posts via ransomware.live, a curated cyber news RSS aggregator, and an X / Twitter slice filtered to known cyber-research handles plus a strict keyword filter (CVE identifiers, MITRE ATT&CK references, named ransomware gangs, APT designators, multi-word phrases like “data breach” and “threat intelligence”). Single-word terms like “exploit” or “ransomware” are wrapped in word boundaries on both sides so they don’t false-match inside unrelated words.

The X subset is built from the same upstream cache that powers the country panel, no second API budget, no extra calls.

06

Notifications

Daily digest + real-time webhooks (Pro)

Two ways to receive SENTINEL signal without keeping the tab open: a once-a-day brief in your inbox, and real-time webhooks for the events that actually matter.

Daily email brief

A once-per-day summary delivered at the local hour you pick, in the timezone you pick. Each issue leads with a short prose read of the day, then steps through the operational picture: strategic airlift activity by corridor, tanker movements, repeat thermal anomalies at infrastructure with coordinates, active tropical cyclones and tsunami warnings, severe US weather alerts, high-severity disaster events, US carrier locations and exercises, and a small commodities snapshot covering the oil pack and gold.

The world-report block surfaces curated headlines from UN, US Department of War, and NATO press feeds with publisher thumbnails alongside top-scored signals from X and Telegram OSINT channels. Every headline and signal links back to the source.

Subscribe from the email icon in the toolbar (visible to everyone, configurable for Pro). One-click unsubscribe is in every email. If your subscription lapses, the digest pauses automatically; re-enabling requires an explicit click in the same panel after you renew.

Webhooks

Real-time push: when a pattern fires that you’ve subscribed to, SENTINEL POSTs an HMAC-signed JSON body to the URL you provide. Useful for routing specific pattern kinds into Slack / Discord / PagerDuty, your own dashboard, or a downstream automation.

Pick which kinds to subscribe to (compound pre-strike, strategic airlift, tanker activity, tactical-flight events, infrastructure thermal anomalies, maritime loiter), the minimum severity floor, and a per-pattern cooldown that prevents the same pattern from firing more than once within the window. Each target gets its own signing secret, displayed once at creation; rotate by deleting and recreating.

Dedup is automatic. A pattern that keeps emitting on every detector cycle (a refinery thermal anomaly that stays active for hours, a flight in racetrack pattern for an hour) fires the webhook once, then again only after the dormancy window resets and the recurrence counter increments. Severity escalation always fires even within cooldown. Up to 60 fires per hour per target; surplus is dropped and surfaced to your receiver via an X-Sentinel-RateLimit-Droppedheader on the next successful fire. After 3 consecutive receiver failures the target backs off to retry once per hour; after 10, the target auto-disables and you re-enable from the account page.

Signature: X-Sentinel-Signature: sha256=<hex>computed over the raw body. Same shape as Stripe and GitHub webhooks, so existing receiver libraries verify without translation. Verify on the receiver, never trust the body without it.

Manage at /account/webhooksor the webhook icon in the toolbar.

07

Public content surfaces

Where the dossiers, briefs, glossary, and topic pages live

The pages below are server-rendered article surfaces parallel to the live globe. They expose SENTINEL’s editorial and dossier content as static reading pages so search and ad networks can index real text rather than the empty Cesium shell. The live globe app itself is unchanged. Every page wears the same nav strip on desktop and a hamburger drawer on mobile.

Per-country dossier pages

Every catalogued country has a dossier at /<iso> (lowercase ISO-3, e.g. /usa, /rus, /irn). Each page leads with the country flag, a close-cropped country shape, and a world map with that country highlighted. The body carries a generated history article, a preview of the daily briefing, and the in-app country panel embedded as tabs (Overview, Intel, Live, Government, Relations, Military, Cyber, Wanted). The full Pro briefing is not exposed publicly.

Country directory

/countries lists every catalogued country grouped by region. The same directory is rendered inline at the bottom of the splash page, so every country dossier is one click from the homepage.

Daily SITREP

/today renders the current daily SITREP narrative; per-day archives live at /today/<yyyy-mm-dd>. The narrative is the same prose lede generated each morning for the email digest; the public version surfaces it without the email chrome.

Topic explainers

/topics is a directory of long-form explainers, one per major globe-layer category: aviation, maritime, conflict, energy and infrastructure, weather and disasters, signals and prose, cyber and spectrum. Each explains where the data comes from, how the live classifier reads it, and how it cross-links to the country dossiers.

Toolbar mirror pages

Several toolbar tabs on the live globe also have a public article-style page that reads from the same in-process caches and renders the data as text and tables:

  • /patterns — current rolling-window list of auto-tagged tactical patterns (free tier; per-aircraft and per-vessel detail stays Pro on the live rail).
  • /posture — flat world map with US fleet positions, plus paginated UN / DoD / NATO / OPEC / BRICS / G7-G20 release feeds with article thumbnails.
  • /cyber — OONI censorship leaderboard, Cloudflare Radar BGP route-leak and hijack events, MISP threat-actor presence by country.
  • /current-events — Wikipedia Portal:Current_events scrape, day-by-day, with article thumbnails.
  • /launches — upcoming orbital launch schedule with rocket imagery.

Glossary

/glossary is a single anchored page covering naval and maritime acronyms, aviation terminology, conflict and hazard taxonomies, cyber terms, pattern category names, and the international organisations tracked on the country foreign-relations panel.

Sitemap and robots

/sitemap.xml enumerates every page above plus the daily-brief archive entries. /robots.txt allows everything except the API surface and deep-link query parameter URLs that bypass the splash.

08

Data sources & cadence

Provider × what we read × refresh range

Refresh ranges are deliberate human-scale ranges, not exact intervals. Where a provider publishes a public homepage we link it; we don’t link the specific endpoints we hit.

Flights
Open community ADS-B aggregators
Military aircraft positions
Every few minutes
Worldwide ADS-B fallback feed
Every couple of minutes
ADSBexchange
On-demand ADS-B fallback when primary aggregators fail
On demand
Aircraft registration / type / operator lookup by ICAO hex
Daily per-hex cache
US Temporary Flight Restrictions
Hourly
European airspace closures (conflict-zone information bulletins)
Every half hour
Global airspace tile overlay
On cache miss
Global NOTAMs (non-US)
Hourly
Maritime
Global vessel positions, names, call signs
Continuous stream
US carrier strike groups + naval exercises
Every few hours
Vessel photos for the AIS card
On demand · weekly cache
Submarine cable routes + landings
Static (manually refreshed)
NAVAREA / WWNWS broadcast warnings (missile tests, naval exercises, GPS interference, mines, piracy)
Every half hour
Daily chokepoint transit counts (Suez, Panama, Bosporus, etc.) with vessel-type breakdown
Every few hours
Environment
Active fire / thermal anomaly detections
Hourly
Annual gas-flare locations catalog used by the routine-flare classifier allowlist
Weekly pull
Earthquakes, magnitude + location
Every few minutes
Cyclones, floods, droughts, multi-hazard alerts
Hourly
Global precipitation radar tiles + nowcast
Tiles every ~10 min
Active US weather alerts (CAP polygons, severity-tiered)
Every quarter hour
Active hurricane / tropical-storm cones + forecast tracks (Atlantic, EPAC, CPAC)
Every half hour
Active tropical cyclone advisories for the Western Pacific, Indian Ocean, and Southern Hemisphere basins
Every half hour
VAAC offices (9 regional)
Volcanic-ash advisories (Anchorage, Buenos Aires, Darwin, London, Montreal, Tokyo, Toulouse, Washington, Wellington)
Every few hours
Active tsunami warnings, advisories, watches, and information statements for Pacific + US/Canada coasts
Every 5 minutes
Active volcano list with weekly activity summaries and aviation color codes
Daily (GVP weekly bulletin + USGS realtime overlay)
Active SIGMET polygons (convective, turbulence, icing, mountain wave, IFR, volcanic ash) inside FIR boundaries
Every quarter hour
Free global hourly forecast (temperature, wind, precipitation, marine, air quality)
On demand per location
Imagery
Sentinel-2 L2A optical + Sentinel-1 RTC SAR via STAC + TiTiler
Per-AOI on demand
Photoreal photogrammetry for major cities
Tile cache shared
Terrain + premium imagery tiles
On user pan
Bing Maps imagery
Base imagery layer
Static
Space
Satellite TLEs (~thousands of objects)
Catalog reloaded periodically
Public ISS tracking API
ISS real-time position
Polled every few seconds
Kp index, GOES X-ray flux, geomagnetic alerts
Every few minutes
Worldwide rocket launch pad catalogue + upcoming launches with windows, rockets, agencies
Every few minutes for upcoming launches; daily for the pads catalogue
Detects when the @TheWhiteHouse channel is actually live (not pre-show) so cinematic mode can hold the camera and embed the broadcast
Every 10 minutes
Intel layers
Daily H3 GNSS interference aggregation
Daily (1-day trailing)
Energy infrastructure (oil, gas, LNG, nuclear, hydro), strategic pipelines, country boundaries
Weekly refresh
Wikipedia
Operational status snapshots for curated strategic pipelines (lead paragraph + infobox status field)
Daily
Country / news / reference
Heads of state and government, parliaments, member-of relations, military stats
Daily
Wikipedia
Current events feed, country reference data, parliament composition scrapes
Every half hour for events; daily for country pages
Country military section (personnel, expenditure, branches)
Weekly
Aircraft, naval, and armor inventories per country
Weekly
GDP, government debt, military expenditure
Daily
USD currency conversion
Hourly
Travel advisories per country
Daily
Per-country internet traffic timeseries + outages, BGP route-leak events
Hourly
Global event database (CAMEO-coded)
Every 15 min upstream
Curated X / Twitter signal feed by handle
Every few minutes
Public Telegram channels
Conflict-zone OSINT (~30 channels, scraped from public preview pages)
Every few minutes
Aggregated RSS news
Country-tagged news headlines, NATO / OPEC / BRICS / G7 / G20 topic feeds
Every few minutes
Per-symbol news for the markets panel; topical feeds for the posture panel
Every few minutes
United Nations daily news feed
Daily
Pentagon daily press releases
Daily
Live news streams (BBC, Sky, France 24, NHK, Al Jazeera, etc.)
Every few minutes
Consolidated sanctions targets (individuals, orgs, vessels)
Daily
Active US Federal Bureau of Investigation wanted-persons list with charges, photos, and field-office attribution
Daily
On-demand and pre-fetched translation of non-Latin signal posts
On demand
Geocoding fallback for free-text place names
On demand
Webcam catalog
Daily
Cyber
Active KEV catalog
Daily
Ransomware leak-site posts
Hourly
Per-country internet censorship measurements
Every few hours
State-attributed APT groups + MITRE ATT&CK enrichment
Weekly
Cyber news RSS
BleepingComputer, The Hacker News, Krebs on Security, Dark Reading
Every few minutes
Markets & alerts
Equity / commodity / FX quotes for the markets panel
Every minute
Air-raid alert state by Ukrainian oblast
Every half minute
UkraineAlarm
Backup air-raid alert source
Every half minute
Israeli air-raid alerts
Every half minute
09

Architecture

A short, high-level sketch

The frontend is Next.js (App Router) with a Cesium globe, React Query for client-side caching, and Zustand for small bits of cross-component state (selections, layer toggles). The backend is Next.js Route Handlers running on Node.

Every upstream data feed is hit by the server, cached briefly, and served from cache to the browser. Multiple users open the same panel and each gets the same cached payload, we don’t fan out per-user upstream calls. Heavy datasets (sanctions, flight history, vessel trails, energy infra) are persisted to disk so a server restart doesn’t cost us a fresh cold fetch.

FrontendNext.js + Cesium + React Query + Zustand
BackendNext.js route handlers (Node.js)
CachingServer-side per-route, mtime-keyed; one upstream call shared across all users
SettingsLayer toggles, graphics preset, and photoreal state are stored on your device only. They are never synced to your account or to other browsers. Mobile has its own dedicated section below for the launch portal and recovery flow.
PrivacyNo third-party analytics; minimal session telemetry kept server-side; we don't sell or share usage
10

API surface

Public read endpoints, rate limits, payload caps

Everything the live globe needs to render is exposed as a public read endpoint. Each carries a per-IP rate limit, a hard ceiling on records returned, and (where applicable) a bbox area cap so a single caller can’t request the whole globe at maximum density. Limits below are starting values; they are tuned from telemetry, not negotiated.

EndpointPurposeRate (req/min)Caps
/api/aisLive AIS vessel positions30limit ≤ 10,000 · bbox area ≤ 5,000 deg²
/api/flightsMilitary ADS-B aggregate60gzipped; rolling 12 h trails
/api/flights-civilianCivilian ADS-B slice (OpenSky)60bbox required · limit ≤ 5,000
/api/signalsX + Telegram + RSS signal pool60gzipped; per-ISO keyed map
/api/patternsCross-layer pattern detectors60free tier redacts subscriber detail
/api/priority-eventsActive and upcoming priority events120small payload, polled often
/api/camerasWebcam catalog30bbox area ≤ 5,000 deg² · limit ≤ 5,000
/api/firesFIRMS thermal anomalies60globally rolling 24 h slice
/api/conflictsCurated conflict-country dossiers60small payload
/api/airdef-alertsIsrael + Ukraine air-defense alerts120realtime; sticky-active window
/api/cablesSubmarine cables + landing points30kind=landings|cables · long edge cache
/api/canal-transitsSuez + Panama daily transit numbers60small payload
/api/marketsEquity / FX / commodity quotes + news60tab=stocks|fx|commodities|news
/api/shipping-lanesStrategic chokepoint catalog (curated)30editorial-curated; long edge cache

A bbox spanning the whole globe (e.g. -180,-90,180,90) is rejected with 400 bbox_too_large on the spatial endpoints. Use viewport-scale bounds; the live client sends bboxes in the 50 – 500 deg² range.

Defensive layers in front of these endpoints: a Cloudflare edge with route-prefix Cache Rules, a same-origin Sec-Fetch-Site gate in the proxy middleware, the per-IP rate limits above, and the response envelope described in the next section so callers can detect partial or stale data programmatically.

11

Response envelope

A standard wrapper around every payload

Every public read endpoint returns the same envelope shape. Legacy top-level keys (ships, flights, signals, …) are preserved alongside data and meta so older clients continue to read what they always read; newer clients should read data.* and consult meta for provenance.

{
  "data": <the payload>,
  "meta": {
    "asOf":      "2026-05-22T18:04:31.000Z",    // upstream sample time
    "fetchedAt": "2026-05-22T18:04:31.214Z",    // when we built the response
    "expiresAt": "2026-05-22T18:05:01.214Z",    // earliest re-poll is useful
    "sources":   ["aisstream.io"],              // origin feeds
    "kind":      "raw",                         // raw | inferred | curated
    "confidence": 0.84,                         // only on inferred / curated
    "truncated":  { "count": 1500, "total": 7203 }
  }
}

The kindfield is the explicit answer to “raw observation vs inference”: raw passthrough feeds carry kind: "raw"; pattern and priority-event outputs carry kind: "inferred"; editorially-shaped datasets (cables, canal transits, the webcam catalog, the outbreak overlay) carry kind: "curated".

truncated is set whenever a hard cap clipped the response (e.g. /api/ais?limit=10000 on a 30,000-ship bbox). Clients can detect this and either tighten the bbox, request a smaller limit, or surface the partial result with a hint. Without it, a partial response is indistinguishable from a quiet world.

Worked example — raw

GET /api/ais?bbox=-7.0,49.0,2.0,52.0
{
  "fetchedAt": "2026-05-22T18:04:31.214Z",
  "ships":     [ … ],                       // legacy top-level
  "data":      { "ships": [ … ] },
  "meta":      {
    "kind":      "raw",
    "sources":   ["aisstream.io"],
    "asOf":      "2026-05-22T18:04:31.214Z",
    "fetchedAt": "2026-05-22T18:04:31.214Z"
  }
}

Worked example — inferred

GET /api/patterns
{
  "patterns": [ … ],                        // legacy top-level
  "cached":   true,
  "data":     { "patterns": [ … ] },
  "meta": {
    "kind":      "inferred",
    "sources":   ["flights","ais","fires","energy-infra","submarine-cables"],
    "asOf":      "2026-05-22T18:03:00.000Z",
    "fetchedAt": "2026-05-22T18:04:31.214Z"
  }
}

Individual Pattern records inside data.patterns carry their own per-entry confidence band when the detector emits one; the envelope-level confidence is reserved for aggregate scores and is omitted on multi-detector responses.

12

Raw vs inferred

What a payload is asserting

Every payload is one of three categories. The category is published on the wire in meta.kind so callers never have to guess.

rawDirect passthrough of upstream sensor / API data. AIS vessel positions, ADS-B aircraft tracks, FIRMS thermal anomalies, RSS / X / Telegram signals, air-defense alert state, market quotes. These payloads do not assert anything beyond what the upstream feed asserts.
inferredOutput of in-process rule-based joins over one or more raw feeds. Pattern detections, priority-event dispatch. These assertions are heuristic, scored, and never authoritative on their own; the rail surfaces them as a starting point for analyst review.
curatedEditorially-shaped data with explicit human review. Submarine-cable geometry, canal-transit numbers, the webcam catalog, the conflict dossier, country briefings, the outbreak overlay. Updated on a slower cadence and traceable to a named source.

The taxonomy is not load-bearing on the live globe (the UI shows the same data either way), but it gives downstream consumers a clean signal for “is this thing authoritative or is this thing a derivation we can second- guess.”

13

Confidence semantics

What the score actually means

Inferred payloads carry a confidencefield on the 0–1 interval. The number is a smoothed function of how many independent detector gates a candidate cleared and by how much it exceeded each gate’s floor. Higher numbers mean “more gates cleared with margin,” not “more probable.”

0.00 – 0.50Weak. A few gates were marginal, or the detection sits close to a known false-positive class. Use as a discovery surface, not a claim.
0.50 – 0.80Moderate. Several gates cleared comfortably. Worth a closer look; cross-reference with other layers before drawing conclusions.
0.80 – 1.00Strong. All gates cleared with margin and the candidate looks like the canonical shape the detector was designed for. Still a starting point for review, never a verdict.
14

Freshness & retention

How fast layers update, and how long we keep things

Each layer has its own freshness budget — how stale a client’s view of it is allowed to be before the next poll fires. Budgets are conservative; the upstream cadence is what actually drives change.

AIS≈ 15 seconds on the wire. Persistent WebSocket; positions are continuous.
Military flights≈ 20 – 30 seconds. ADS-B aggregate from multiple community feeds.
Civilian flights≈ 1 – 2 minutes. OpenSky public snapshot.
Signals (X / Telegram / RSS)≈ 1 – 2 minutes on the slowest path; dedup window 24 h.
Patterns≈ 1 minute. Re-evaluated on every detector cycle.
FIRMS thermal anomalies≈ 5 minutes. Upstream pipeline is hourly per sensor.
Country dossier dataDaily for most fields; weekly for military firepower.

Server-side retention bounds the rolling-window state the detectors and history surfaces rely on. Anything older than the listed window is pruned on a sweep; older points survive only in coarsened form where the layer publishes history.

AIS trails≈ 1 hour at full fidelity. Beyond that, the trail is dropped from the in-memory store.
Flight history≈ 12 hours per airframe; older points coarsened to a sparser sample.
Patterns history≈ 7 days. Drives the public patterns rail and the country-panel history surfaces.
Signal dedup window≈ 24 hours. Same URL or near-duplicate text within the window collapses to one entry.
Country briefingsIndefinite. Each ISO carries one current brief; older briefs are not retained.
Telemetry eventsOperator surface only; not exposed publicly. Bounded by daily rolling JSONL.

Where the upstream feed itself rolls forward (Wikipedia counts ratcheting only upward, FIRMS sensor pipelines going stale for a day), we apply non-regression: a smaller or emptier upstream snapshot does not overwrite a fuller one already on disk unless the reduction is explicitly confirmable.

15

Mobile

How phones are different, and what to do if a session goes bad

The 3D globe is graphics-heavy. On phones, opening it the way you would a normal website would chew through battery, drop frames, and on tighter hardware sometimes terminate the tab mid-load. The mobile experience is designed around three ideas: do not start graphics until you ask for them, default to the safest preset, and give you a one-tap recovery if something ever goes wrong.

Launch portal

Loading the site on a phone shows a static globe placeholder with a Launch Globe button. The 3D engine does not initialize until you tap that button. If you are just passing through, you spend nothing.

Reset settings

The launch portal also has a Reset settings button. It clears your saved layer toggles, graphics preset, and photoreal state on this device. Use it if a previous session left the globe in a state that crashes or stalls. After reset, tap Launch and you are back to safe defaults.

Reset only affects this device and only the SENTINEL settings listed above. It does not log you out, clear any data outside the site, or affect another device you have signed in on.

Default graphics

Phones start at the Low graphics preset for the safest first paint. You can bump it to Medium or High from the Graphics panel inside the layers menu. Higher presets render more terrain detail and a wider visibility ring for distant contacts; lower presets keep the globe responsive on hot or older devices.

Auto recovery

If a session ever ends abnormally, the next visit may automatically fall back to safer defaults so you are not stuck in a loop. If that happens, your manual settings are restored whenever you toggle them again.

Heavy layers

Some layers are heavier than others. Submarine cables, photorealistic 3D buildings, satellite catalogs, and high density imagery are tuned to render lighter on mobile, including hiding when zoomed out far enough that the detail would not be readable anyway. If you want the full desktop experience, open the site on a laptop or desktop.

Performance and data efficiency

The globe is tuned to move less data and use less graphics power than a naive build would. Layers you have turned off do not fetch their backing data in the background. Heavy lists ship a compact form and load full details only when you click an item, so the live aircraft, ship, and satellite feeds stay light. Region scoped feeds send only what is in view, and slow moving data uses caching so a repeat fetch returns a short "not changed" reply instead of the whole payload.

On the graphics side, idle rendering pauses entirely when nothing is moving on the globe so laptops stop spinning their fans, dense icon layers such as cameras draw in a single batched pass, layers that are off release their graphics memory, and several internal render settings scale with the chosen graphics preset to fit integrated GPU budgets. None of this changes what data you can see.

16

Limitations

Where the picture is wrong on purpose

ADS-B coverageVolunteer ground-station networks are sparse mid-ocean and over remote regions; transatlantic and trans-Pacific flights regularly drop off our radar mid-flight.
AIS spoofingVessels can falsify their AIS broadcast or turn the transponder off entirely. The track is what the vessel says, not necessarily what it is.
Trail compactionOlder trail points are progressively coarsened to keep memory bounded, what you see is the most recent track at full fidelity, with older points sampled.
Imagery freshnessSentinel revisits a given location every few days at best; cloud cover frequently drops the usable window further. The latest scene may be days or weeks old.
Pattern false positivesHeuristics aren't classifiers. Every detector has a false-positive rate; the rail is a starting point for analyst review, not a verdict.
Country briefsBriefs reflect the editor's reading of public reporting at a point in time. They go stale. Treat the timestamp on each as the freshness cap.
AIS coverage gapsAIS depends on the vessel broadcasting; coverage is materially thinner in the Black Sea, the Strait of Hormuz approaches, and stretches of the Indian Ocean. Deliberate spoofing is routine in conflict zones.
FIRMS detection floorFIRMS has an intentional minimum-intensity floor below which low-power burns don't qualify as anomalies. Small industrial flares and trash burns sit below the floor by design; this is what keeps the layer signal-heavy.
Routine industrial flaresRefinery and gas-terminal flare-stack burnoff is classified separately as routine industrial activity and excluded from the live patterns rail. Re-promoted to a live alert when intensity spikes well above the site's baseline.
GDELT lagGDELT median lag from event to ingest is around 15 minutes; breaking events surface on the X and Telegram signal feeds first.
Wikipedia revisionsOutbreak case-count tables on Wikipedia occasionally ratchet downward when an editor reverts an over-eager update. We hold a max-floor non-regression so a smaller upstream snapshot does not overwrite a larger one already on disk.
Detectors not yet onA handful of vessel detectors (AIS-off near critical infrastructure, dark rendezvous) are written but gated off behind a feature flag until the OFAC sanctioned-vessel feed lands, which is what gives them the priors they need to stop firing on routine merchant traffic.
17

Credits

Open data and the volunteer networks that feed it

SENTINEL exists because of the public dataset stewards and the volunteer monitoring networks who make their work freely available. Every layer here is rebuildable by anyone with time and a public-data subscription budget. In particular:

  • NASA / NOAA / USGSEarth-observation, weather, seismic, space-weather, hurricane cones
  • Microsoft Planetary ComputerSentinel-1 / -2 STAC + dynamic tiling
  • ESA CopernicusSentinel satellite raw products
  • Open ADS-B aggregator networksVolunteer ground-station ADS-B coverage
  • OpenSky NetworkADS-B fallback coverage
  • Cloudflare RadarPer-country internet traffic timeseries
  • gpsjam.orgDaily GNSS interference aggregation
  • CelesTrakPublic satellite TLEs
  • TeleGeographySubmarine cable map
  • OpenStreetMap contributorsEnergy infrastructure, country boundaries
  • OpenSanctionsConsolidated sanctions data
  • CISA, MITRE, ransomware.liveCyber threat intel
  • GDELT ProjectGlobal event coding
  • Wikipedia / WikidataCurrent events, leaders, country reference data
  • NWS / NHC / VAACsActive weather alerts, hurricane cones, volcanic ash advisories
  • IMF PortWatchDaily chokepoint transit counts (Suez, Panama, etc.)
  • NGA Maritime Safety InformationNAVAREA / WWNWS broadcast warnings
  • Public Telegram channelsConflict-zone OSINT signals

Built by Axon (Will Nickolson), see the badge in the top-left corner of the globe for contact links.

UNCLASS · OSINT · public documentation · last updated with each deploy