The Technology Behind HelmWatch: SignalK, AI, and Real-Time Monitoring
Phil Stark
HelmWatch is built on a modern technology stack designed for reliability, real-time performance, and extensibility. In this post, we will walk through the key technical decisions that make HelmWatch work.
SignalK: the open data standard for marine electronics
At the heart of HelmWatch is SignalK — an open-source data standard and server for marine electronics. SignalK acts as a universal translator between your vessel's sensors (NMEA 0183, NMEA 2000, I2C, and more) and the applications that consume that data.
Our custom SignalK plugin runs on your vessel (typically on a Raspberry Pi or the HelmWatch Gateway hardware) and streams sensor data to the HelmWatch cloud in real time. The plugin handles local buffering, connection resilience, and data normalization — so even if your internet connection drops temporarily, no data is lost.
Why SignalK? Because it is open, well-documented, and has a thriving community of developers and hardware manufacturers. By building on SignalK, HelmWatch works with virtually any marine sensor setup, from a simple Raspberry Pi with a USB NMEA adapter to a full Victron or Garmin installation.
Real-time data pipeline
Sensor data flows from your vessel to HelmWatch through a pipeline optimized for both throughput and latency. Here is how it works:
Ingestion — The SignalK plugin sends sensor snapshots to our API via authenticated HTTPS. Each snapshot contains timestamped readings for all connected sensors. The API validates, normalizes, and stores each snapshot in PostgreSQL for historical queries.
Alert evaluation — A background worker evaluates all active alert rules against the latest sensor data every 60 seconds. Rules support threshold comparisons, rate-of-change detection, geofencing calculations, and compound conditions. When a rule triggers, it creates an alert record and queues notifications.
Notification dispatch — A separate worker processes the notification queue every 10 seconds, dispatching messages through the configured channels (email via Resend, SMS and voice via Twilio, push notifications via web push). Failed deliveries are retried with exponential backoff.
Real-time streaming — For connected clients (the web dashboard and mobile app), we use Server-Sent Events (SSE) to push updates as they happen. When new sensor data arrives or an alert fires, connected clients see it immediately without polling.
AI-powered assistant
HelmWatch includes an AI assistant powered by Anthropic's Claude. The assistant has access to your vessel's sensor history, alert configuration, and current conditions, allowing it to answer natural-language questions with context-aware responses.
Ask "How are my batteries doing?" and the assistant will analyze recent voltage trends, compare them against your configured thresholds, and provide a plain-language assessment. Ask "What is the weather forecast for my location?" and it will pull NOAA data for your vessel's current GPS coordinates and summarize conditions relevant to boating.
The assistant is not just a chatbot — it understands marine context. It knows that 12.0V on a lead-acid bank is concerning but 12.0V on a lithium bank is critical. It knows that a rapid barometric drop combined with increasing wind suggests an approaching front. This domain knowledge is baked into the system prompts and tool configurations that power each interaction.
Architecture decisions
Fastify for the API — We chose Fastify for its performance, plugin architecture, and excellent TypeScript support. The plugin system maps naturally to our domain: separate plugins for alert evaluation, notification dispatch, SSE streaming, and background workers, all sharing a common dependency injection context.
PostgreSQL for storage — All vessel data lives in PostgreSQL, accessed through Drizzle ORM with full TypeScript type safety. Sensor snapshots are the highest-volume table, and we use time-based partitioning and retention policies to keep query performance fast as data grows.
Redis for coordination — Redis handles job queuing (via BullMQ), caching, and pub/sub for SSE event distribution across multiple API instances. It also manages rate limiting for notification channels to stay within provider limits.
Zod for validation — Every piece of data that crosses a boundary — API requests, configuration, sensor payloads — is validated with Zod schemas. Shared schemas between the API, web app, and mobile app ensure type consistency across the entire stack.
What is next
We are actively working on predictive maintenance capabilities that use machine learning to identify equipment degradation patterns before they become failures. We are also expanding our hardware integration catalog and building deeper connections with marine electronics ecosystems.
HelmWatch is open-source at heart, built on open standards, and designed to be extensible. If you are a developer interested in marine technology, we would love to hear from you.