Skip to main content

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 open SimulationApp holds GPU memory until the process exits, so use it as a context manager (or close() in a finally):

    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 SimulationApp rather 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=True to eval() 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)

Source distribution for inspect-robots-isaacsim 0.1.1
File Size Uploaded Provenance
inspect_robots_isaacsim-0.1.1.tar.gz 14.4 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for inspect-robots-isaacsim 0.1.1
File Interpreter ABI Platform
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 log

Release 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 log

Security 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.

Select from 2 files

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 log

A 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.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page