Skip to main content
ROS2 serializes every message on every publish — even when the subscriber is on the same machine. Cerulion takes a different approach: local data stays in shared memory with zero copies, and serialization only happens when data actually needs to cross a network boundary. A 6 MB camera image moves between local nodes in ~60 ns. The same image serializes only if a remote subscriber exists. Zero copies locally. Serialize only for the network. Automatic.

Local Path — Zero Copies, Zero Serialization

When publisher and subscriber are on the same machine, data never leaves shared memory: Like a whiteboard in a shared office — the publisher writes, the subscriber reads. Nobody makes a photocopy. What happens step by step:
  1. Publisher allocates a region in shared memory (iceoryx2)
  2. Data is written directly — no serialization, no intermediate buffers
  3. Subscriber reads from the exact same memory location
  4. Total latency: ~60 ns regardless of message size
This is why a 6 MB camera image and a 24-byte pose message have the same transport overhead locally — neither gets serialized or copied. The cost is a pointer exchange, not a data transfer.

Network Path — Serialize Only When Necessary

When publisher and subscriber are on different machines, serialization happens asynchronously on a background thread: Local subscribers still get ~60 ns latency even when network subscribers exist. The network path runs independently. What happens step by step:
  1. Publisher writes to shared memory — local subscribers see it immediately
  2. Publisher queues the message for the network background thread (non-blocking)
  3. Background thread serializes the data to bytes
  4. Serialized bytes are sent over Zenoh
  5. Remote subscriber receives and deserializes
  6. Latest-message semantics — if the publisher sends faster than the network delivers, only the newest message is queued
Network latency does not affect local subscribers. Even if the network is congested or down, local pub/sub continues at full speed.

Automatic Discovery

The system discovers topics and selects paths without manual configuration:
StepWhat Happens
1. DiscoveryCerulion discovers all available topics across every device on the network
2. Path selectionSystem checks if the topic exists locally or only on remote machines
3. Local matchTopic found locally → zero-copy shared memory path
4. Network fallbackTopic only on remote machine → Zenoh network path
5. AdaptationWhen remote subscribers appear or disappear, network publishing enables/disables automatically
Like labeled conveyor belts in a factory — each topic has its own belt, and the system automatically routes data through the fastest available path. You never touch the routing.
Ready to try Cerulion? Start with the quickstart and have a working camera-to-display pipeline in 5 minutes — or schedule a 15-min call with the team.