Adora
Agentic Dataflow-Oriented Robotic Architecture – a 100% Rust framework for building real-time robotics and AI applications.
Why Adora?
Performance
- 10-17x faster than ROS2 Python – 100% Rust internals with zero-copy shared memory IPC for messages >4KB, flat latency from 4KB to 4MB payloads
- Apache Arrow native – columnar memory format end-to-end with zero serialization overhead; shared across all language bindings
Developer Experience
- Single CLI, full lifecycle –
adora runfor local dev,adora up/startfor distributed prod, plus build, logs, monitoring, record/replay all from one tool - Declarative YAML dataflows – define pipelines as directed graphs, connect nodes through typed inputs/outputs, optional type annotations with static validation
- Multi-language nodes – write nodes in Rust, Python, C, or C++ with native APIs (not wrappers); mix languages freely in one dataflow
- Reusable modules – compose sub-graphs as standalone YAML files with typed inputs/outputs, parameters, and nested composition
- Hot reload – live-reload Python operators without restarting the dataflow
Production Readiness
- Fault tolerance – per-node restart policies (never/on-failure/always), exponential backoff, health monitoring, circuit breakers with configurable input timeouts
- Distributed by default – local shared memory between co-located nodes, automatic Zenoh pub-sub for cross-machine communication, SSH-based cluster management with label scheduling
- Configurable queue policies –
drop_oldest(default) orbackpressureper input, with metrics on dropped messages - OpenTelemetry – built-in structured logging with rotation/routing, metrics, distributed tracing
Debugging and Observability
- Record/replay – capture dataflow messages to
.adorecfiles, replay offline at any speed with node substitution - Topic inspection –
topic echoto print live data,topic hzTUI for frequency analysis,topic infofor schema and bandwidth - Resource monitoring –
adora topTUI showing per-node CPU, memory, queue depth, network I/O across all machines - Log aggregation – subscribe to
adora/logsto receive structured log messages from all nodes without extra wiring - Trace inspection –
trace listandtrace viewfor viewing coordinator spans without external infrastructure
Ecosystem
- Communication patterns – built-in service (request/reply), action (goal/feedback/result), and streaming (session/segment/chunk) patterns via well-known metadata keys
- ROS2 bridge – bidirectional interop with ROS2 topics, services, and actions
- In-process operators – lightweight functions that run inside a shared runtime, avoiding per-node process overhead