Skip to content

DeluxeRaph/SeaWatch

Repository files navigation

SeaWatch

Mesh-networked smart buoys that detect and classify vessels using computer vision and relay sightings over LoRa — no AIS, no internet, no cooperation from the target.

Built at the Albacore Maritime Defense Hackathon | March 27-29, 2026 | Philadelphia


The Problem

Maritime domain awareness depends on AIS — a system vessels can simply turn off. Dark ships running without AIS are invisible, enabling smuggling, sanctions evasion, illegal fishing, and hostile operations. In 2025, maritime cyber incidents jumped 103% and 24,000+ vessels were affected by GPS manipulation.

The Solution

Drop a string of SeaWatch buoys across a chokepoint, harbor approach, or contested waterway. Each buoy:

  1. Sees — Raspberry Pi 5 + camera runs YOLOv8 vessel detection and classification, with optional SAHI sliced inference for small and distant targets
  2. Locates — Dual GPS receivers provide position and anti-spoofing cross-checks
  3. Reports — Meshtastic LoRa relays detections, heartbeats, alerts, and direct paired-node messages with no cellular or internet
  4. Self-heals — Mesh auto-routes around failed/jammed nodes, buoys self-assign network roles

Cost per buoy: ~$150. Coverage per chain: ~30 km. No infrastructure required.

Architecture

  [Camera + Pi 5]──USB──[ThinkNode M1 LoRa+GPS]
         │                        │
         │ CV Detection           │ 915MHz LoRa
         │                        │
         ▼                  ══LoRa Mesh══
   {"vessel_class"        │    │    │
   :"container_ship",     Buoy  Buoy  Relay
   "confidence":0.87}        │    │    │
                          ══LoRa Mesh══
                                 │
                          [Base Station]
                          [Live Dashboard]

Key Features

  • 10-class vessel detection — YOLOv8/SAHI classifies: container ship, bulk carrier, tanker, cruise ship, ferry, warship, fishing boat, sailboat, small boat, tug boat
  • Dark ship alerting — Cross-reference CV detections with AIS; flag vessels cameras see but AIS doesn't
  • Anti-tamper detection — Buoy silence patterns reveal intrusion paths; GPS drift detection; noise floor monitoring
  • Self-configuring mesh — Buoys auto-assign ROUTER/CLIENT roles as the network grows
  • Dual GPS anti-spoofing — Two independent GPS receivers per buoy; divergence = spoofing alert
  • Direct ThinkNode payloads — Compact JSON payloads can be sent as direct Meshtastic messages to a paired node
  • Ping / pong link checks — Direct-message ping/pong helpers support paired-node health checks

Hardware (Per Buoy)

Component Purpose Cost
Raspberry Pi 5 (8GB) Edge CV inference $80
Arducam IMX477 + 16mm lens Long-range camera (~1-2km detection) $48
ELECROW ThinkNode M1 LoRa mesh + GPS (Meshtastic) $35
VK-162 USB GPS Redundant GPS (anti-spoof) $12

Quick Start

git clone https://github.com/DeluxeRaph/gpsstopper.git
cd gpsstopper
pip install -e ".[dev]"

# Fastest full demo
seawatch simulate

# Dashboard only (base station mode)
seawatch dashboard --serial-port /dev/ttyACM0

# Full buoy mode (camera + detection + mesh + heartbeats)
seawatch run --buoy-id BUOY-01 --serial-port /dev/ttyACM0 --sahi

Open the dashboard at http://localhost:5000 when running the simulator locally.

Current Runtime

  • seawatch run — Full buoy runtime
  • seawatch dashboard — Base-station dashboard + optional mesh receiver
  • seawatch simulatedemo, random, and interactive modes

Detection Output

Each YOLO/SAHI detection currently carries:

  • vessel_class
  • confidence
  • bbox
  • bbox_area_pct
  • bearing_estimate
  • timestamp

The detection taxonomy is:

  • container_ship
  • bulk_carrier
  • tanker
  • cruise_ship
  • ferry
  • warship
  • fishing_boat
  • sailboat
  • small_boat
  • tug_boat

Mesh Reporting

SeaWatch currently supports two reporting shapes:

  1. SeaWatch mesh protocol
    • DET, HB, ROLE, and ALERT pipe-delimited messages for the SeaWatch mesh/dashboard path
  2. ThinkNode direct payload
    • Compact JSON for paired-node direct messages

Example direct payload:

{"buoy_id":"BUOY-01","ts":1711645221,"lat":39.88,"lon":-75.1,"vessel_class":"container_ship","confidence":0.92,"range_band":"close"}

The direct payload intentionally uses a coarse range_band (close / far) instead of pretending to know exact range in meters from a single bounding box.

Direct Node Messaging

The ThinkNode path supports direct Meshtastic messages to a specific peer node, not just channel broadcast.

That currently includes:

  • direct JSON detection payload sending
  • direct ping / pong helpers

The ping listener accepts PING, Ping, or ping, and replies with:

PONG|<timestamp>

Docs

  • PLAN.md — Full project plan, workstreams, and step-by-step implementation guide
  • SYSTEM_SPEC.md — Current code-derived system spec
  • ROLES.md — Team roles, tech stack, and how to contribute
  • TASKS.md — Granular task board, cloud dev setup, sprint schedule
  • BOM.md — Bill of materials — what we have, what's ordered, what we still need
  • docs/ — Setup guides and reference

Team

Built at the Albacore Maritime Defense Hackathon, 23rd St Armory, Philadelphia

About

Mesh-networked smart buoys that detect and classify vessels using computer vision and relay sightings over LoRa — no AIS, no internet, no cooperation from the target.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors