Build · wie?

How to use ZeroDDS

Three paths into the codebase — Foundation, Language bindings, Protocol bridges. Pick where you want to enter, get a quickstart snippet, then dive into architecture or a runnable quickstart repo.

v1.0.0-rc.3 MSRV Rust 1.88 7 languages · 10 bridges · 1 workspace

Language bindings — pick your stack

Seven first-class language bindings, all driven from the same IDL. Each card has a one-line install, a link to the architecture and a quickstart repository.

Compare language-binding coverage across all DDS vendors (§4 of the Vendor Matrix) →

Protocol bridges — which side are you coming from

Ten first-class protocol bridges plus the full CORBA family. Each card frames the integration from the protocol's side: 'if you are already running X, here is how X reaches DDS topics — and back'.

From MQTT 5.0

If your fleet already publishes on an MQTT broker, the mqtt-bridge daemon mirrors MQTT topics to DDS topics one-to-one. Sample loss-aware QoS-mapping (At-most-once / At-least-once / Exactly-once → DDS reliability).

zerodds-mqtt-bridge --broker tcp://broker:1883 --domain 0

From AMQP 1.0

RabbitMQ, Solace or any AMQP 1.0 broker — the amqp-bridge maps queues and exchanges to DDS topics, preserves message headers and translates AMQP delivery state to DDS sample state.

zerodds-amqp-bridge --uri amqp://rabbit:5672 --domain 0

From CoAP

Constrained-device endpoints (sensors, actuators) typically speak CoAP. The coap-bridge exposes CoAP resources as DDS topics; observe-mode CoAP requests become DDS subscriptions.

zerodds-coap-bridge --listen coap://0.0.0.0:5683

From WebSocket / browsers

If your front-end runs in a browser, websocket-bridge gives it DDS access over a WebSocket frame protocol. Pair with the TypeScript browser binding for a typed client API.

zerodds-websocket-bridge --listen 0.0.0.0:8765

From OPC UA

If your plant floor speaks OPC UA, the opcua-gateway maps the OPC UA AddressSpace and PubSub (UADP) onto DDS topics — industrial telemetry reaches DDS subscribers, and DDS writes drive OPC UA nodes back.

zerodds-opcua-gateway --listen opc.tcp://0.0.0.0:4840

From SOAP / WSDL

If you integrate through SOAP/WSDL enterprise web services, zerodds-soap exposes DDS topics as SOAP 1.2 services — WSDL generation, MTOM, WS-Addressing and WS-Security included — so existing SOA clients reach DDS without code changes.

zerodds-soap --wsdl service.wsdl --listen 0.0.0.0:8080

From Zenoh

If you run an Eclipse Zenoh fabric for edge-to-cloud routing, the zenoh-bridge maps DDS topics to Zenoh key expressions — DDS samples flow across the Zenoh network and back.

zerodds-zenoh-bridge --listen tcp/0.0.0.0:7447

From DDS-XRCE / microcontrollers

If your endpoints are deeply resource-constrained microcontrollers, the xrce-agent bridges DDS-XRCE clients (serial or UDP) into the DDS data space — the device speaks the tiny XRCE protocol, the agent does the full DDS.

cargo run -p zerodds-xrce-agent

From CORBA / IIOP

If you run a CORBA-shaped enterprise stack (finance, aerospace, telecom signalling), the full CORBA 3.3 family lets you keep your IDL, swap the ORB for pure-Rust, and migrate IDL by IDL toward DDS over time.

zerodds-idlc --rust --corba -o gen/rust your.idl

Compare bridge coverage across all DDS vendors (§5 of the Vendor Matrix) →

Foundation — install, admin, observe

The cross-cutting tools that every ZeroDDS deployment uses, regardless of language or bridge. Install once, run anywhere.

Dev install

Pull the crates from crates.io, the Docker images from ghcr.io, or signed deb/rpm packages from packages.zerodds.org. All three give you a working ZeroDDS runtime in under a minute.

cargo add zerodds-dcps zerodds-rtps zerodds-discovery

Install reference →

Admin tooling

zerodds-cli ships participant inspection, topic listing, QoS dump and SPDP probing. Pair it with dds-lint to validate IDL files before they reach production.

zerodds participants list --domain 0

Tools reference →

Inspect — Reality Inspector hook

zerodds-inspect-endpoint is a feature-gated tap that opens a side channel into a running participant. Pair with the external PDE Reality Inspector to see samples in flight.

cargo run --features inspect

Inspect docs →

Monitoring

zerodds-monitor exposes 31 first-class metrics through a Prometheus text endpoint and W3C-Trace-Context headers. zerodds-observability-otlp pushes the same data to any OpenTelemetry collector.

curl http://localhost:9100/metrics

Monitor docs →

Record / replay

zerodds-recorder writes .zddsrec — a deterministic record-and-replay format with stable indexes. Use it for CI fixtures, regression captures or production post-mortems.

zerodds record --topic Temperature --output run.zddsrec

Recorder docs →

IDL features & usage

All language bindings and bridges share the same OMG IDL 4.2 grammar. Write your interfaces once, generate native types for seven languages, keep them wire-compatible across the bus.

XTypes 1.3 evolution

Annotations (@mutable, @final, @appendable, @optional) drive type evolution. Old readers stay compatible with new writers if the annotations allow it.

Bitsets, bitmasks, unions

Full IDL 4.2 type system — bitsets for flag arrays, bitmasks for enumerable flag sets, unions for tagged variants. All seven languages render them idiomatically.

Modules & include

Group interfaces in modules, reuse with #include. Generated code mirrors module structure in language-natural namespacing (Rust modules, C++ namespaces, Java packages…).

From .idl to seven native types

Open the IDL subsystem →