Geopolitical intelligence — chokepoint monitoring and dark fleet tracking
How intelligence analysts, think tanks, and policy teams use NTHMAP to monitor strategic chokepoints, sanctions enforcement, and dark fleet activity.
Global commerce runs through a small number of maritime chokepoints. A disruption at any of the top 8 — Hormuz, Malacca, Suez, Bab-el-Mandeb, Bosphorus, Panama, Denmark, Cape of Good Hope — has first-order effects on commodity prices, second-order effects on currency markets, and third-order effects on national security planning.
NTHMAP gives intelligence teams a live, queryable view of those chokepoints and the vessel flows through them.
The eight strategic chokepoints
NTHMAP tracks these as a distinct layer with live vessel counts, average speeds, and status flags:
| Chokepoint | Region | Daily oil flow | Daily LNG flow | Strategic note |
|---|---|---|---|---|
| Strait of Hormuz | Middle East | ~20 MMbpd | ~30% global | Iran/Oman border |
| Strait of Malacca | Southeast Asia | ~16 MMbpd | ~20% | China import route |
| Suez Canal | Middle East/Mediterranean | ~9 MMbpd | ~10% | Egypt |
| Bab-el-Mandeb | Red Sea | ~6 MMbpd | — | Yemen, Houthi threat |
| Bosphorus | Turkey | ~3 MMbpd | — | Russian crude out |
| Panama Canal | Central America | ~1 MMbpd | ~5% | Drought-dependent |
| Danish Straits | Baltic | ~3 MMbpd | — | Russian crude out |
| Cape of Good Hope | South Africa | rerouting dependent | — | Red Sea bypass |
Each has a status field: Normal, Congested, Alert, or Closed. The status is computed hourly from live vessel speed aggregates vs a reference "normal" speed, plus manual overlay for sanctions/conflict zones.
Monitoring dashboard
The simplest useful deployment — a read-only wallboard in a policy office:
# Run every 5 minutes
nthmap chokepoints list --format json | \
jq -r '.[] | "\(.name | ascii_upcase): \(.status) — \(.vessels_count) vessels, \(.avg_speed_kt)kt (normal \(.normal_speed_kt))"'
Output:
STRAIT OF HORMUZ: Normal — 47 vessels, 11.2kt (normal 12)
STRAIT OF MALACCA: Normal — 38 vessels, 13.8kt (normal 14)
SUEZ CANAL: Normal — 22 vessels, 7.9kt (normal 8)
BOSPHORUS: Normal — 14 vessels, 5.8kt (normal 6)
PANAMA CANAL: Congested — 18 vessels, 4.9kt (normal 5) — Extended wait times 18-24hrs due to low water levels
DANISH STRAITS: Normal — 28 vessels, 10.6kt (normal 11)
CAPE OF GOOD HOPE: Alert — 31 vessels, 13.1kt (normal 14) — Increased routing via Cape due to Red Sea avoidance
GULF OF ADEN: Alert — 19 vessels, 15.2kt (normal 13) — Vessels transiting at high speed. Military escort recommended.
That output is the single most information-dense view of global maritime stress you can get in 2 seconds.
Detecting behavioral shifts
The most useful intelligence signal from NTHMAP isn't "count of vessels" — it's changes in behavior.
Example 1: Red Sea avoidance
In late 2023 / 2024, traffic through the Red Sea collapsed as vessels rerouted around Africa. A NTHMAP query that would have surfaced this in near-real-time:
# Vessels in the Red Sea southern approach
RED_SEA=$(nthmap vessels list --bbox 41,10,44,16 --format json | jq length)
# Vessels rounding the Cape of Good Hope
CAPE=$(nthmap vessels list --bbox 14,-40,25,-32 --format json | jq length)
# Ratio (lower = more avoidance)
python -c "print($RED_SEA / $CAPE)"
When the Red Sea-to-Cape ratio drops below its rolling 14-day average by 30%, that's the avoidance pattern in progress. Analysts saw this lag the news cycle by weeks during the Houthi attacks of 2024.
Example 2: Russian oil rerouting
Watch Russian-origin crude traffic move from the Danish Straits/Baltic ports toward the Bosphorus and Black Sea after the G7 price cap:
# Baltic crude exports (Primorsk area)
nthmap vessels list --bbox 27,59,30,61 --types "Crude Tanker" --min-load 80
# Russian Black Sea crude exports (Novorossiysk)
nthmap vessels list --bbox 37,44,39,45 --types "Crude Tanker" --min-load 80
Absolute counts matter less than the ratio over time.
Dark fleet adjacency
NTHMAP does not directly detect "dark" vessels (ships broadcasting no AIS). But it does detect dark-fleet adjacent behavior:
- AIS gaps — a ship that was transmitting, then disappeared, then reappeared hundreds of miles away in a different configuration
- Flag-of-convenience patterns — clusters of vessels flagged to sanctioning-friendly jurisdictions (Cameroon, Comoros, Panama)
- Unexplained loiter — vessels staying at specific coordinates for extended periods without a port call
All three patterns are queryable via the API with a bit of client-side analysis. Enterprise customers get pre-computed dark-fleet indicators; other customers can build their own.
Sanctions enforcement research
A common research question: "which vessels have loaded in Primorsk, disappeared from AIS, and reappeared in Indian ports?"
NTHMAP doesn't answer this directly (yet), but the building blocks are there:
# Step 1: Vessels that visited Primorsk area
nthmap vessels list --bbox 27.9,59.9,28.5,60.1 --format json > primorsk-calls.json
# Step 2: 24 hours of track for each
for mmsi in $(jq -r '.[].mmsi' primorsk-calls.json); do
nthmap vessels track $mmsi --format json > "tracks/$mmsi.json"
done
# Step 3: Detect AIS gaps > 6 hours (proxy for deliberate disabling)
python detect-gaps.py tracks/
Phase 3 of NTHMAP adds SAR-based dark detection, which fills in the gaps.
Use in academic research
Several university teams use NTHMAP for published research:
- MIT Sloan — pricing efficiency of shipping markets
- RUSI — sanctions evasion patterns
- LSE — food security and grain flow resilience
- Columbia SIPA — climate risk and maritime transit
Academic access is available at cost for peer-reviewed research. Email research@nthmap.com.
MCP for intelligence agents
A particularly powerful pattern: give an AI agent access to NTHMAP MCP tools and ask it open-ended questions:
Analyze the state of the Russia-China energy trade this week. Include physical flows via NTHMAP data.
The agent can:
- Query
flow_analysis(region="Asia", commodity="Crude Oil")for inbound crude to Asia - Query
list_infrastructure(types=["oil_pipeline"])for ESPO and Power of Siberia - Query
list_events(bbox=[60,40,140,75])for any recent disruptions - Cross-reference with news/other intelligence the agent has access to
- Produce a briefing
This is what "AI agents with real-world context" actually looks like in practice. See the MCP documentation for setup.
Disclaimers
NTHMAP data is aggregated from public and licensed sources. It is not:
- A classified intelligence product
- A military ISR replacement
- A sanctions screening tool (does not match against OFAC SDN lists)
- An operational targeting system
It is a public-source intelligence aggregation platform for policy analysts, researchers, and commercial risk teams.
Getting access
Open-source intelligence teams: launch the app and use the Pro tier. Government, think tank, or academic use cases: email intel@nthmap.com to discuss licensing.