beacon
beacon turns NMEA 2000 traffic into dependable application streams.
Read frames from a SocketCAN or USB-CAN interface, decode them with n2k, durably buffer in SQLite, and fan them out to TCP and HTTP/SSE consumers.
Features
- Live NMEA 2000 decoding: Converts CAN frames into structured JSON messages
- TCP and browser streams: NDJSON over TCP for services, Server-Sent Events for dashboards
- SQLite replay buffer: Keeps recent messages available for reconnecting clients
- Per-client recovery: SSE clients can resume with
Last-Event-ID - CEL filtering: Filter each sink by PGN, source, priority, or decoded payload fields
- Prometheus metrics: Track frame counts, buffer usage, client activity, and filter errors
- Small Linux footprint: Pure Go, zero CGO, and built for Raspberry Pi or other Linux hosts
- Single static binary: Minimal runtime dependencies and simple deployment
Use Cases
- Feed live vessel data into browser dashboards
- Bridge NMEA 2000 traffic into backend services
- Bridge CAN networks using TCP
- Run a lightweight boat data gateway on ruggedized Linux
- Replay missed data after network interruptions
- Filter noisy CAN traffic to minimize network bandwidth