Inspiration

Most people have never heard of AIS, the Automatic Identification System. It is a radio signal commercial ships are supposed to broadcast all the time: their name, position, speed, and heading. An international safety law called SOLAS even requires many ships to keep it on. That signal is how coast guards, ports, and tracking maps see traffic on the ocean.

The problem is simple. When a ship turns AIS off, the vessel does not leave the water. It only leaves the map. That silence is where search and rescue, illegal fishing enforcement, trafficking investigations, and sanctions monitoring all get harder. We built Aegis for that moment: the second a ship goes dark.

What it does

Aegis is a maritime operations dashboard that watches live AIS and keeps going after the signal stops. Operators can filter to ships with no AIS, pick a silent contact, and run a 600-path Monte Carlo forecast from its last known position, heading, and speed, plus wind, currents, waves, and coastline. Short gaps stay tight. Long gaps open into much larger search areas with lower confidence. Aegis also layers ports, fishing activity, satellite ship detections, and world search so investigators can move from a missing contact to a usable picture fast.

How we built it

We built Aegis in Python with a Leaflet dashboard on top. Live AIS comes from AISStream globally, with Digitraffic as a regional fallback for Baltic waters. Dark-vessel prediction runs a deterministic Monte Carlo model constrained to navigable water from OpenStreetMap tiles. Wind comes from NOAA GFS, currents and waves from Copernicus Marine, ports from the NGA World Port Index, and optional fishing and SAR context from Global Fishing Watch. Under the hood, Kalman filtering and geometry-only association keep tracks continuous without trusting vessel identity.

Challenges we ran into

Live global AIS is noisy and expensive to render. A whole-world stream can starve a single dashboard process, so we had to cap the live layer and use regional boxes instead of one giant subscription. AISStream also went down during our demo window, so we switched the recording to Digitraffic while keeping the same prediction engine. Making long AIS gaps look honest was hard too: an 11-minute silence and a 32-hour silence should not feel the same, and the model had to widen uncertainty instead of pretending it still knew.

Accomplishments that we're proud of

We turned a dark AIS contact into a full operator workflow: silence detection, terrain-aware trajectories, Monte Carlo scenarios, confidence regions, and a one-paragraph brief. The comparison between short and long AIS gaps is especially clear. We also fused a lot of real public evidence into one place instead of mocking the ocean.

What we learned

Dark-vessel prediction is only useful if it stays humble. Confidence has to fall as silence grows. We also learned that maritime software is as much about data plumbing and attribution as it is about the filter math. Getting NOAA, Copernicus, OSM water masks, and live AIS to agree in one UI took as much work as the tracker itself.

What's next for Aegis

Next we want stronger multi-sensor fusion with radar and satellite detections, better operator alerting, and a production path for coast guard and fisheries desks. Longer term, Aegis should help teams decide where to look first when a ship chooses to go dark.

FYI

This idea is also extremely versatile. It can be an: SaaS, API/SDK/CLI, Government, Open Source, Free

Built With

Share this project:

Updates

Submission history