← Back to projects

Picket

1st place · Durham Build Day
  • JavaScript
  • Python
  • AIS (aisstream.io)
  • EMODnet bathymetry
  • Hackathon

Overview

Early warning for subsea cables. A picket is the lookout ship posted ahead of the fleet; this one watches the cables. Picket reads ship-tracking (AIS) data and flags vessels whose behaviour threatens undersea power, telecom and gas links — before an anchor hits the seabed. Built at Durham Build Day in October 2026, where it won 1st prize out of roughly 120 builders across 32 teams.

The problem

Dragged ship anchors cause around 60 subsea cable faults a year, about 30% of all incidents (ICPC). In the Baltic, the Balticconnector gas pipeline and telecom cables (Oct 2023, ~€35–40m to repair) and the Estlink 2 power cable (Dec 2024, €50–60m) were both found damaged only after the link failed — yet the warning signs, such as a ship slowing sharply near a cable in shallow water, were visible in public AIS data beforehand.

What it does

  • Scores every AIS update for each ship against every nearby cable, giving a level (Normal → Low → Moderate → High), a one-sentence reason and a recommended action
  • Spots the anchor-drag pattern: a ship slowed to 60–80% of its planned speed or less for 20 minutes, in water shallow enough for an anchor to reach the bottom, on course to cross a cable within the hour
  • Flags ships anchored inside a cable’s protection zone (within 1.5 km, in reachable water) as High
  • Weighs water depth — slowing in 40 m of water is a threat; in 400 m it is not, because an anchor can’t reach the cable
  • Shows the window to act: on the reconstructed Eagle S case study (Gulf of Finland, 25 Dec 2024) the engine raises High before the Estlink 2 failure, with the lead time computed by the engine rather than scripted

Two modes

  • Demo — five scenarios (control, planned crossing, off-route along the cable, loitering with AIS gone quiet, and the Eagle S case study), a scrubbable timeline with markers wherever the danger level changes, and a sensitivity slider that rescores the whole timeline live
  • Overview — about 200 simulated ships on real North Sea and Baltic shipping lanes, with a ranked watch list filterable by sensitivity, cable type, cable owner and ship flag

How it works

  • The simulator emits messages in exactly the aisstream.io PositionReport / ShipStaticData format and the engine reads only those, so swapping in the live feed changes the source, not the logic — a connectivity script already receives 900+ live North Sea position reports in 30 seconds
  • Each scenario is fully simulated and scored on load, then played back, so scrubbing and sensitivity changes are instant
  • Risk factors: distance to cable, deviation from planned route, speed vs plan, loiter time, AIS gaps, the anchor-drag pattern (scored on time to the next cable crossing) and anchor reach from water depth
  • Levels rise immediately and only drop after five minutes clearly below the threshold
  • Cable routes from the TeleGeography Submarine Cable Map (power and gas links hand-drawn and marked approximate); depths from EMODnet Bathymetry, sampled once and saved so everything except map tiles works offline
  • No build step — a plain JavaScript frontend with Python scripts to rebuild the baked data; mobile-friendly with a bottom drawer

Honesty & limits

All ships on screen are simulated, and the page says so. The Eagle S track is reconstructed from public reporting: event times are as reported, positions and speeds approximate. Shore-based AIS has coverage gaps, and the model doesn’t yet account for cable burial depth, seabed type or weather.

Next

  • Live mode: a small Python relay for aisstream.io feeding the same engine
  • Operator-uploaded cable routes and per-cable protection zones
  • Weather as a factor, satellite AIS, and alerts to control rooms