-
Notifications
You must be signed in to change notification settings - Fork 0
Home
AISMixer is a Python service for processing AIS NMEA 0183 !AIVDM and !AIVDO streams. It receives data through plain UDP ingress and authenticated UDPSEC ingress via nmea_sproxy, captures a routing snapshot and matches the ingress source_id, extracts AIS sentences, assembles multipart messages, deduplicates output, constructs NMEA TAG s/c/g metadata, and forwards accepted traffic to UDP targets.
The runtime is split into a data plane and an optional control plane. The data plane handles transport ingress, normalization, routing, and UDP egress. The control plane, when explicitly enabled, lets local operators inspect, replace, or disable the process-local routing snapshot through a Unix-domain NDJSON socket.
Use the main repository README for quick start and operator orientation. Use this Wiki as the detailed reference for routing, configuration, runtime control, and architecture.
- Architecture
- Glossary
- Data Plane
- TAG Handling
- Multipart NMEA Assembly
- Deduplication
- Routing Model
- UDPSEC and nmea_sproxy
- Runtime Routing Control
- Configuration Reference
Runtime routing control is opt-in. It is disabled unless control.unix.enabled: true is configured.
Runtime routing state is process-local and non-persistent. A routing.replace or routing.disable request updates only the running AISMixer process that owns the Unix socket. It does not update config.yaml, does not survive restart, and does not synchronize across multiple processes.