Skip to content

Oil Watch

Oil Watch turns satellite data (SAR) into ground truth on oil-shipping chokepoints.

Core trick

Detects ships in Sentinel-1 radar imagery, masks fixed islands and rigs, then has Claude verify each candidate detection.

Tags

Description

Oil Watch turns satellite data (SAR) into ground truth on oil-shipping chokepoints. Roughly a fifth of the world's oil moves through the Strait of Hormuz and when it's disrupted, prices move globally but traders, insurers and governments are stuck reading rumor, social media, and AIS transponder data that ships switch off exactly when it matters most. Oil Watch pulls free Sentinel-1 synthetic-aperture radar (which sees through clouds, darkness, and "dark" vessels), detects ships, has Claude verify each detection, and filters out fixed features like islands and rigs. The result is an imagery-grounded read of vessel traffic over the strait's closure, overlaid with Brent crude prices and a sourced news timeline that you can act on.
rishimadhok/hormuz-vessels★ 13 forksPythonCreated Jun 13, 2026 · last push Jun 13, 2026

README excerpt

# Strait of Hormuz — Vessel-Traffic Detection from Sentinel-1 SAR

**Live demo:** https://hormuz-vessels-demo.vercel.app

A **multi-intelligence platform** for the Strait of Hormuz that fuses three open signals
into one trader-facing view: **satellite** (detected vessel traffic), **market** (Brent/WTI
crude), and **news/OSINT** (sourced closure headlines). Built for oil/commodity desks who
want an independent, imagery-grounded read on whether ships are actually moving through the
chokepoint — not rumor.

## One-command rerun

```bash
pip install -e .                              # into a Python 3.12 venv at ./.venv
echo 'ANTHROPIC_API_KEY=sk-ant-...' > .env    # only needed for the analyst brief
./run_all.sh "56.0,26.2,56.9,26.9" 2026-01-09 2026-06-11
```

That runs the whole pipeline on the given bbox + date range — detect → temporal-persistence
filter → coverage normalization → news feed → Opus analyst brief → stage web artifacts —
and prints how to preview (`cd web/public && python -m http.server 8765`) or deploy
(`cd web/public && vercel deploy --prod`). Sentinel-1 needs **no credentials**; only the
optional brief step uses an Anthropic key.

## What it does

- **Detect** — pulls free **Sentinel-1 SAR** GRD from the Microsoft Planetary Computer
  (anonymous), runs a classical **CA-CFAR** ship detector on VH backscatter with
  land/island masking. No credentials.
- **Filter fixed features** — a **temporal-persistence** test flags returns that recur at
  the same coordinate

Team