npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

signalk-crows-nest

v0.4.6

Published

Imports Garmin ActiveCaptain, OpenSeaMap, USCG Light List, and NOAA ENC Direct points of interest as Signal K notes resources, with proximity and route-corridor hazard alarms.

Readme

Crow's Nest

npm version npm downloads License CI

A Signal K plugin that imports points of interest from four marine data sources (Garmin ActiveCaptain, OpenSeaMap, the USCG Light List, and NOAA ENC Direct), publishes them as Signal K notes resources for chart plotters like Freeboard-SK, and raises proximity and route-corridor hazard alarms. Pairs well with sibling plugins such as signalk-nmea2000-emitter-cannon.

Built on the foundation of signalk-activecaptain-resources by Paul Willems and the Signal K community.

What's New in v0.4.4

A performance and polish release. Chart-load latency on a cold viewport drops from 15-30 s to about 5 s by capping each POI source's list request at a per-source timeout: a slow Overpass or NOAA ENC query no longer holds up the chart while the other sources answer; the slow source's POIs appear on the next chart-plotter refresh once its bbox-debounce cache is populated. The canonical plugin icon (a crimson lookout-in-a-barrel badge over the shared deep-ocean family motif) ships in the same release, alongside a three-agent code-review pass that landed SignalK conformance, correctness, and UI/docs/test cleanup all the way through the nit tier.

See the v0.4.4 changelog entry and the v0.4.4 release. Full release history.

Features

  • Point-of-interest overlay as Signal K notes resources: marinas, anchorages, hazards, businesses, boat ramps, bridges, dams, ferries, inlets, locks, local knowledge, navigational aids, airports, lighted and unlighted aids, daymarks, racons, wrecks, obstructions, and underwater rocks
  • Four data sources, merged into one chart layer: Garmin ActiveCaptain (the base), OpenSeaMap (OSM marine data via the Overpass API), the USCG Light List of US Aids to Navigation (US-only, opt-in), and NOAA ENC Direct (US authoritative wrecks, obstructions, and rocks, US-only, opt-in). Cross-source duplicates merge into the ActiveCaptain base; the surviving note records every contributing source as a corroboration signal
  • Proximity hazard alarms with hysteresis: a Signal K notification fires when a Hazard point comes within a configurable radius and clears once the vessel moves beyond it
  • Route-corridor hazard scan: warns about hazards, bridges, and locks on the active Course API route ahead, with along-track distance and ETA
  • Rich point detail rendered to HTML, with the source-specific attribution credit (ODbL for OSM, CC0 for NOAA, US Government public domain for USCG, Garmin ActiveCaptain for the base) published as a structured properties.attribution field on every note instead of appended inline to the description, so a Signal K client UI can render it in chrome rather than next to the POI text
  • Persistent, offline cache for ActiveCaptain detail responses; the USCG Light List index is sharded on disk and queried through an in-memory spatial tile index for sub-millisecond bbox lookups
  • Per-bbox refresh-debounce cache on every at-runtime source so a Freeboard refresh burst on a stationary viewport reuses the cached result rather than flooding the upstream
  • Per-source earliest-year filter for source-specific data freshness (SORDAT survey vintage on NOAA ENC, MODIFIED_DATE on USCG, OSM element timestamp on OpenSeaMap)
  • Rating filter on ActiveCaptain to cut clutter on dense charts
  • Hazard freshness warning in the popup body for an ActiveCaptain Hazard whose report has not been confirmed in over two years
  • React configuration panel with a per-source status bar, a per-source accordion of cards each with a live-status pill, a global Alerts section, and opportunistic dark-mode token support
  • TypeScript 6 under strict flags, MIT-licensed, Node 20.3+

Requirements

  • Signal K server 2.x with a position source (a GPS) attached to vessels.self
  • Node.js 20.3+
  • A chart plotter that consumes Signal K notes resources, such as Freeboard-SK
  • The configuration panel needs Signal K admin UI 2.26.0 or newer. On older servers the plugin still works and falls back to the standard settings form

Installation

Install from the Signal K Admin UI under AppStore -> Available, or from npm:

cd ~/.signalk
npm install signalk-crows-nest

From source:

git clone https://github.com/NearlCrews/signalk-crows-nest.git
cd signalk-crows-nest
npm install
npm run build
ln -s "$(pwd)" ~/.signalk/node_modules/signalk-crows-nest

Configuration

In the Signal K admin UI, open Server -> Plugin Config, find "Crow's Nest", and enable the plugin. The defaults work for an ActiveCaptain-only setup; opt-in to the other sources from their cards. The plugin ships a React config panel that the Signal K admin loads via webpack 5 Module Federation. The panel has these areas:

  1. Per-source status bar at the top: reachability and last-fetch time for each enabled source, plus any recent errors
  2. Data sources accordion with one collapsible card per source (ActiveCaptain, OpenSeaMap, USCG Light List, NOAA ENC Direct). Each card's body groups its options into bordered fieldsets: import layers, refresh and freshness, filters (when present), and merge with ActiveCaptain
  3. Alerts section (collapsed by default, opens automatically when an alarm is enabled): the proximity-alarm and route-corridor scan controls, each in its own fieldset with an opt-in toggle and a numeric setting

Per-source enable toggles live on each card's header, alongside the disclosure chevron. Each card carries a small live-status pill on the header (✓ ok for a healthy source, … idle for one that has not fetched yet, ! error for the last attempt failing); the hover and screen-reader tooltip carries the longer "N POIs in last fetch, M minutes ago" detail. Disabled cards show a "Disabled." prefix on their summary so an off source never reads as live. Every numeric input clears cleanly mid-edit. Saving applies immediately; the plugin's internal cache rebuilds on the next request.

Documentation

Compatibility

  • Signal K Server: 2.x. The notes resources and the notifications work on any 2.x server; the configuration panel needs admin UI 2.26.0+
  • Node.js: 20.3+
  • @signalk/server-api: 2.24.0+
  • TypeScript: 6.0+ (development only)
  • Chart plotters: Freeboard-SK is the reference consumer; any client that reads Signal K notes resources will see the markers

License

MIT: see LICENSE.

Author

Nearl Crews - author and maintainer.

Acknowledgments

Built on the foundation of signalk-activecaptain-resources by Paul Willems and the Signal K community. Full credit to the original author for the initial plugin that imports ActiveCaptain points of interest and exposes them as Signal K resources.

Support