Engineering · 6 min

AIS dwell-time alerts: catching vessels that loiter

Vessels parked over a subsea cable, idling near a sanctioned port, or backed up at a chokepoint are the actually-useful AIS signal. Here's how we wire dwell-time alarms.

2026-05-25

AIS — Automatic Identification System — is the global vessel-tracking protocol. Every commercial ship broadcasts its position every few seconds. That sounds great, except: there are ~70,000 active AIS-equipped vessels at any moment, and “position” alerts on their own are useless. Of course the ship is at the port. Of course it's in the shipping lane.

What you actually care about

You care about a vessel that's not moving when it should be. A container ship parked at LA/Long Beach for three days during a strike. A tanker idling off the coast of Iran when it has an EU destination on its AIS. A research vessel hovering over a subsea cable for four hours.

That signal is “dwell-time” — how long a vessel has been inside a watch zone with low or zero speed-over-ground.

How Augur wires it

Watch zones support a dwell_minutes threshold. Set it to null and the zone fires on first entry (default behaviour). Set it to 240 and Augur waits for the vessel to be inside the polygon for 4 hours of cumulative AIS reports before firing.

The dispatcher uses an augur_zone_dwell table keyed on (zone_id, vessel_mmsi) to persist first-seen timestamps across runs. Vessels that exit the zone clear their entry. Vessels that loiter trip the alert exactly once, with the cumulative dwell duration baked into the payload.

Real-world examples

  • Chokepoints (Suez, Hormuz, Panama) — dwell ≥ 4h flags slowdowns.
  • Subsea cable corridors — dwell ≥ 30m flags suspicious station-keeping.
  • Shadow-fleet AIS spoofing — dwell at a sanctioned port flags compliance risk.
  • Port of Shanghai — dwell ≥ 12h flags congestion before bookings get stuck.

Wire it under the polygon-shape watch zone on the dashboard. Set a dwell value, set a severity threshold, send to ops Slack. That's the entire control surface.

← Back to blog · Start free