author-environment
Create or modify Isaac Lab-Arena environments, scenes, tasks, completion predicates, placement constraints, and environment…
Starts, reuses, verifies, and explicitly stops the local Dockerized OpenPI inference server used by Isaac Lab-Arena Pi0RemotePolicy experiments. Use when serving pi05 or pi0 locally, selecting an OpenPI port or variant, checking whether the OpenPI server is ready, handling an
$ npx -y skills add isaac-sim/isaaclab-arena --skill serve-openpi-policy --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/serve-openpi-policyContext preview
The summary Claude sees to decide when to auto-load this skill.
Starts, reuses, verifies, and explicitly stops the local Dockerized OpenPI inference server used by Isaac Lab-Arena Pi0RemotePolicy experiments. Use when serving pi05 or pi0 locally, selecting an OpenPI port or variant, checking whether the OpenPI server is ready, handling an
name: serve-openpi-policy description: Starts, reuses, verifies, and explicitly stops the local Dockerized OpenPI inference server used by Isaac Lab-Arena Pi0RemotePolicy experiments. Use when serving pi05 or pi0 locally, selecting an OpenPI port or variant, checking whether the OpenPI server is ready, handling an OpenPI server conflict, or when run-experiment discovers a local OpenPI policy dependency. Do not use for running Experiment Definitions, OSMO submission, other policy providers, training, or general Arena container setup. allowed-tools: Read Grep Glob Skill Bash(git rev-parse --show-toplevel) Bash(test -x isaaclab_arena_openpi/docker/run_openpi_server.sh) Bash(docker images -q isaaclab_arena:openpi_server) Bash(docker logs *) Bash(docker ps *) Bash(ss -ltn *) Bash(./isaaclab_arena_openpi/docker/run_openpi_server.sh *)
Start one local OpenPI inference server and finish with a verified endpoint for an Arena `Pi0RemotePolicy` client. Keep Experiment execution, artifacts, OSMO, and other policy providers outside this skill.
Before acting, read:
first-run costs, and readiness message.
mapping.
Treat the current checkout as the source of truth. Use the wrapper rather than reconstructing its Docker command or calling `build_server_image.sh` directly. Report any mismatch between this skill, the documentation, and the wrapper.
1. Confirm the repository root and executable wrapper. 2. Resolve the variant and port from the request or the Experiment's policy configuration. Use `pi05` and port `8000` only when neither source specifies them. 3. Accept only variants supported by the wrapper: `pi05` or `pi0`. Require an integer port from 1 through 65535. 4. Serve only a loopback client endpoint such as `127.0.0.1` or `localhost`. If an Experiment names another host, treat it as an external server dependency and return control to `run-experiment`; do not start an unrelated local server.
When called by `run-experiment`, identify OpenPI from the resolved policy type `isaaclab_arena_openpi.policy.pi0_remote_policy.Pi0RemotePolicy` or its registered name `pi0_remote`, not from the Experiment filename. Match the server's variant and port to the policy configuration. If Runs request different variants on the same port, stop and ask the user to choose separate ports or one variant.
Inspect before launching:
docker images -q isaaclab_arena:openpi_server
docker ps --no-trunc --filter ancestor=isaaclab_arena:openpi_server \
--format '{{.ID}}\t{{.Names}}\t{{.Command}}'
ss -ltnThe wrapper assigns a random container name, so never identify a server by a hardcoded name. For each candidate, use its full command to match the selected port and the variant-specific policy configuration, then use `docker logs <exact-container>` to require this maintained readiness line for the selected port:
INFO:websockets.server:server listening on 0.0.0.0:<port>
Reuse the server only when the container is still running, its variant and port match, and its logs show readiness. A listening TCP port alone is insufficient evidence that it speaks the OpenPI protocol. If the selected port is occupied by an incompatible server or another process, do not stop it. Report the conflict and ask whether to select a different port or explicitly stop its owner.
Read the current build-time, image-size, and checkpoint-download estimates from the checked-out OpenPI workflow and disclose them before a missing-image or uncached-variant launch. Obtain confirmation before starting that large build or download. Do not rely on copied estimates when the checked-out documentation has newer values.
Use `-r` only when the user explicitly requests a forced rebuild and confirms it. Do not push an image, run a no-cache build, clear caches, or install or change Docker, GPU drivers, or the NVIDIA Container Toolkit through this skill.
Start the wrapper from the repository root in a retained terminal session that runs asynchronously from this workflow. Keep the wrapper in the foreground of that session, record the returned session or task handle, and pass the resolved values explicitly so the effective server matches the Experiment:
./isaaclab_arena_openpi/docker/run_openpi_server.sh -v <pi05-or-pi0> -p <port>
Retain the terminal session handle and poll its output without waiting for the command to finish; the command is expected to remain active for the server's lifetime. Do not append `&`, use `nohup`, or replace the wrapper with a detached Docker command. Do not report readiness until the wrapper remains running and emits the readiness line for the selected port. After readiness, leave that session active while returning control to `run-experiment`.
The wrapper owns the image build, host-network Docker launch, GPU access, checkpoint cache, and cache-ownership cleanup; do not duplicate those operations.
On failure, preserve and report the wrapper output. Do not silently rebuild, change variants or ports, stop another process, or retry with different settings.
Return the variant, loopback host, port, readiness evidence, exact container identity, and retained terminal session handle when this workflow started the server. If `run-experiment` requested the server, return control to it while the retained session remains active so it can execute the Experiment and verify artifacts. Do not invoke the Experiment Runner here.
When the selected variant or port differs from the Experiment configuration, provide every corresponding per-Run Hydra override so the client and server remain compatible, f
Isaac Lab - Arena is a robotics simulation framework that enhances NVIDIA Isaac Lab by providing a composable, scalable system for creating diverse simulation environments and evaluating robot learning policies. The framework enables developers to rapidly prototype and test robotic tasks with various robot embodiments, objects, and environments.
Create or modify Isaac Lab-Arena environments, scenes, tasks, completion predicates, placement constraints, and environment…
Creates Arena-conformant commits and pull requests. Enforces DCO sign-off (git commit -s), no AI attribution lines (no…
Bootstraps and maintains the Docker environment used when contributing to Isaac Lab-Arena. Use when preparing a checkout for…
Downloads Isaac Lab-Arena OSMO workflow output (evaluation results, videos, HDF5 demos) to a local folder with `osmo data…
Runs the Isaac Lab-Arena pytest suite across its three required phases (no-cameras, with-cameras, with-subprocess) inside the…
Runs existing Isaac Lab-Arena Experiment Definitions locally with experiment_runner.py in a ready native or Docker runtime,…