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
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.
Drop a string of SeaWatch buoys across a chokepoint, harbor approach, or contested waterway. Each buoy:
- Sees — Raspberry Pi 5 + camera runs YOLOv8 vessel detection and classification, with optional SAHI sliced inference for small and distant targets
- Locates — Dual GPS receivers provide position and anti-spoofing cross-checks
- Reports — Meshtastic LoRa relays detections, heartbeats, alerts, and direct paired-node messages with no cellular or internet
- 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.
[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]
- 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
| 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 |
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 --sahiOpen the dashboard at http://localhost:5000 when running the simulator locally.
seawatch run— Full buoy runtimeseawatch dashboard— Base-station dashboard + optional mesh receiverseawatch simulate—demo,random, andinteractivemodes
Each YOLO/SAHI detection currently carries:
vessel_classconfidencebboxbbox_area_pctbearing_estimatetimestamp
The detection taxonomy is:
container_shipbulk_carriertankercruise_shipferrywarshipfishing_boatsailboatsmall_boattug_boat
SeaWatch currently supports two reporting shapes:
- SeaWatch mesh protocol
DET,HB,ROLE, andALERTpipe-delimited messages for the SeaWatch mesh/dashboard path
- 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.
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>
- 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
Built at the Albacore Maritime Defense Hackathon, 23rd St Armory, Philadelphia