Skip to main content

rfx

The robotics framework for the foundation model era

Built from scratch for the workflow of collect demos, train a policy, deploy, and iterate. Rust core for real-time control, Python SDK for fast research.

Simple CLI. Any robot. Any policy.

rfx record --robot so101 --repo-id my-org/demos --episodes 10
rfx train --data demos/ --config train.yaml
rfx deploy runs/my-policy --robot so101
rfx deploy hf://user/my-policy --robot go2 --duration 60

Quickstart

Get up and running with rfx in minutes

Installation

Install rfx with pip, uv, or from source

CLI Reference

Learn the three-command CLI

API Reference

Explore the Python SDK

Why rfx?

ROS was built for message passing between components. We’re in a different era — the workflow is collect demos, train a policy, deploy, iterate. rfx is built from scratch for that loop.

Minimal CLI

rfx record, rfx train, rfx deploy, rfx doctor — focused on the learning workflow

Three-method robot interface

observe(), act(), reset() — same API for sim and real

Self-describing models

Save once, load anywhere, deploy with zero config

HuggingFace Hub native

Push and pull policies like you push datasets

Rust core

Real-time control with zero overhead

Zenoh transport

Invisible plumbing, there when you need it

Supported Hardware

SO-101

6-DOF robotic arm with USB serial interface

Unitree Go2

Quadruped robot with Ethernet/Zenoh transport

Custom Robots

Implement observe()/act()/reset() or write a YAML config

Key Features

Every robot — simulated or real — implements three methods: observe(), act(), and reset(). Same API across hardware platforms and simulation backends.
Every saved model is a self-describing directory with architecture, robot config, normalizer state, and training metadata. Load anywhere, deploy with zero configuration.
Support for Genesis, MuJoCo MJX, and Mock backends. Same robot interface across all simulators.
Push and pull policies from HuggingFace Hub. Deploy directly from Hub URLs with rfx deploy hf://user/policy.
Rust core with Python bindings via PyO3. Control loop with rate control, jitter tracking, and clean shutdown.
Native support for LeRobot dataset format. Record demonstrations and push to HuggingFace Hub.

Community

GitHub

Source code, issues, and discussions

Discord

Join the community chat

Build docs developers (and LLMs) love