robocurve/inspect-robots
Open source evals for physical AI. Run any LLM/VLA on any arm/humanoid against any real/sim benchmark.
Inspect Robots – Evaluation Framework for Physical AI
What it is
- An open‑source Python library that lets you define a robotics benchmark once and then run any robot‑control policy (LLM‑driven agents, vision‑language models, scripted scripts, etc.) on any compatible embodiment – a real arm, a simulated robot, or a mock world.
- It records everything: sensor streams, policy transcripts, configuration, and scores, and stores them as replayable logs.
- Live visualisation is provided via the Rerun viewer, which can stream camera images, joint trajectories and scores while the robot moves.
Key concepts
- Task – a description of what the robot should do (e.g. “place the fork on the plate”).
- Embodiment – the robot or simulator that executes actions. Embodiments are discovered via Python entry‑points; installing a plugin (e.g.
inspect-robots-yam) makes a new robot appear. - Policy – the decision‑making component. Policies can be:
- a frontier LLM (via
inspect-robots-agent), - a VLA served by XPolicyLab (
xpolicylab), - a code‑as‑policy agent (
capx), - a simple scripted policy, or
- any custom client that follows the action contract.
- a frontier LLM (via
- EvalLog – an immutable JSON record containing the full config, git revision, metrics, and (optionally) camera frames.
- Rerun – optional visualisation that records a
.rrdfile and can be streamed to a remote viewer.
Typical workflow
- Install core + optional extras
uv venv && uv pip install "inspect-robots[rerun]" # or just `inspect-robots` for the numpy‑only core - Add a robot plugin (example for the YAM bimanual arm)
uv pip install inspect-robots-yam inspect-robots setup # wizard creates ~/.config/inspect-robots/config.ini - Start any required policy server (e.g. MolmoAct2 for the
molmoact2policy). - Run a task
inspect-robots "place the fork on the plate"- The command launches the Rerun viewer, streams data, and writes a log file.
- Inspect results
inspect-robots view logs/ # static HTML index inspect-robots inspect LOG.json # pretty‑print a single log inspect-robots video LOG.json # render stored frames to MP4 - Iterate – you can add voice feedback, summarize failures, or retry with learned notes using the built‑in
summarizecommand.
Supported robots & simulators (via first‑party plugins)
| Robot / World | Embodiment name | Package | Action space |
|---|---|---|---|
| I2RT YAM bimanual arm | yam_arms |
inspect-robots-yam |
14‑D joint positions |
| Franka FR3 / Panda | franka |
inspect-robots-franka |
8‑D joint positions |
| AgiBot A2 Ultra | a2_arms |
inspect-robots-agibot-a2 |
16‑D joint positions |
| Unitree G1 | g1_arms |
inspect-robots-unitree-g1 |
16‑D joint positions |
| SO‑ARM followers | so_arm |
inspect-robots-so101 |
6‑D joint positions |
| WidowX 250S | widowx |
inspect-robots-widowx |
7‑D end‑effector pose |
| Any ROS‑compatible arm | ros |
inspect-robots-ros |
configurable |
| Isaac Lab simulation | isaacsim |
inspect-robots-isaacsim |
joint positions |
| CubePick mock world (no hardware) | cubepick |
built‑in | 2‑D delta pose |
Extensibility
- New robots are added by publishing a Python package that registers an embodiment entry‑point and (optionally) a matching policy client.
- New policies are added similarly; the framework validates compatibility (action/observation shapes, control rate, etc.) before any motion starts.
- Optional extras (
rerun,inspect-robots-agent,inspect-robots-capx, …) are installed separately, keeping the core lightweight (NumPy only).
Why it matters
- Provides a single, reproducible evaluation pipeline for real‑world robotics research, bridging the gap between simulation benchmarks and physical experiments.
- Guarantees auditability: every run is a self‑describing log that can be re‑scored offline.
- Supports frontier AI policies (LLM agents, code‑as‑policy) alongside classic VLAs, making it easy to compare emerging models on the same hardware.
- Built‑in safety guardrails (error taxonomy, action bounds, human‑in‑the‑loop reset) prevent unattended robots from running away.
Getting started resources
- Quickstart guide:
docs/guide/quickstart.md - Rig reference (how to write a robot plugin):
docs/guide/rig-reference.md - Concepts overview:
docs/guide/concepts.md - Full CLI reference:
docs/guide/cli.md
Inspect Robots is currently in alpha; the API may change, so pin a released version if you depend on it.
Related
- Project
- Project
- Project
- Project
- Project