Skip to main content
The design target is not “ROS2 but smaller” and not “a framework for one robot”. It is a narrow AI-native middleware built around the loop of simulate → collect → train → deploy → iterate.

Layers

The Rust core owns the middleware primitives:
  • Transport
  • Node / runtime lifecycle
  • Discovery
  • Hardware adapters
  • Typed wire contracts
  • Realtime and control utilities
The Python SDK is the ergonomic surface for researchers and robotics engineers:
  • Robot interface
  • Session
  • deploy
  • collection
  • Policy artifacts
  • Simulation helpers
Robot-specific integrations are adapters — they are not the identity of the framework.Examples: SO-101, Go2, G1, simulator backends, camera backends.
record, deploy, train, and runs are built on top of the core and SDK. They are useful entry points, but they are not the whole framework.

First-class primitives

Simulation

Sim is a primitive, not an extension. The same observation/action contract holds across mock, simulators, and real robots.

Collection

Collection is a primitive, not a sidecar script. Observations become structured datasets with stable metadata and artifact lineage.

Artifacts

Saved policies are self-describing and portable across machines and embodiments.

Non-goals

rfx is not trying to be:
  • a navigation stack
  • a SLAM framework
  • a planner library
  • a full autonomy platform
  • a robot-specific SDK disguised as middleware

Influence from Dora

The useful inspiration from Dora is process/dataflow discipline, clear runtime boundaries, low-latency transport, observability, and small, sharp middleware semantics. The goal is to bring that clarity into an AI-native robotics framework where simulation and collection are part of the base contract.