cyberwave.data) to the cloud MQTT broker, forwarding selected channels in both directions.
Overview
| Direction | Source | Destination | Use case |
|---|---|---|---|
| Outbound | Zenoh channel | MQTT topic | Inference results, events, health to cloud |
| Inbound | MQTT topic | Zenoh channel | Workflow sync commands from cloud |
Quick start
Default topic mapping
| Zenoh key | MQTT topic | Direction |
|---|---|---|
cw/{twin}/data/model_output | cyberwave/twin/{twin}/model_output | Edge to Cloud |
cw/{twin}/data/event | cyberwave/twin/{twin}/event | Edge to Cloud |
cw/{twin}/data/model_health | cyberwave/twin/{twin}/model_health | Edge to Cloud |
| — | cyberwave/twin/{twin}/commands/sync_workflows | Cloud to Edge |
Offline queue
When the MQTT connection drops:- Outbound messages are appended to segmented files under
CYBERWAVE_BRIDGE_QUEUE_DIR. - On reconnect, the queue is drained in FIFO order before resuming live forwarding.
- Queue size is bounded by
CYBERWAVE_BRIDGE_QUEUE_MAX_BYTES(default 50 MiB); oldest segments are evicted when the budget is exceeded.
Configuration
| Environment variable | Default | Description |
|---|---|---|
CYBERWAVE_BRIDGE_ENABLED | false | Master switch |
CYBERWAVE_BRIDGE_TWIN_UUIDS | — | Comma-separated twin UUIDs |
CYBERWAVE_BRIDGE_OUTBOUND_CHANNELS | model_output,event,model_health | Channels forwarded to MQTT |
CYBERWAVE_BRIDGE_INBOUND_TOPICS | commands/sync_workflows | MQTT suffixes forwarded to Zenoh |
CYBERWAVE_BRIDGE_QUEUE_DIR | /tmp/cyberwave_bridge_queue | Persistent queue directory |
CYBERWAVE_BRIDGE_QUEUE_MAX_BYTES | 52428800 | Max offline queue size (bytes) |
CYBERWAVE_BRIDGE_MQTT_QOS | 1 | MQTT QoS for bridge messages |
Transition compatibility
Existing direct MQTT paths (cw.mqtt.publish(...)) continue to work unchanged. The bridge is additive — channels published via both Zenoh and MQTT are handled idempotently on the cloud side.