@signalk/aisreporter
v1.2.3
Published
Signal K server plugin to report your position to MarineTraffic, AISHub, and other similar aggregators
Keywords
Readme
aisreporter
Signal K server plugin that reports the vessel's position, speed, heading, and static info to MarineTraffic, AISHub, and similar aggregators over UDP.
The plugin generates the raw NMEA AIS messages itself (class B
position-report type 18 + static-data type 24) from Signal K paths. It
does not require a real AIS receiver or transceiver, and it
will not forward positions that came in from your existing AIS. If
you have an AIS and want to relay its frames, use
ais-forwarder instead.
Installation
Through the Signal K server admin UI — App Store → search for
aisreporter → install. Or from the command line in your ~/.signalk
dir:
npm install @signalk/aisreporterRequires signalk-server
with Node >=22.
Usage
- Configure vessel MMSI and name in the server admin UI
(Server → Settings → Vessel). Static AIS fields — length, beam,
callsign, ship type, GPS offset from bow / centre — come from
design.*Signal K paths, usually populated viadefaults.json. - Enable the plugin in Server → Plugin Config → Ais Reporter and add one or more UDP endpoints (see Creating stations for where to get them).
- Save. The plugin sends position reports at the configured rate and static reports on a slower rate.

Options
| Key | Default | Meaning |
| ----------------------- | ------- | ------------------------------------------------------------------------------------------------------ |
| endpoints | [] | List of {ipaddress, port} UDP destinations. |
| updaterate | 60 s | Position report interval (debounced). |
| staticupdaterate | 360 s | Static info (name, dimensions, callsign) report interval. |
| lastpositonupdate | false | Keep resending the last known position while position data isn't changing (e.g. GPS off while docked). |
| lastpositonupdaterate | 180 s | Interval of the last-known-position resend. |
The static info written into AIS messages is read from these Signal K paths, in addition to the vessel MMSI and name:
design.length.value.overalldesign.beam.valuedesign.aisShipType.value.idcommunication.callsignVhfsensors.gps.fromBow.valuesensors.gps.fromCenter.value
Creating stations
You need an IP address and a UDP port assigned by an aggregator before the plugin can do anything useful. Request one from:
Other receivers that accept plain UDP AIS frames (e.g. a local OpenCPN) also work.
Troubleshooting
The repo ships a udp_listen shell helper that acts as a fake
receiver. Configure the plugin to send to localhost:12345, then run:
./udp_listen 12345on the same machine to see exactly what the plugin is emitting.
Contributing
Issues and pull requests welcome at
SignalK/aisreporter.
npm test runs the mocha suite; npm run typecheck +
npm run build guard the TypeScript surface; npm run mutation runs
Stryker.
License
Apache-2.0. See LICENSE.
