Skip to main content

The Inspect AI for robotics — an evaluation framework for VLA (vision-language-action) models across real robots and simulators.

Project description

🤖 Inspect Robots

The Inspect AI for robotics

An open-source evaluation framework for physical AI and VLA (vision-language-action) models.

Define a robotics benchmark once, then run any policy against any compatible embodiment — a real robot or a simulator — with reproducible logs and first-class Rerun visualization.

CI Docs Python License: MIT Typed Coverage

Documentation · Quickstart · Concepts · For LLMs


One framework, two swappable inputs

LLM evaluations have a single swappable input: the model. Robotics evaluations have two — and Inspect Robots makes both first-class and orthogonal:

🧠 Policy — the VLA The "brain". Maps an observation + instruction to an action chunk (a horizon of actions executed open-loop, as π0 / ACT / diffusion policies do).
🦾 Embodiment — the robot or sim The "body + world". Produces observations, executes actions, owns the action/observation spaces and control rate. Real-robot-first; sims are a stricter special case.

A Task — a dataset of Scenes (initial conditions, instructions, success targets) plus scorers — is defined independently of both. Before any rollout, Inspect Robots checks the (policy, embodiment) pair is compatible (action/observation spaces, semantics, control rate, scene realizability) and fails fast if not.

Install

pip install inspect-robots            # core (numpy only)
pip install "inspect-robots[rerun]"   # + Rerun visualization

Quickstart

With a default policy/embodiment configured once in ~/.config/inspect-robots/config.ini, just tell the robot what to do:

inspect-robots "place the spoon on the plate"                # zero-config ad-hoc eval
inspect-robots "place the spoon on the plate" --sim          # same, on your configured sim

The full command line resolves any registered task/policy/embodiment (builtins + installed plugins):

inspect-robots list                                          # registered components
inspect-robots run --task cubepick-reach --policy scripted --embodiment cubepick
inspect-robots inspect logs/cubepick-reach_*.json            # results table

And everything is a Python API. No hardware or simulator needed — the dependency-free CubePick mock world exercises the whole stack:

from inspect_robots import eval
from inspect_robots.mock import CubePickEmbodiment, ScriptedPolicy
from inspect_robots.scene import Scene
from inspect_robots.scorer import success_at_end
from inspect_robots.task import Task

task = Task(
    name="cubepick-reach",
    scenes=[Scene(id=f"layout-{i}", instruction="reach the cube", init_seed=i) for i in range(5)],
    scorer=success_at_end(),
    max_steps=80,
)

# The two swappable inputs: a policy (VLA) and an embodiment (robot/sim).
(log,) = eval(task, ScriptedPolicy(), CubePickEmbodiment())
print(log.status, log.results.metrics)   # success {'success_at_end': 1.0}

Why Inspect Robots

  • 🌍 Real-world first. Interfaces assume real-robot reality — human-in-the-loop reset, no privileged success oracle, wall-clock control rate. Simulators just offer more (seeding, privileged success, rendering) via opt-in capabilities.
  • 🔁 Reproducible. Every run yields an immutable, schema-versioned EvalLog with the resolved config, git revision, and package versions — re-readable across releases, and re-scorable offline.
  • 🪶 Light core. Depends only on NumPy. Rerun and simulator/VLA backends are optional extras and separately installable plugins.
  • 🛑 Safe unattended. An explicit error taxonomy separates "record and continue" from "halt and require a human", so a faulted robot never auto-advances overnight.
  • 🎞️ Rerun visualization. Stream camera images, 3D poses, joint/action time-series, and success markers to a .rrd recording.
  • 🧩 Pluggable. Ship inspect-robots-maniskill or inspect-robots-openvla as separate packages — entry points make them appear in inspect-robots list automatically.
  • ⚙️ VLA-native. Action chunking, open-loop execution, and ACT/ALOHA temporal ensembling are built in, with action semantics (control mode, rotation representation, gripper, frame) that make compatibility and ensembling correct.

How it maps to Inspect AI

If you know Inspect AI, you already know Inspect Robots.

Inspect AI Inspect Robots
Model Policy (VLA) + Embodiment (two inputs)
Task = dataset + solver + scorer Task = scenes + controller + scorer
Sample Scene
Solver chain Controller middleware (chunking, ensembling, smoothing)
eval()EvalLog eval()EvalLog
@task / @solver / @scorer + registry @task / @policy / @embodiment / @scorer + entry points

This repository is the framework (the "Inspect AI for robotics"). Concrete benchmarks (the "Inspect Evals for robotics") and backend adapters live in separate plugin packages.

Documentation

Full guides and an auto-generated API reference live at inspectrobots.org. LLM-friendly versions: llms.txt and llms-full.txt.

Development

uv venv && uv pip install -e ".[dev]"
uv run pre-commit install          # ruff + mypy on commit, 100% coverage on push
uv run pytest --cov                 # 100% coverage required
uv run ruff check . && uv run mypy

Pre-commit hooks and a blocking CI coverage gate keep main green. See CONTRIBUTING.md and the design docs in plans/.

Citation

If you use Inspect Robots in your research, please cite it:

@software{inspect-robots,
  author  = {Robocurve},
  title   = {Inspect Robots: The open-source evaluation framework for physical AI},
  year    = {2026},
  url     = {https://github.com/robocurve/inspect-robots},
  version = {0.3.0},
  license = {MIT}
}

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

inspect_robots-0.3.1.tar.gz (73.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

inspect_robots-0.3.1-py3-none-any.whl (56.1 kB view details)

Uploaded Python 3

File details

Details for the file inspect_robots-0.3.1.tar.gz.

File metadata

  • Download URL: inspect_robots-0.3.1.tar.gz
  • Upload date:
  • Size: 73.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for inspect_robots-0.3.1.tar.gz
Algorithm Hash digest
SHA256 0621d4ce6f896a04f69afc2ea29b0c6b9384cc40ebdd020c43c83374c2cd323f
MD5 35b4571e59a831cd14910049e9b293ec
BLAKE2b-256 690a51842c179ec4b773a82f1d5821705cdd5c0313d476d93ceff5129fc57ea9

See more details on using hashes here.

Provenance

The following attestation bundles were made for inspect_robots-0.3.1.tar.gz:

Publisher: release.yml on robocurve/inspect-robots

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file inspect_robots-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: inspect_robots-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 56.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for inspect_robots-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 46c4316e1c9ae053c35938e4ada457e9c897a9bb311d18368feb01e818ef93e0
MD5 9c046ee3b637175ff0881a201ff5d5d5
BLAKE2b-256 245962fe490b46662618d9bfb9e49d17e2cbf37f5d5c5b378004fd29aa8711a5

See more details on using hashes here.

Provenance

The following attestation bundles were made for inspect_robots-0.3.1-py3-none-any.whl:

Publisher: release.yml on robocurve/inspect-robots

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page