I built an iOS chartplotter for my 1996 catamaran while crossing 400nm of open ocean
My boat is a Prout Snowgoose 37 Elite, built in 1996. The Raymarine ST60+ instruments and ST8000 autopilot on board are over 20 years old. A full replacement with modern gear would run about $40,000. The Mediterranean chart pack alone is around $400.
I built my own chartplotter instead. iPhone and Apple Watch front end, talking to the original 20-year-old hardware. Total new hardware cost: $120, for a galvanically-isolated SeaTalk1↔USB bridge (gadgetpool.eu) plugged into a Raspberry Pi 3+ I had lying around. The Pi runs SignalK, an open marine data bus.
I call it vibe sailing. You vibe code while you sail. Sometimes the boat steers itself in the wrong direction.
The moment it almost went wrong
I wrote most of this during a 400nm singlehanded crossing from Malta to Greece, in international waters, over Starlink.
First time I tried to send a course command, I tapped "1° to port."
The boat turned 10° to starboard — aggressively enough to stall the sails. Not a confidence-builder.
SeaTalk1 is an oddball: 4800 baud, 9-bit framing, half-duplex. It's a proprietary bus, and somewhere between the docs floating around the internet and Claude's interpretation of them, the command bytes came out wrong. So I stopped relying on documentation and let the boat teach the protocol — Claude listened to the bus while I pressed buttons on the physical autopilot head, captured the real frames the ST8000 emits, and replayed them. After that, the protocol layer just worked.
The lesson: on proprietary buses, the hardware is the spec. Everything else is a guess.
The EU gave me the charts for free
Commercial vector charts for the Mediterranean cost hundreds of dollars and are locked to specific chartplotter brands.
Then I found that the EU publishes open bathymetric data for European waters. It's raster — fine for a heatmap, useless for a chartplotter that needs depth contours. So I wrote Python scripts (GDAL + rasterio + contour extraction) to vectorize it into proper depth lines, the way commercial charts render. As far as I can tell from sailing on it, the result is on par with what people are paying $400 for.
If there's interest, I'd happily share the vectorized depth dataset I generated — let me know in the comments.
The wrist moment
The feature I didn't know I wanted:
I'm leaving a Greek harbor singlehanded. The boat needs steering; the fenders need stowing, lines coiling, deck clearing. Normally this is a two-person job — one at the helm, one on deck. Solo, it's a sequence of dashes back to the helm between every task.
Now I walk the foredeck, stowing fenders, and steer from my Apple Watch. The old fishermen on the pier did a proper double-take.
The thing that quietly changed how I sail
Rolling history graphs — 5, 30, and 60 minutes — for SOG, wind speed, wind angle, and heading.
Singlehanded, you trim the sails, then you forget. You're doing six other things. Half an hour later you have no idea if the trim helped. With the history view, I trim, do my other things, then look back: yes, SOG went up 0.4 knots after I eased the genoa. Or: no, the traveler adjustment did nothing, the wind just shifted.
Every passage is now a slow experiment on my own boat. I also log every byte off the bus so I can eventually compute a real polar diagram for this specific boat — not a generic one from a 1990s brochure. AIS doesn't ride on SeaTalk1, so for now I pull public AIS feeds for collision awareness. Plugging my onboard Raymarine AIS650 directly into the Pi over USB is the obvious next step — held up, embarrassingly, by a USB mini-B cable that turns out to be weirdly hard to find in the Aegean.
Anchor watch from a café
The Pi stays on the boat; I reach it over Tailscale (zero-config private network) from anywhere with internet. From a café in town I see wind, position, and motion. An alarm daemon on the Pi triggers thresholds I set from the iOS app — anchor drag, wind over X knots, position outside a circle.
Traditional anchor watch is a crew member sitting up to make sure the boat hasn't dragged. Mine doesn't sleep.
I can spend a full day ashore now without the low-grade dread of not seeing the boat.
I outran a crew of three by 27 hours
PredictWind has the best small-boat weather routing I know of. It's what teams use in the Vendée Globe and The Ocean Race — high-resolution wind models plus a router that finds the fastest path between two points given the forecast and a boat's polar. Every cruiser I know who passage-plans seriously subscribes.
What PredictWind doesn't have: an API. I asked. We had a friendly phone call, and they politely declined.
So I reverse-engineered the web app. This is the kind of project that used to take a week of squinting at network traffic; with Claude doing most of the squinting, it took an evening. The result is a small Python client running headless on the Pi. I set a destination in the iOS app, the Pi pulls the latest PredictWind routing GPX every few hours as the forecast updates, and the chartplotter steers the autopilot toward the next routing waypoint. The reverse-engineered client is still a bit buggy and will need some hardening.
Then I sailed Malta → Greece with friends on a comparable cruising boat — almost the same length, similar vintage, same PredictWind subscription. Three of them on board, I was solo. We were headed to the same Greek anchorage.
I left 15 hours after them. I arrived 12 hours before them.
A 27-hour delta on a 400nm crossing — about a quarter faster, on the same forecasts, in comparable boats. The difference: they were consulting the routing on a phone now and then. My boat was executing it continuously while I slept.
The takeaway isn't that AI is smarter than a sailor. It's that one person with well-integrated AI can now outperform three. The same data, in the same kind of boat — but in the loop, not on a phone.
Safety
The autopilot has its own physical engage/disengage. Standby is one button on the original head. The iOS app is a nicer remote, not an unattended captain — I'm always at the helm or seconds from it when the pilot is steering. The Pi runs on a dedicated 12V circuit I can pull. If everything I built fails, the boat is what it was, which has worked fine for 30 years.
The honest AI part
Claude was great at SignalK plumbing, SwiftUI, the watchOS target, and turning captured byte streams into a working SeaTalk1 decoder. It was useless at deciding what data I actually needed at 3am on night watch. Sailor's judgment plus the model's typing speed is what made this possible in the time I had.
The point
For 20 years, sailing this boat the way I now sail it would have meant $40,000 of new electronics, or three crew, or both. I did neither. Solo plus AI — AI in the loop, not on a phone — is what's new. One person doing the work of three. That shape isn't unique to boats; it's just where I happened to test it.
I haven't put the code on GitHub yet, but if anyone wants to look at it — especially anyone who's been deeper into SeaTalk1, NMEA2000, or SignalK than I have — I'm happy to share it. Drop me a line.
— Written between night watches, somewhere between Malta and Greece.