rfx organizes its API into focused package surfaces:
| Surface | Purpose |
|---|---|
rfx.robot | Robot contract, config, discovery, and hardware-facing abstractions |
rfx.sim | Simulation and mock execution |
rfx.collection | Dataset recording and collection contracts |
rfx.runtime | Lifecycle, health, CLI, operational helpers |
rfx.teleop | Teleoperation and high-rate recording built on the same primitives |
Intent
- Keep the middleware core small and explicit.
- Treat simulation as a primitive, not an afterthought.
- Treat collection as a primitive, not a script on the side.
- Keep robot adapters separate from framework identity.
- Let workflow helpers compose on top of the primitives instead of defining them.

