[07/25] Added Kornia rust nodes in the hub for V4L / Gstreamer cameras and Sobel image processing.
[06/25] Add support for git based node, dora-vggt for multi-camera depth estimation, and adding robot_descriptions_py as a default way to get urdfs within dora.
[05/25] Add support for dora-pytorch-kinematics for fk and ik, dora-mediapipe for pose estimation, dora-rustypot for rust serialport read/write, points2d and points3d visualization in rerun.
[04/25] Add support for dora-cotracker to track any point on a frame, dora-rav1e AV1 encoding up to 12bit and dora-dav1d AV1 decoding,
[03/25] Add support for dora async Python.
[03/25] Add support for Microsoft Phi4, Microsoft Magma.
git clone https://github.com/dora-rs/dora.git
cd dora
cargo build --release -p dora-cli
PATH=$PATH:$(pwd)/target/release
Run
Run the yolo python example:
## Create a virtual environment
uv venv --seed -p 3.11
## Install nodes dependencies of a remote graph
dora build https://raw.githubusercontent.com/dora-rs/dora/refs/heads/main/examples/object-detection/yolo.yml --uv
## Run yolo graph
dora run yolo.yml --uv
Make sure to have a webcam
To stop your dataflow, you can use ctrl+c
To understand what is happening, you can look at the dataflow with:
In the above example, we can understand that the camera is sending image to both the rerun viewer as well as a yolo model that generates bounding box that is visualized within rerun.
Documentation
The full documentation is available on our website.
A lot of guides are available on this section of our website.
What is Dora? And what features does Dora offer?
Dataflow-Oriented Robotic Architecture (dora-rs) is a framework that makes creation of robotic applications fast and simple.
dora-rs implements a declarative dataflow paradigm where tasks are split between nodes isolated as individual processes.
The dataflow paradigm has the advantage of creating an abstraction layer that makes robotic applications modular and easily configurable.
TCP Communication and Shared Memory
Communication between nodes is handled with shared memory on a same machine and TCP on distributed machines. Our shared memory implementation tracks messages across processes and discards them when obsolete. Shared memory slots are cached to avoid new memory allocation.
Arrow Message Format
Nodes communicate with Apache Arrow Data Format.
Apache Arrow is a universal memory format for flat and hierarchical data. The Arrow memory format supports zero-copy reads for lightning-fast data access without serialization overhead. It defines a C data interface without any build-time or link-time dependency requirement, that means that dora-rs has no compilation step beyond the native compiler of your favourite language.
Opentelemetry
dora-rs uses Opentelemetry to record all your logs, metrics and traces. This means that the data and telemetry can be linked using a shared abstraction.
Opentelemetry is an open source observability standard that makes dora-rs telemetry collectable by most backends such as elasticsearch, prometheus, Datadog…
Opentelemetry is language independent, backend agnostic, and easily collect distributed data, making it perfect for dora-rs applications.
We are passionate about supporting contributors of all levels of experience and would love to see
you get involved in the project. See the
contributing guide to get started.
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 datafl
#
Website | Python API | Rust API | Guide | Discord
Highlights
ros2
.Latency benchmark with Python API for both framework, sending 40M of random bytes.
Latest News 🎉
2025
llama.cpp
.Support Matrix
Rust ✅
C/C++ 🆗
ROS2 >= Foxy 🆗
MacOS: Arm 64 ⭐✅
Windows: x64_86 🆗
WSL: x64_86 🆗
Android: 🛠️ (Blocked by: https://github.com/elast0ny/shared_memory/issues/32)
IOS: 🛠️
Standard Specification 🛠️
Cuda IPC 📐
cargo: Rust Node ✅
Node Hub
Mac🛠️
Metal🛠️
Examples
Getting Started
Installation
Additional installation methods
Install dora with our standalone installers, or from crates.io:
With cargo
With Github release for macOS and Linux
With Github release for Windows
With Source
Run
To stop your dataflow, you can use ctrl+c
Documentation
The full documentation is available on our website. A lot of guides are available on this section of our website.
What is Dora? And what features does Dora offer?
Dataflow-Oriented Robotic Architecture (
dora-rs
) is a framework that makes creation of robotic applications fast and simple.dora-rs
implements a declarative dataflow paradigm where tasks are split between nodes isolated as individual processes.The dataflow paradigm has the advantage of creating an abstraction layer that makes robotic applications modular and easily configurable.
TCP Communication and Shared Memory
Communication between nodes is handled with shared memory on a same machine and TCP on distributed machines. Our shared memory implementation tracks messages across processes and discards them when obsolete. Shared memory slots are cached to avoid new memory allocation.
Arrow Message Format
Nodes communicate with Apache Arrow Data Format.
Apache Arrow is a universal memory format for flat and hierarchical data. The Arrow memory format supports zero-copy reads for lightning-fast data access without serialization overhead. It defines a C data interface without any build-time or link-time dependency requirement, that means that
dora-rs
has no compilation step beyond the native compiler of your favourite language.Opentelemetry
dora-rs uses Opentelemetry to record all your logs, metrics and traces. This means that the data and telemetry can be linked using a shared abstraction.
Opentelemetry is an open source observability standard that makes dora-rs telemetry collectable by most backends such as elasticsearch, prometheus, Datadog…
Opentelemetry is language independent, backend agnostic, and easily collect distributed data, making it perfect for dora-rs applications.
ROS2 Bridge
Note: this feature is marked as unstable.
Contributing
We are passionate about supporting contributors of all levels of experience and would love to see you get involved in the project. See the contributing guide to get started.
Discussions
Our main communication channels are:
Feel free to reach out on any topic, issues or ideas.
We also have a contributing guide.
License
This project is licensed under Apache-2.0. Check out NOTICE.md for more information.
Further Resources 📚