Skip to content

Bubbaloop vs ros-z

Both Bubbaloop and ros-z are Rust-native and built on Zenoh. They share the same transport layer but serve completely different purposes.


At a Glance

Bubbaloop ros-z
What it is Hardware AI agent runtime Pure-Rust ROS 2 reimplementation on Zenoh
By Kornia ZettaScale (the Zenoh team)
Transport Zenoh Zenoh (same protocol)
Goal AI agents that control hardware ROS 2 compatibility without DDS/C++
Serialization Protobuf CDR (ROS 2 native) + Protobuf
Languages Rust, Python, TypeScript Rust, Python, Go
AI agents Built-in (multi-agent, MCP, 4-tier memory) None
ROS 2 compat No (different API) Yes (wire-compatible, bridge to existing nodes)
Maturity Production-focused Experimental (v0.1.0-rc13)
GitHub ~600 stars ~160 stars

Different Problems, Same Transport

Bubbaloop answers: "How do I make AI agents orchestrate cameras, sensors, and IoT devices?"

  • Application-layer runtime: daemon, agents, MCP server, telemetry
  • Nodes are independent services that publish to Zenoh topics
  • Built-in multi-agent reasoning with memory and tool dispatch

ros-z answers: "How do I get ROS 2 semantics without the DDS/C++ baggage?"

  • Middleware-layer reimplementation: topics, services, actions — all in Rust
  • Wire-compatible with existing ROS 2 nodes via bridge
  • Eliminates DDS discovery complexity, multicast issues, C++ runtime

The ZettaScale Zenoh Ecosystem

ros-z exists alongside two other Zenoh-for-ROS approaches. Understanding all three clarifies where each fits:

Layer Project What it does
Bridge zenoh-bridge-ros2dds Tunnels existing DDS traffic over Zenoh. No code changes.
RMW rmw_zenoh_cpp (ros2/rmw_zenoh) Official ROS 2 middleware plugin. Drop-in DDS replacement. Tier-1 in Kilted.
Native ros-z Pure Rust ROS 2 stack on Zenoh. No C++ at all. New API.
Application Bubbaloop AI agent runtime on Zenoh. Not ROS 2. Different abstraction.

Bubbaloop and ros-z occupy different layers. ros-z replaces the ROS 2 communication stack. Bubbaloop replaces the entire approach with an agent-first model.


Feature Comparison

Communication

Both use Zenoh, so they share the same transport characteristics: microsecond latency, shared memory, TCP/UDP/QUIC, automatic peer discovery, works across NAT.

Bubbaloop ros-z
Topic model Zenoh key expressions ROS 2 topics mapped to Zenoh key expressions
Services Zenoh queryables ROS 2 services on Zenoh
Actions Not applicable (agent-based) ROS 2 actions on Zenoh
Schema Protobuf FileDescriptorSet CDR + Protobuf
Interop Other Zenoh clients Existing ROS 2 nodes via bridge

What ros-z Is Still Missing

ros-z is experimental (v0.1.0-rc13). Features not yet implemented:

  • Parameter server
  • Lifecycle nodes
  • tf2 (transform library)
  • Simulation time
  • rosbag2 recording
  • wait_for_service / wait_for_action
  • Component nodes

These are core ROS 2 features that many robotics applications depend on. Bubbaloop doesn't need them — it's a different model entirely.


AI Integration

Bubbaloop: - Native multi-agent runtime with Soul, 4-tier memory, adaptive heartbeat - 42 MCP tools for hardware control and data queries - Works with Claude, Ollama, and other LLM providers - Agents reason about hardware, remember across sessions, dispatch tools

ros-z: - No AI integration. It's a communication middleware. - Any LLM integration would be built on top as a separate node (same as ROS 2)


When to Use Bubbaloop

  • You want AI agents managing hardware — not just data transport
  • You're building camera/sensor/IoT systems, not traditional robots
  • You don't need ROS 2 package compatibility
  • You want a single binary with built-in dashboard, telemetry, and MCP

When to Use ros-z

  • You want ROS 2 semantics in pure Rust — topics, services, actions
  • You need to interoperate with existing ROS 2 nodes but want to ditch DDS
  • You're building a Rust-native robot and want type-safe ROS 2 communication
  • You're comfortable with experimental software and can work around missing features

When to Use rmw_zenoh Instead

If you want Zenoh transport but need the full ROS 2 ecosystem (Nav2, MoveIt2, Gazebo), use the official rmw_zenoh_cpp — it's a drop-in middleware replacement that works with all existing ROS 2 packages. ros-z is for teams who want to go further and eliminate the C++ stack entirely.


Can They Work Together?

Yes, naturally. Both speak Zenoh natively. A ros-z node publishing to a Zenoh topic is immediately visible to Bubbaloop's Zenoh session. No bridge needed — they're on the same bus.

A practical architecture: ros-z handles low-level robot communication (motor control, sensor drivers) while Bubbaloop agents handle high-level reasoning (what to do, when, and why).


Summary

Bubbaloop is an AI agent platform that uses Zenoh as its data plane. It doesn't try to be ROS 2.

ros-z is a pure-Rust ROS 2 reimplementation that uses Zenoh as its transport. It doesn't try to be an AI platform.

They share the same wire protocol and can coexist on the same Zenoh network. One handles the "what should the robot do?" question (Bubbaloop), the other handles the "how do messages flow between robot subsystems?" question (ros-z).