Skip to content

MQTT and serial

The embedded broker exists with mqtt_enabled=true and defaults to 127.0.0.1:1883. Set mqtt_bind_host to a specific host-interface IP or 0.0.0.0 for all IPv4 interfaces. The guest reaches it at $GATOS_MQTT through 10.0.2.2. The broker has no authentication, so a non-loopback bind exposes telemetry and command topics to reachable clients.

TopicDirectionMeaning
gatos/sim/<path>retained outboundfield mirror value
gatos/sim/<path>/setinboundraw control-field value
gatos/commandinboundgeneric logical command JSON
world/event topicsoutboundaggregate snapshots and live events

Field topics need mqtt_field_topics=true. Aggregate world cadence uses mqtt_publish_hz; field cadence uses field_feed_hz. Publication is subscription-gated: an unmatched topic is not produced, a new subscription gets its retained baseline within a cycle, and a despawn clears retained vessel topics with an empty payload. MQTT mirrors text controls, not binary display frames or audio uploads.

Paint follows the same mirror automatically: read gatos/sim/paint/status, write the vehicle master at gatos/sim/paint/parts/enabled/set, and address vessel/part/EVA rules with their ordinary /sim relative paths. See Vehicle and EVA paint.

serial_telemetry_port=true exposes the guest gatos.serial device for outbound telemetry. serial_command_port=true accepts SCPI command lines on it. serial_mode selects ndjson, nmea, or ccsds; serial_interval_ms is clamped 50..60000 ms. The serial bridge is intentionally an alternate wire format, not a /sim leaf mirror.

bus_ccsds and bus_1553 are reserved configuration switches. They do not currently expose a standalone CCSDS or MIL-STD-1553 bus service. The serial CCSDS option remains the implemented way to emit packets.