inspect-robots-isaacsim
An Isaac Lab (Isaac Sim) embodiment plugin for Inspect Robots — the "Inspect AI for robotics".
Inspect Robots factors a robotics eval into two swappable inputs: a Policy (the VLA
"brain") and an Embodiment (the "body + world"). This package supplies the
second one, backed by a real Isaac Lab physics simulation, so you can run any
compatible VLA against your Isaac Sim setup.
The default profile is a 7-DoF Franka Panda under joint-position control with
a binary gripper (action dimension = num_arm_joints + 1 = 8).
Install
This package installs and registers on any machine, but reset()/step() need
a working Isaac Lab environment (NVIDIA Omniverse + GPU) — Isaac Sim is not a
PyPI dependency and is imported lazily.
# inside the conda/venv that already has isaaclab + isaacsim available
pip install inspect-robots inspect-robots-isaacsim
Use it
The embodiment is discovered through the inspect_robots.embodiments entry point, so
it appears in the CLI without any import:
inspect-robots list embodiments # -> includes "isaacsim"
inspect-robots run \
--task my-benchmark \
--policy my-vla \
--embodiment isaacsim \
-E task_id=Isaac-Lift-Cube-Franka-v0 \
-E headless=true
Or programmatically:
from inspect_robots import eval
logs = eval("my-benchmark", "my-vla", "isaacsim")
print(logs[0].results.metrics)
Constructing directly (e.g. for a non-Franka arm or extra cameras):
from inspect_robots_isaacsim import IsaacSimEmbodiment
emb = IsaacSimEmbodiment(
task_id="Isaac-Open-Drawer-Franka-v0",
num_arm_joints=7,
cameras=[("base_rgb", 224, 224), ("wrist_rgb", 224, 224)],
control_hz=30.0,
headless=True,
)
Compatibility
Inspect Robots fail-fast-checks the (policy, embodiment) pair before any rollout. To
run against this embodiment your policy must emit 8-D joint_pos actions
(control_mode="joint_pos", gripper="binary") and require only observation
keys this task provides. The mock cubepick policies (2-D eef_delta_pos) are
intentionally incompatible — bring a Franka-trained VLA.
Mapping your task
Isaac Lab tasks vary in their observation-dict layout and success signal. The constructor exposes hooks so you don't edit the adapter:
| Argument | Purpose |
|---|---|
obs_group |
top-level obs-dict group to read (default "policy") |
image_keys / state_keys |
map Inspect Robots keys → your task's raw dict keys |
success_info_key |
where the task reports success in info (default "success") |
num_arm_joints |
arm DoF; action dim is this + 1 for the gripper |
Memory & GPU hygiene
Long unattended evals should not creep in RAM or VRAM. This adapter is built to hold nothing per step, but a few usage rules keep a full run leak-free:
-
Free the simulator when done.
eval()closes what it resolves: an embodiment looked up by registry name (e.g.embodiment="isaacsim") is closed when the run finishes. An embodiment object you construct is yours to close — an openSimulationAppholds GPU memory until the process exits, so use it as a context manager (orclose()in afinally):with IsaacSimEmbodiment() as emb: eval("my-bench", "my-vla", emb) # GPU + sim torn down here
close()is idempotent and safe to call before launch or twice. -
One simulator per process. Isaac Sim is a hard process singleton; if you construct several embodiments the adapter reuses the one live
SimulationApprather than launching (and leaking) a second. -
Stream frames to disk for long episodes. Inspect Robots keeps each step's observation — including camera frames — in the per-trial record. Pass
store_frames=Truetoeval()so frames go to disk side-cars instead of RAM. (Per-trial records are released after each scene is scored, so there is no cross-trial accumulation regardless.) -
Skip rendering you don't need. If your scorer is state/oracle based, build the embodiment with
cameras=()to avoid allocating images at all.
The adapter never stores tensors on self, and copies observations off Isaac's
reused buffers (.astype), so a step loop holds no growing references — a
tracemalloc regression test asserts flat RAM over thousands of steps.
Develop / test
The test suite runs without Isaac (it checks spaces, semantics, protocol conformance, compatibility, and registry wiring):
pip install -e ".[dev]"
pytest -q
License
MIT.
Metadata
Release files for inspect-robots-isaacsim 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| inspect_robots_isaacsim-0.1.1.tar.gz | 14.4 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| inspect_robots_isaacsim-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 25.3 kB
Release files / inspect_robots_isaacsim-0.1.1.tar.gz
| Download URL | inspect_robots_isaacsim-0.1.1.tar.gz |
|---|---|
| Size | 14.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8c01ba1915ba987588ac23324562354d7eecd8379373c9db146a1c925abf64cd
|
|
BLAKE2b-256 checksum How to use checksums |
f284011df4f773c97123180d2638df245cd44deef14a2464bf247e0e31ce02f9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 9, 2026.
Transparency logRelease files / inspect_robots_isaacsim-0.1.1-py3-none-any.whl
| Download URL | inspect_robots_isaacsim-0.1.1-py3-none-any.whl |
|---|---|
| Size | 10.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a9fb32321c43f9b5f53419b51b7e6dc12b2a231ed2452045aa14c140a9964b8c
|
|
BLAKE2b-256 checksum How to use checksums |
cbe5a86c99ba261e92cc476ba34da01beec4a700610cd9d754baba5f25b85a30
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 9, 2026.
Transparency logSecurity for inspect-robots-isaacsim 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for inspect_robots_isaacsim-0.1.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 9, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.