Skip to content
@sailingnaturali

Sailing Naturali

All-electric catamaran charter operation in the Pacific Northwest — Gulf Islands and San Juan Islands.

Sailing Naturali

A tech exec uses AI to build the kind of business AI can't deliver.

All-electric catamaran charter operation in the Pacific Northwest — Gulf Islands and San Juan Islands. AI runs the operations. Humans deliver the experience.

📺 @sailingnaturali on YouTube · sailingnaturali on Substack · sailingnaturali.com · @sailingnaturali on Instagram · @sailingnaturali on TikTok


Boat Agent Stack

On-boat AI agent system — Navigator, Engineer, Logbook — built on the Claude API, wired to SignalK via MCP servers.

MCP Servers

Repo What it does
signalk-mcp Read live vessel data from SignalK — wind, depth, position, battery, route — with path discovery and under-keel clearance
weather-mcp Marine wind, swell, and buoy observations — Open-Meteo + Stormglass + NDBC
currents-mcp Tidal-gate slack windows for PNW passages — CHS (BC) + NOAA (US) current predictions
pilotbook-mcp Rank the most comfortable overnight anchorage by joining pilot-book exposure against the forecast — and search anchorages in plain language ("quiet spot to wait out a southerly with a beach") via on-device hybrid retrieval
colregs-mcp Navigation rules of the road — resolve the regime by GPS, look up rules, and check lights/shapes compliance
logbook-mcp The ship's log as agent tools — voice-marked moments and day reads over the signalk-logbook plugin, with USCG/TC sea-time export on the roadmap
vessel-knowledge-mcp Turn equipment manuals into alarm zones and equipment lookups — ingests PDFs into a card vault, pushes zone bands into SignalK so it raises notifications autonomously, then explains them in plain language
club-moorage-mcp Find and overnight-rank yacht-club outstations — RVYC member moorage with size, rafting, and booking rules, ranked against the forecast by reusing pilotbook-mcp's anchorage scorer

Vaults

Knowledge bases the MCP servers read from.

Repo What it holds
colregs-vault Navigation-rules content for colregs-mcp — rule prose, a curated requirements decision table, and PNW regime polygons. Public because the sources are reproducible public-domain law
pilotbook-vault (private) Anchorage knowledge for pilotbook-mcp — 673 anchorages across 7 SalishSeaPilot books, with exposed-sector data and source page back-links. Kept private: the source pilot books are copyrighted
vessel-knowledge-vault (private) Equipment cards for vessel-knowledge-mcp — per-make/model spec cards extracted from manuals (propulsion drives, Victron Cerbo, watermaker), with zone bands in SignalK canonical SI units. Kept private: the source manuals are copyrighted

SignalK Plugins

Run inside the SignalK server itself — alarms and data feeds that don't wait for an agent. Published on npm under @sailingnaturali.

Repo npm What it does
signalk-ntfy-relay @sailingnaturali/signalk-ntfy-relay Push SignalK notifications (alarms) straight to your phone via ntfy — zero dependencies, edge-triggered, severity-aware
signalk-currents @sailingnaturali/signalk-currents Publish CHS/NOAA tidal-current predictions to SignalK — interpolated environment.current at the vessel plus a /currents slack/flood/ebb event series, for a configured station list
signalk-depth-offsets @sailingnaturali/signalk-depth-offsets Derive environment.depth.belowKeel and belowSurface from a DBT-only sounder using measured transducer offsets — zero dependencies
signalk-dsc @sailingnaturali/signalk-dsc Receive, log, and alert on DSC (VHF digital selective calling) calls — distress, urgency, safety, routine — from NMEA 0183 ($CDDSC/$CDDSE) and NMEA 2000 (PGN 129808)
signalk-journey-replay @sailingnaturali/signalk-journey-replay Replay published voyage data (journey-data archives) on any SignalK server — download a trip, press play, timestamps rebased to now
signalk-equipment-registry @sailingnaturali/signalk-equipment-registry Serve a vessel equipment registry — manufacturer/model/serial per installed instance, plus the SignalK paths each owns — at resources/equipment, the identity slot SignalK's schema lacks

Agents & tooling

Repo What it does
naturali-agents Hermes Agent skills for Navigator, Engineer, and Logbook — prompts, bridge scripts, and HA voice integration
vault-search Local-first hybrid search over the Markdown vaults — BM25 + on-device embeddings (fastembed/ONNX) in one SQLite file, RRF-fused. The retrieval engine behind pilotbook-mcp's plain-language anchorage search
journey-data Real voyage data from S/V Naturali as SignalK delta archives — capture, scrub, and publish CLI; the archives signalk-journey-replay plays back
claude-skills Claude Code skills from this build — /plugin marketplace add sailingnaturali/claude-skills

