Archived: the classic site (v1), frozen 29 Oct 2026. Kept for reference only: its data stopped updating and some functions may not work. Go to the current site →
Radar CFAR ship detection on water; optical ship detection plus berth occupancy along mapped piers for moored warships; aircraft as change vs a multi-scene median on mapped aprons. Match detections to AIS/ADS-B positions within distance/time windows.
Next pre-alpha. One new all-weather signal, one analytic win, and the two things needed before anything goes public.
shippedM · 2–4 daysneeds: EARTHDATA_TOKEN secret
Night lights (VIIRS Day/Night Band)
Sees blackouts, blacked-out bases, new lit construction and front-line activity every night, at any latitude and through most smoke; would have shown the Crimea blackout directly.
Plan
Sources
NASA Black Marble VNP46A1 daily (LAADS / LANCE NRT), VIIRS DNB
Method
Daily radiance per site (sum and median in the box, cloud- and moon-masked), 30-day rolling baseline, z-score anomaly; flag drops > 50% (blackout) and new persistent lit area. Region-scale boxes for Crimea, Gaza, Lebanon, Sudan, Ukraine front.
Outputs
data/nightlights/<site>.csv, nightly before/after plates, flags into the alert stream
Done when
Reproduces the 23–24 Oct Crimea blackout and the Gaza/Lebanon baselines; runs nightly unattended.
Risks
NASA Earthdata login token needed (free); moonlight and snow-glare corrections; 500 m pixels are coarse for single bases.
in-progressS · ≤1 day
Dark-ship flags (radar ship with no AIS)
A ship the radar sees that is not broadcasting is a story in itself — sanctions evasion, warships, smuggling.
Plan
Sources
Sentinel-1 detections, AIS log
Method
For each radar ship detection, search AIS within 500 m and ±30 min of the pass. No match and length > 40 m → dark candidate. Suppress known fixed objects (persistent at the same spot in > 70% of passes).
Outputs
dark flag on objects.csv, per-site dark count, plate colour coding
Done when
AIS logging runs continuously; one week of dark-ship candidates reviewed by hand at Hormuz, Bandar Abbas, Tartus, Hodeidah.
Risks
AIS logging is sampled (~50 min of each hour) — gaps would create false "dark", so detections without AIS heard in the window are marked NO-COVERAGE, not dark.
Depends on
Ship & aircraft counts with AIS / ADS-B identities
shippedS · ≤1 day
Alerts (push / email)
Stop polling; hear about flags within an hour.
Plan
Sources
FIRMS watch, night lights, detections, dark ships
Method
One alert rule file (site, signal, threshold, quiet hours). A GitHub Action posts new flags to email and a push channel (ntfy.sh topic or Slack/Signal webhook), de-duplicated per site per 6 h.
A FIRMS flag at any site reaches Kevin's phone within one run of the watch.
Risks
Alert fatigue — start with Flagged-only and per-site mute.
shippedS · ≤1 day
Provenance — hash and timestamp every drop
Proves what we knew and when — matters if a finding (e.g. the Wainwright timing) is challenged.
Plan
Method
On every commit that adds data or a SITREP, write a manifest of SHA-256 hashes; timestamp it with OpenTimestamps (Bitcoin, free) and optionally anchor the daily root hash on Algorand. Verification script and a public "proofs" page listing each SITREP's hash and anchor.
SITREP 001–004 hashed and timestamped retroactively; new SITREPs stamped automatically.
Risks
Algorand anchoring needs a funded account; OpenTimestamps needs no account.
v0.9.0
Change, baselines, review
See through cloud and polar night; know what normal looks like; put a human decision on every published flag.
plannedL · 1–2 weeks
Radar change detection (Sentinel-1)
The only way to watch Arctic/NWS sites until February and cloudy sites year-round.
Plan
Sources
Sentinel-1 RTC (same orbit stacks)
Method
Group passes by relative orbit; log-ratio and multi-temporal coefficient-of-variation per pixel against a 6-pass baseline; flag compact changes (new structures, vehicles parks, vessels, burn/ground scars). Optional: coherence from SLC via ASF HyP3 (free) for construction and earthworks.
Outputs
change maps per site, flagged blobs with area, plates
Done when
Detects known changes (Wainwright burn scar, Hormuz shipping shifts) and stays quiet at static sites for a week.
Risks
Speckle; orbit geometry differences; snow and freeze/thaw signals in the Arctic.
plannedM · 2–4 days
Trend lines & 12-month baselines
"Unusual" should mean unusual for that site and season.
Plan
Method
Backfill 12 months of counts (ships, aircraft, FIRMS, night lights) per site; per-site seasonal median and percentile bands; frontend sparkline and chart per site; flags use percentile, not fixed thresholds.
Outputs
data/baselines/<site>.json, site page charts
Done when
Every active site page shows a 12-month line with today's value against its band.
Risks
Compute time for backfill (run in chunks); repo size — store aggregates, not imagery.
Depends on
Ship & aircraft counts with AIS / ADS-B identities, Night lights (VIIRS Day/Night Band)
plannedM · 2–4 days
Analyst review queue
Every published claim traceable to a human call; builds labelled data to cut false positives.
Plan
Method
Private review page lists new flags/detections with plate thumbnails; confirm / dismiss / note. Decisions stored as a CSV committed to the repo (or Artifact database); detectors learn per-site suppressions from dismissals.
Outputs
data/review/decisions.csv, review page, suppression list
Done when
All flags in a week reviewed in < 20 minutes total.
Risks
Static site cannot write — needs a small backend (VPS) or GitHub API form.
Depends on
Alerts (push / email)
v0.10.0
Warnings & interference
Signals that tell us where to look before something happens, and first-pass news correlation without manual searching.
researchM · 2–4 days
GPS jamming & spoofing map
Strong, under-used indicator around the Baltic, Kaliningrad, Black Sea and Gulf.
Aggregate share of aircraft with degraded navigation integrity per H3 hex per day; flag hexes above threshold near watchlist sites. Needs all aircraft, not just military → bulk daily ADS-B dumps.
Outputs
data/gnss/<date>.csv, daily map, site flags
Done when
Reproduces known jamming areas (Kaliningrad, eastern Med) for a test week.
Risks
Data volume (daily global dumps are GBs) — likely a VPS job.
plannedM · 2–4 daysneeds: FAA NOTAM API key (optional)
Navigation warnings & NOTAMs
Live-fire areas, missile tests and closures are announced in advance — they tell us where to look.
Plan
Sources
NGA Maritime Safety Information broadcast warnings (NAVAREA IV/XII, HYDROLANT/HYDROPAC), NAV CANADA / FAA NOTAMs
Method
Pull warnings daily, parse coordinates and dates, intersect with watchlist boxes and zones; show active warnings on site pages and in SITREPs.
Outputs
data/warnings/<date>.json, site-page panel
Done when
Active warnings appear for Black Sea, Baltic and Atlantic exercise areas.
Risks
Free-text coordinate parsing; FAA NOTAM API needs a key.
plannedM · 2–4 days
Automated first-pass news correlation
Today the CORRELATED / PARTIAL / NOT IN NEWS tags are done by hand.
The Terms can't take effect until the open [DECISION]/[TBD] items are settled and a lawyer has read them.
Plan
Method
Set the effective date; add a contact address for licensing, verification and legal notices; confirm aisstream.io redistribution terms before offering AIS-derived feeds; decide on a French version; legal review.
Outputs
docs/TERMS.md v1.0
Done when
No [DECISION] or [TBD] markers remain and the draft banner comes off.
plannedS · ≤1 day
Terms: public-facing cleanup
The draft on the site shows internal notes ("Items marked [DECISION] need Kevin's call", amber markers).
Plan
Method
Strip internal notes and markers from the rendered page (the repo copy keeps them), or remove them when v1.0 lands.
Outputs
terms.html
Depends on
Terms: open decisions
shippedS · ≤1 day
Privacy policy
Required by Terms section 16 before any account or verification data is collected. Draft placeholder v0.1 (PIPEDA / Alberta PIPA) is on the site; open decisions and legal review remain.
Plan
Outputs
docs/PRIVACY.md, privacy.html
Done when
Published and linked from the footer and the Terms.
plannedS · ≤1 day
Attribution on every output
Terms section 9 credit line plus required Copernicus / NASA / OSM credits on every SITREP, chart and imagery export.
Plan
Method
Generate the credit strings in the pipeline and stamp them on plates, PDFs and exports.
Outputs
plates, SITREP PDFs, exports
plannedS · ≤1 day
ODbL-derived datasets kept separate
Databases derived from OpenStreetMap or adsb.lol must carry ODbL terms, not RWI's non-commercial terms.
Plan
Method
Publish ODbL-derived tables in their own folder with an ODbL notice; keep RWI value-added layers apart.
Outputs
data/odbl/*, licence notices
in-progressL · 1–2 weeks
Journalist & student accounts
The free licence (Terms section 5) needs signup, verification and personal API keys.
Plan
Method
Signup with verification evidence (press card, association membership, newsroom email, published work; student email or enrolment), annual re-verification, personal API keys with rate limits, commercial-licence enquiry path.
Outputs
accounts, API keys
Depends on
Privacy policy, Terms: open decisions
v0.11.0
Extra sensors & coverage
Fill remaining sensor gaps and extend the base register beyond Canada.
plannedS · ≤1 day
Seismic events
Large explosions and nuclear tests (Punggye-ri) show up on seismometers.
Plan
Sources
USGS earthquake API (free), EMSC
Method
Pull events daily; shallow events near watchlist sites flagged; add Punggye-ri as a site.
Outputs
data/seismic/*.csv, flags
Done when
Feed runs daily; historic test (2017) reproduced as a check.
researchM · 2–4 days
Industrial activity from air quality (Sentinel-5P)
NO₂/SO₂ over refineries, LNG and smelters shows shutdowns and restarts after strikes.
Weekly mean column over infrastructure sites vs baseline; flag sustained drops.
Outputs
data/s5p/<site>.csv
Risks
~5 km pixels — only big facilities; wind and cloud effects.
plannedS · ≤1 day
Satellite pass prediction
Board shows when the next usable image of each site is due, so ad hoc requests have an honest ETA.
Plan
Sources
CelesTrak TLEs for Sentinel-1/2, Landsat, NOAA-20/21, Suomi-NPP; Open-Meteo cloud forecast
Method
Propagate orbits (skyfield) for 72 h, intersect with site boxes and swath widths; add cloud forecast.
Outputs
next-pass table per site
plannedL · 1–2 weeks
Coverage beyond Canada
Full registers for the US, NATO allies, Russia and China, built and verified the same way as Canada.
Plan
Method
Source lists (government, OSM military=*, Wikidata), place boxes, verify every box against first imagery, tag region/CCMD/country/program; roll out in batches of ~50.
Outputs
watchlist additions with verified flags
Risks
Watchlist size vs Actions run time — move heavy jobs to the VPS.