Transport
Omega supports both via
OMEGA_MQTT_BROKER_URL.
Authentication
- mTLS (recommended): client cert issued by Golain cert worker or JITR
- Username/password: from device MQTT details in console
org_id, project_id, fleet_id, device_id from session — client must never send these as trusted JSON fields.
Clean session
Setclean_session: false (persistent session). Required so broker can deliver QoS 1 downlink controls while device was offline.
Omega ilyama-edge client:
Topic prefix
All sync topics under project-scoped prefix:topic_slug: projectTopicSlugwhen configureddevice_name: registered device name (MQTT client id)
OMEGA_ROOT_TOPIC in Omega.
Example
Project slugacme-prod, device gw-07:
Topic table
ACL: Device cannot publish to
sync/ingest/control. Device must subscribe to it at QoS 1 immediately after connect.
QoS and delivery
- Device publishes: QoS 1
- Server downlink: QoS 1
- At-least-once delivery — dedup on server (batch_id or per-row keys)
batch_id on MQTT redelivery.
Broker → worker routing (edge v2)
Client MQTT topics are unchanged. On the server, the mqtt-broker hook publishes toedge_ingress_exchange (not the legacy telemetry_ingress_exchange / integration ingress path):
The edge worker consumes these queues and stages governance events on
edge_exchange (schema reviews, lineage pause/resume, materialization).
Downlink: edge worker stages edge.ingest_control.requested.v1 on mqtt_downlink_exchange → broker publishes to the device’s sync/ingest/control topic.
Startup checklist (device)
- Connect MQTT with persistent session + mTLS.
- Subscribe
{prefix}/sync/ingest/controlQoS 1. - Load durable state:
batch_seq,commit_seq,journal_epoch, schema hashes, pause watermarks. - Detect schema drift; optional
sync/schema/observe. - Resume draining backpressure buffer if paused.
- Start flush loop (5s / 512 KiB).