You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A working categorisation of the published Signal K plugin ecosystem, with the maintained/core plugins sorted into each type. Meant as an orientation map: "what kind of plugin is this, and what else lives in the same bucket?"
Data source: npm signalk-node-server-plugin keyword index (~479 packages), the @signalk npm scope, and github.com/SignalK, surveyed 2026-06-20. This is not exhaustive — it covers the maintained + historically-important core (~80 plugins), not the full long tail. Version/date stamps are point-in-time; re-query npm before trusting a "stale" verdict. Corrections welcome.
How the App Store works (context)
The in-server App Store is a live npm keyword query — anything published with signalk-node-server-plugin (server plugins), signalk-webapp (webapps), or signalk-embeddable-webapp (components) shows up. No human curation.
The @signalk/* scope marks officially-owned packages; the App Store lists everything keyword-tagged regardless of scope. Most official packages publish via CI, so npm's "publisher" field often shows GitHub Actions — GitHub org/repo ownership is the better signal for who maintains a thing.
Basic NMEA 0183 (serial/TCP/UDP) and NMEA 2000 (canboat/socketcan) ingestion are server "connections," not plugins — the keyword-tagged plugins sit on top.
The taxonomy (12 types)
Plugins routinely span two types — dual-tag rather than force one bucket.
#
Category
What lives here
1
Data sources & connectors
Bring data in/out over a transport: MQTT/UDP/TCP/WebSocket/REST bridges, mesh, AIS feeds, replay/simulators
Plus a cross-cutting tier-0: what ships inside the server vs what it auto-installs.
0. Bundled with the server (required core + default-installed)
From signalk-server's package.json (verified 2026-06-20). These are present on a fresh install — the de-facto baseline every user already has.
Required core libraries — dependencies in the server. Not plugins you install/remove; they are the server's data plane:
Package
Role
@signalk/server-api
Plugin/webapp API surface (what every plugin imports)
@signalk/signalk-schema
The SK data model / schema
@signalk/streams
Stream-processing primitives for providers
@signalk/n2k-signalk
NMEA 2000 (canboat PGN) → SK delta transform
@signalk/nmea0183-signalk
NMEA 0183 → SK delta transform
@signalk/course-provider
Backs the Course API (GC/rhumb, ETA, arrival circle)
@signalk/resources-provider
Backs the Resources API (routes/waypoints/notes/regions)
Default-installed — optionalDependencies: auto-installed on setup, shown enabled in the App Store, but removable:
Package
Category
What
@signalk/server-admin-ui
display
The admin/App-Store web UI itself
@signalk/app-dock
display
Launcher tile grid for installed webapps
@signalk/freeboard-sk
display / nav
Default chartplotter webapp
@signalk/instrumentpanel
display
Original gauge dashboard
@mxtommy/kip
display
KIP dashboard — now bundled by default
serialport
data source
Serial transport (NMEA over USB/RS-232/485)
@signalk/set-system-time
sensor/util
Set host clock from GPS
@signalk/signalk-to-nmea0183
NMEA conversion
SK → 0183 out
signalk-to-nmea2000
NMEA conversion
SK → N2K out
signalk-n2kais-to-nmea0183
NMEA conversion
N2K AIS → 0183
@signalk/udp-nmea-plugin
data source
NMEA 0183 over UDP
Note: NMEA 0183/2000 ingestion is core (nmea0183-signalk + n2k-signalk are required libs, driven by server "connections") — the keyword-tagged conversion plugins are mostly the outbound/bridge direction. A fresh boat already has Freeboard-SK + KIP + instrumentpanel for display.
1. Data sources & connectors
Plugin
npm
Maintainer
What
Status
MQTT gateway
signalk-mqtt-gw
Teppo Kurki
Canonical bi-directional SK ⇄ MQTT broker bridge
v2.0.0, 2024-02
MQTT import / export
signalk-mqtt-import / -export
community
Selective topic↔path mapping with web UI (each direction)
beta, 2025-12
MQTT sensors
signalk-mqtt-sensors
community
Sensor-oriented MQTT↔SK transfer
v2.1.0, 2025-04
MQTT bridge
signalk-mqtt-bridge
community
General SK↔MQTT bridge
v0.3.2, 2023 — stale
UDP NMEA sender
@signalk/udp-nmea-plugin
SK org / Kurki
Sends NMEA 0183 out over UDP
v2.0.0, 2023
Edge link
signalk-edge-link
community
Secure UDP link between SK nodes
v2.9.1, 2026-06 — active
WS provider
ws-provider-plugin
SK org
Connect to other SK servers over WebSocket
2018 — stale
REST provider
rest-provider-signalk
community
Inject data into SK via REST
v0.7.5, 2026-05
Meshtastic
@meri-imperiumi/signalk-meshtastic
Henri Bergius
SK ⇄ Meshtastic LoRa mesh
v1.4.0, 2026-06 — active, novel
AISstream
signalk-aisstream
community
Global AIS over websocket from aisstream.io
v0.9.0, 2026-05
NMEA log streamer
nmea-streamer
Aswin Bouwmeester
Replays an NMEA 0183 logfile at set speed
v2.2.0, 2024-12
Sim data generator
sksim
panaaj
SK data-stream generator for testing
v1.9.0, 2025-05
Simulator
@signalk/simulatorplugin
Kurki
Original simulated-delta source
2017 — historical
What-if helper
signalk-whatif-helper
community
Webapp to browse/modify/create paths for testing
v0.1.2, 2025-12
2. NMEA conversion
Plugin
npm
Maintainer
What
Status
N2K → SignalK
@signalk/n2k-signalk
Teppo Kurki
The canonical canboat-PGN → SK delta transform
v4.6.0, 2026-05 — core lib
SK → NMEA0183
@signalk/signalk-to-nmea0183
SK org
SK deltas → 0183 sentences on TCP 10110
v1.18.0, 2026-06 — active
SK → NMEA2000
signalk-to-nmea2000
SK org / Bender
SK → N2K PGNs back onto the bus
v2.24.0, 2026-01
Emitter "Cannon"
signalk-nmea2000-emitter-cannon
NearlCrews
Modern TS rewrite of SK→N2K, ~92% PGN coverage
v1.7.1, 2026-06 — active fork
SignalK over N2K
signalk-over-n2k
SK org
Read/send SK deltas over the N2K bus
2021 — low activity
N2K AIS → 0183
signalk-n2kais-to-nmea0183
Bender
N2K AIS PGNs → 0183 AIS sentences
v2.0.3, 2025-08
AIS700 → N2K
@talmnes/signalk-ais700-to-nmea2000
talmnes
Emit GPS PGNs so MFDs see position from an AIS700
v0.1.1, 2026-05 — niche
Vessels → AIS
signalk-vessels-to-ais
community
Other-vessel data → 0183 AIS
v2.0.0, 2025-12
AIS → Navionics
signalk-ais-navionics-converter
community
AIS → 0183/N2K for Navionics MFDs
v1.0.10, 2026-04
3. Sensor hardware
Plugin
npm
Maintainer
What
Status
SensESP
signalk/SensESP (PlatformIO, not npm)
SK org / Matti Airas
ESP32 firmware framework: physical sensors → SK over WiFi
v3.x — flagship DIY path
BT Sensors
bt-sensors-plugin-sk
naugehyde
BLE hub: Ruuvi, Victron, Shelly Blu, Gobius tank, batteries
Gaps worth knowing: MOB and DSC have no dominant server plugin — MOB is usually raised/shown via Freeboard-SK/KIP as a standard notification; DSC distress is parsed from raw NMEA 0183 into notifications. For collision, both derived-data and ais-target-prioritizer do geometric CPA/TCPA, but neither encodes COLREGs rule text.
6. Autopilot
Plugin
npm
Maintainer
What
Status
Autopilot
@signalk/signalk-autopilot
SK org / Bender
Raymarine-emulating GUI + backend; drives N2K/Seatalk-1 pilots
active, 2026-05 — Raymarine-only
PyPilot provider
pypilot-autopilot-provider
panaaj
Exposes PyPilot to the Autopilot Provider API
active, 2026-06
Mock autopilot
mock-autopilot-provider
SK org
Mock provider for testing the Autopilot API
maintained
The ecosystem has consolidated on the Autopilot Provider API (SK Server 2.x); these are its two real providers plus the mock.
Inject SK batteries/tanks/env/switches into a Cerbo as virtual devices
v1.0.19, 2026-03
Victron BLE
signalk-victron-ble
Rivera
Victron via BLE Instant Readout
v0.1.9, 2025-11
VE.Direct serial
@signalk/vedirect-serial-usb
SK org
Victron over serial
v1.7.0, 2026-06
BMV monitor
signalk-victron-battery-monitor
Bender
Parse Victron BMV-70x sentences
2022 — superseded
N2K switching
signalk-n2k-switching
Bender
SK ⇄ N2K binary switching (relays, switch banks)
v2.0.3, 2026-05
Shelly / Shelly2
signalk-shelly / signalk-shelly2
Bender
Control Shelly smart relays
2026
EmpirBus NXT
signalk-empirbusnxt-plugin
Bender
Monitor/control Garmin EmpirBus NXT
2025-07
Fusion stereo
signalk-fusion-stereo
Bender
Control a Fusion marine stereo
2025-08
Battery guard
signalk-nightswimming-battery-guard
Teodoro Lio
Cut solar at high SOC / inverter at low SOC
v0.2.5, 2026-06 — new
INA219
signalk-raspberry-pi-ina219 (+ -4ch)
Caprace
DIY current/voltage/power shunt on a Pi
2022 — stale but used
9. Engine & tanks
Plugin
npm
Maintainer
What
Status
Engine hours
signalk-engine-hours
K-E Gustafsson
Persistent hour logger for any engine reporting revolutions
v1.6.0, 2026-05 — active
Hour meter
signalk-hour-meter
joelkoz
Generic run-time meter off any path + webapp/API
2022 — works, unmaintained
Alternator engine-on
@meri-imperiumi/signalk-alternator-engine-on
Bergius
Engine-on detection from alternator output (no RPM sender)
v1.2.1, 2026-06 — active
Usage
signalk-usage
O. Fernander
Track electrical and tank usage over time
v0.2.6, 2026-03
Tanks/fuel is a thin category — no maintained dedicated tank or fuel-economy plugin. Tank levels arrive via @signalk/n2k-signalk (fluid-level PGNs) and get surfaced/derived by signalk-derived-data + signalk-usage. The engine-hours pattern is 3-stage: detect (alternator-engine-on) → accumulate (engine-hoursorhour-meter). What's missing is a derived endurance layer: slosh/heel-filtered consumption rate, range/time-to-empty, per-tank strapping-table calibration for non-linear geometry, and hysteresis on low-fuel / full-holding alerts — the trivial 80% (% volume) is covered; the useful 20% isn't. A good contribution opportunity.
10. Environment & weather
Plugin
npm
Maintainer
What
Status
Open-Meteo provider
@signalk/open-meteo-provider
panaaj
Open-Meteo via the SK Weather API
active, 2026-06
OpenWeather provider
signalk-openweather-provider
panaaj
OpenWeather via the Weather API
active, 2026-06
NOAA weather
signalk-noaa-weather
Bender
NOAA conditions + forecast for position
v1.4.4, 2026-04
Virtual weather sensors
signalk-virtual-weather-sensors
Nearl Crews
Keyless Open-Meteo/AccuWeather → 30+ env deltas + severe alerts
Tommy Mauricio (@mxtommy) — KIP, now the default dashboard.
Ilker Temir, Brandon Keepers / OpenWaters, and many more across tides, Saillogger, crowd-depth, sensors, and the long tail.
Surveyed 2026-06-20 from the npm registry, the @signalk scope, and github.com/SignalK. Plugin rows trace to npm/GitHub. Treat date/version stamps as point-in-time and "stale" verdicts as re-checkable. Corrections and additions welcome.
The Signal K plugin ecosystem, by the numbers (June 2026)
I spent a day mapping the published Signal K plugin landscape and figured the
numbers were worth sharing back. All counts are from the npm registry search
API on 2026-06-20 — reproducible, see queries at the bottom.
~605 keyword-tagged packages total in the App Store index
11 plugins/webapps ship default-installed with the server
7@signalk/* libraries are required core (the data plane itself)
The App Store isn't a curated list — it's a live npm keyword query. Anything
you publish with the right keyword shows up. That's a feature (zero gatekeeping)
and explains the long tail: a large fraction of those 479 are single-boat,
single-author plugins, many dormant. The maintained, broadly-used core is
more like 70–90 plugins.
What you get out of the box
Required core (in the server, not removable): @signalk/server-api,
signalk-schema, streams, n2k-signalk, nmea0183-signalk,
course-provider, resources-provider. NMEA 0183 and 2000 ingestion are
core — the conversion plugins are mostly the outbound direction.
Tommy Mauricio (@mxtommy) — KIP, now the default dashboard.
Ilker Temir, Brandon Keepers/OpenWaters, and many more across tides,
Saillogger, crowd-depth, sensors…
A working taxonomy (12 types)
Data sources/connectors · NMEA conversion · sensor hardware · navigation ·
AIS & safety · autopilot · anchor & security · electrical/battery/Victron ·
engine & tanks · environment & weather · instrumentation/display ·
notifications/logging/cloud — plus a tier-0 "bundled with the server."
Gaps I noticed (where contributions would help)
Tanks & fuel is thin. Levels are on the bus, but nobody publishes a clean
endurance / range-to-empty layer with slosh-filtered consumption rate and
per-tank strapping-table calibration. The trivial 80% (% volume) is covered
by derived-data; the useful 20% isn't.
MOB / DSC have no dominant server plugin — handled via UI + raw NMEA
parsing into notifications.
Collision plugins do geometric CPA/TCPA (derived-data,
ais-target-prioritizer) but none encode COLREGs rule text.
Default-installed / required lists are from signalk-server's package.json
(optionalDependencies and dependencies).
Huge thanks to the maintainers above and everyone in the long tail — building
some MCP servers on top of all this and the foundation is genuinely solid. 🙏