Skip to content

Configuration Reference

iliyan85 edited this page Jul 5, 2026 · 2 revisions

Configuration Reference

AISMixer loads the active runtime configuration from /etc/aismixer/config.yaml when it exists, otherwise from config.yaml in the current working directory.

For startup and deployment behavior around this lookup order, see Operations and Deployment.

The files under examples/ in the main repository are inactive examples. They are not loaded unless an operator copies or adapts them. A direct routing update file, such as examples/routing-update.yaml, is not a full config; it is input for aismixerctl replace --file.

Main repository examples:

Top-Level Keys

Key Purpose
station_id Preferred emitted TAG s source label when non-empty. This is separate from routing source_id.
debug Enables debug printing in the running service.
sec_inputs Configures UDPSEC listener sockets.
udp_inputs Configures plain UDP listener sockets.
forwarders Configures UDP egress destinations.
udp_alias_map_file Optional path to an IP-to-alias map for UDP ingress identity and TAG aliasing.
g_preserve_ingress_gid When true and ingress TAG g has a valid numeric group ID, use that group ID in output TAG g.
g_id_digits Number of digits for generated numeric TAG g group IDs.
g_always_tag_single When true, emit TAG g for single-sentence output as 1-1-<gid>.
c_preserve_ingress_c When true and ingress TAG c is valid, use that timestamp in output.
routing Optional static routing table loaded at startup.
control Optional control-plane configuration. The currently supported nested section is control.unix.

Ingress

udp_inputs entries configure plain UDP listeners:

udp_inputs:
  - id: roof_receiver
    listen_ip: "0.0.0.0"
    listen_port: 17778

When id is present and non-empty, the UDP routing source ID becomes udp:<id>. Without an id, AISMixer may use a mapped alias from udp_alias_map_file, then falls back to udp:<remote-ip>.

sec_inputs entries configure UDPSEC listeners:

sec_inputs:
  - id: secure_listener_alias
    listen_ip: "::"
    listen_port: 29999

UDPSEC routing source IDs come from authenticated station identities, for example udpsec:rPiAIS002. sec_inputs[].id may affect emitted TAG s aliasing when station_id is empty, but it does not replace the authenticated routing source ID.

Egress

forwarders entries configure UDP egress destinations:

forwarders:
  - id: aishub
    host: 192.0.2.20
    port: 10110

Named UDP forwarders create target IDs such as udp:aishub. Routes can reference only available named target IDs. Unnamed forwarders are valid for legacy broadcast mode but cannot be route targets.

Only UDP egress targets are currently implemented.

Routing

routing enables routing mode when it contains valid zones and routes.

routing:
  zones:
    fixed_udp:
      include:
        - udp:roof_receiver

  routes:
    - name: fixed_to_aishub
      from_zone: fixed_udp
      to:
        - udp:aishub
Field Purpose
zones Mapping of zone names to exactly one set expression.
routes Ordered list of route declarations.
name Operator-readable route name returned in status.
from_zone Name of the logical zone matched by the route.
to List of target IDs that must exist as named egress adapters.

Zone expressions are include, union, intersection, and difference. See Routing Model.

Control Unix

control.unix is strict. Unknown fields are rejected. If control.unix is present, enabled is required.

control:
  unix:
    enabled: true
    socket_path: /run/aismixer/control.sock
    socket_mode: "0660"
    max_request_bytes: 1048576
Field Purpose
enabled Must be true to start the Unix control server. false disables it.
socket_path Filesystem path for the Unix-domain socket. Required when enabled.
socket_mode Octal socket permission mode, defaulting to 0660 when omitted.
max_request_bytes Maximum accepted request frame size, defaulting to 1048576 when omitted.

The socket parent directory must already exist. Runtime routing changes made through this socket are process-local and non-persistent.

Clone this wiki locally