dora-rs/dora

DORA (Dataflow-Oriented Robotic Architecture) is middleware designed to streamline and simplify the creation of AI-based robotic applications. It offers low latency, composable, and distributed dataflow capabilities. Applications are modeled as directed graphs, also referred to as pipelines.

What it solves

Dora provides a high-performance framework for building real-time robotics and AI applications. It addresses the latency and throughput bottlenecks often found in traditional robotics frameworks (like ROS2 Python) by utilizing a Rust-based core and zero-copy shared memory communication, making it suitable for data-heavy AI pipelines.

How it works

Dora uses a dataflow-oriented architecture where applications are defined as directed graphs in YAML files. Nodes (standalone processes) or operators (lightweight in-process functions) are connected via typed inputs and outputs.

Technically, it employs:

  • Zenoh SHM data plane: Allows nodes to publish data directly via shared memory, bypassing the daemon for lower latency.
  • Apache Arrow: Uses a columnar memory format end-to-end to eliminate serialization overhead.
  • Distributed Orchestration: A Coordinator manages the lifecycle of dataflows across multiple Daemons (one per host), enabling seamless local and cross-machine communication.

Who it’s for

It is designed for robotics and AI engineers who need to build complex, real-time systems that require high throughput (e.g., for camera feeds or LLM outputs) and support for multiple languages (Rust, Python, C, C++).

Highlights

  • Extreme Performance: 10-17x faster than ROS2 Python with zero-copy shared memory for large payloads.
  • Multi-language Support: Native APIs for Rust, Python, C, and C++ allowing mixed-language dataflows.
  • Production-Ready Tooling: Includes fault tolerance (restart policies), distributed cluster management, and OpenTelemetry integration for tracing and metrics.
  • Observability: Built-in TUI for resource monitoring (dora top), topic inspection, and record/replay capabilities for regression testing.
  • Node Hub: A package manager for pulling reusable, versioned nodes (e.g., YOLO, LLMs) into a project.

Related

  • Project
  • Project
  • Project
  • Project
  • Project