Skip to content
iliyan85 edited this page Oct 1, 2026 · 17 revisions

AISMixer Wiki

AISMixer combines AIS NMEA 0183 data from many receivers into clean logical streams. Its service, aismixer, receives AIS sentences over plain UDP and over UDPSEC, the project's authenticated and encrypted UDP transport; reassembles multipart messages; removes near-real-time duplicates; manages NMEA TAG metadata; and forwards the result to configured UDP destinations, either to all of them or through logical routes. Stations use nmea_sproxy to send one local UDP or serial receiver feed to the mixer, and aismixerctl is the local operator CLI.

Current status

Item Status
Latest tagged release v0.2.1
OpenWrt packages 0.2.1-r4 for OpenWrt 25.12 (x86_64, mips_24kc), built from v0.2.1
Current main Contains unreleased UDPSECv2 session continuity: session locator, key-epoch refresh, authenticated path migration, liveness recovery
UDPSEC compatibility Current main does not interoperate with v0.2.1 or 0.2.1-r4; keep both ends on one release line

This Wiki describes current main unless a page says otherwise. Release lines, the compatibility matrix, and upgrade advice are on Release and Compatibility.

How the documentation fits together

Layer Role
Website Concise public presentation
README Canonical project and operator overview (English, Bulgarian, Romanian)
nmea_sproxy guide Canonical component operator guide
This Wiki Deeper architecture, deployment, protocol, and troubleshooting topics
Behavioural contract Exact, tested, normative semantics

If a Wiki page and the source or contract disagree, the source and contract win and the Wiki is corrected.

Where to start

Topics

Area Pages
Deploy and operate Quick Start · Installation and Operations · OpenWrt Deployment · Configuration · Troubleshooting · Release and Compatibility
Secure transport and stations UDPSECv2 Secure Transport · Mobile Session Continuity · Secure UDP and nmea_sproxy · Security Model · Network Endpoint Controls
Processing Architecture Overview · Processing and Routing Model · Inputs and Outputs · Multipart NMEA Assembly · TAG Handling · Deduplication
Routing and control Routing Engine · Runtime Routing Control · Runtime Observability
Reference State, Lifecycle, and Limits · Data Representation, Processor, and Runtime Boundary · Behavioural Contract map · Operational Boundaries · Testing and Compatibility · Glossary
Project Roadmap · Architecture Evolution · Native-Ready Reference Foundation · Community and Contact

Architecture in one paragraph

aismixer is one long-running Python process. UDP and UDPSEC listeners turn accepted datagrams into immutable IngressFrame objects in bounded per-input queues. A bounded admission step binds each frame to the current routing snapshot, and one PythonDataPlaneProcessor scans, reassembles, applies TAG policy, and deduplicates, returning an ordered OutputBatch of exact bytes that a bounded egress stage sends over UDP. Full stages apply backpressure instead of dropping queued work. Worker readiness is implemented inside this one process; worker processes and a native processor are not. See Architecture Overview.

Implemented and not implemented

Implemented: plain UDP and UDPSEC ingress; nmea_sproxy UDP and serial/USB input with UDPSEC or explicit plain-UDP output; multipart assembly; TAG s, c, and g handling; global or per-target deduplication; logical routing; runtime routing replacement and read-only statistics through aismixerctl; Debian-family systemd and OpenWrt procd deployment.

Not implemented: worker processes, IPC, or a native processor; persistent or hot-reloaded routing; remote authenticated control; non-UDP egress; geographic or MMSI filtering; long-term storage or analytics; AIS spoof or anomaly detection. See Operational Boundaries and Roadmap.

Project documents

Clone this wiki locally