What the boat runs on (adopted, not built)

The rule here is adopt before build — the repos above exist only because nothing else filled the gap. Most of what makes this boat work is other people's open source:

Project Role aboard
Signal K The open marine data bus — every sensor, plugin, and agent reads and writes here
Home Assistant Voice in/out, dashboards, and automations — the crew-facing surface
signalk-logbook The ship's log itself — logbook-mcp and signalk-dsc write to it rather than reinventing it
signalk-tides Tide extremes at the vessel — we send patches upstream instead of forking
openmeteo-provider-plugin Free Open-Meteo forecasts into SignalK's weather API — we contributed the marine waves & swell (water.*) the point forecast was missing
signalk-restricted-areas ProtectedSeas marine-protected-area layers and geofence alerts — MPAs, rockfish conservation areas, whale slowdown zones
Eclipse Mosquitto The MQTT spine — alarms, intents, and voice events between boat, agent host, and Home Assistant
ntfy Push notifications to phones — the far end of signalk-ntfy-relay
Whisper / Piper Speech-to-text and text-to-speech for the voice pipeline, both running locally
Ollama Local inference for small structured tasks — e.g. repairing model output into strict JSON
Tailscale Remote access to boat and shore hosts — WireGuard without the key ceremony

When one of these falls short we file an issue or send a patch before writing a replacement. A new repo in the tables above is the last resort.


How it fits together

Three replaceable layers. An agent reads vessel + environment data through MCP servers, reasons over it, and speaks back through Home Assistant.

  Interaction        Home Assistant
                       voice in ──MQTT──▶  │   ◀──MQTT── Piper TTS out
                                           ▼
  Agent runtime      Hermes Agent (Mac Studio)
                       Claude API (Sonnet) — local model deferred
                                           │
                     ┌──────────┬──────────┼──────────┬──────────┬─────────┬──────────────┬───────────────┐
  Tool surface       ▼          ▼          ▼          ▼          ▼         ▼              ▼               ▼
                  signalk    weather   currents   pilotbook   colregs   logbook   vessel-knowledge   outstations
                   -mcp       -mcp       -mcp       -mcp       -mcp      -mcp           -mcp            -mcp
                     │          │          │          │          │         │              │               │
  Data / vaults   SignalK  Open-Meteo    CHS +   pilotbook-  colregs-  signalk-   vessel-knowledge-   RVYC data
                    bus       NDBC       NOAA       vault      vault    logbook         vault         (bundled)
                                                                       (on boat)

Each MCP server runs standalone and is independently useful — point your own agent at any one of them. The vaults are plain Markdown/GeoJSON the servers read at startup (PILOTBOOK_VAULT_PATH, COLREGS_VAULT_PATH, VESSEL_KNOWLEDGE_VAULT_PATH). vessel-knowledge-mcp also runs the loop in reverse: its build-time CLI pushes alarm-zone metadata into SignalK, so the bus raises notifications on its own and the agent only explains them.

Getting started

Start at naturali-agents — it wires the MCP servers into a working agent and ships a mock SignalK server, so the whole loop runs on a laptop with no boat:

git clone https://github.com/sailingnaturali/naturali-agents
cd naturali-agents
python dev/mock-signalk.py            # serves a Boundary Pass scenario on :8765
export SIGNALK_URL=http://localhost:8765
hermes chat -s naturali/navigator     # ask the Navigator anything

Each repo's README carries its own install, env vars, and tool surface. Every MCP server is a uv-runnable Python package with its own test suite.


Built in public. MIT licensed. Show the receipts. The build log lives on the engineering blog (source), and the main site at sailingnaturali.com (source).

Popular repositories Loading

  1. signalk-mcp signalk-mcp Public

    MCP server exposing SignalK marine data as agent tools

    Python 1

  2. naturali-agents naturali-agents Public

    Hermes Agent configs and prompts for the Naturali boat agent system

    Python 1

  3. claude-skills claude-skills Public

    Claude Code skills from the Sailing Naturali marine-AI build. Install: /plugin marketplace add sailingnaturali/claude-skills

    JavaScript 1

  4. signalk-dsc signalk-dsc Public

    SignalK plugin: receive, log, and alert on DSC (VHF digital selective calling) calls — NMEA 0183 $CDDSC/$CDDSE and NMEA 2000 PGN 129808

    JavaScript 1

  5. signalk-equipment-registry signalk-equipment-registry Public

    Serve a vessel equipment registry — manufacturer/model/serial per installed instance — as a SignalK resources/equipment resource, and optionally surface that identity on the data model.

    TypeScript 1

  6. logbook-mcp logbook-mcp Public

    MCP server over signalk-logbook: marked moments, day reads, and (future) USCG/TC sea-time export

    Python

Repositories

Showing 10 of 26 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…