# Isaac Sim and Isaac Lab workflow

> Prepare a headless Isaac workload and verify its requirements before the first run.

Audience: Isaac Lab and robot integration engineers
Updated: 2026-08-02
Page: /docs/isaac-sim

## Current status

> **Private preview:** HIM can run approved Isaac repositories in its hosted environment. Access is currently limited to HIM’s internal team while we qualify more workloads. Your repository supplies its real headless command and outputs; HIM supplies the environment and GPU.

- [Open Isaac Lab task](/compute?recipe=isaac-simulation) — Configure a private Isaac simulation workload.
- [Connect an Isaac repository](/docs/him-package) — Add the package entrypoints and output contracts.

## The first hosted check

HIM qualifies each Isaac runtime with a small headless smoke workload before enabling larger jobs. The check loads the real repository command, runs a bounded number of environments and iterations, writes declared outputs, and stops. Its purpose is to verify the execution path—not to train a useful policy.

The next internal check uses the official 29-DOF Unitree G1 model in a fixed-base table-tennis scene. Builders iterate in MuJoCo, then HIM reruns selected candidates in Isaac Lab. The results stay in separate lanes because the physics engines are not interchangeable.

1. Add the generated .him folder to the repository and keep the project's existing headless Isaac command.
2. Add a package test for every required asset or motion file. If a converter expects numeric rows, verify the input has the expected column order and no header.
3. Run him doctor, him validate, and him test --local before spending GPU credits.
4. Launch a bounded SSH GPU machine with him compute only after approving the budget, then run the repository's native command there.
5. Inspect the output video, metrics, and logs. Scale iterations or environments only after the smoke run passes, then publish with him upload if desired.

> **You do not manage the cloud image:** Builders do not need an NGC token, Modal account, R2 keys, Docker registry, or GHCR image. Those belong to HIM's hosted runtime. Your repository supplies the command and code; HIM supplies the approved environment.

## Facts required before the first real run

- Exact Isaac Sim and Isaac Lab versions required by the repository. HIM pins and certifies the hosted image; builders do not need to publish one.
- NVIDIA driver, GPU model/VRAM, headless RTX/Vulkan/PhysX/camera/video probes, disk, timeout, and expected cost class.
- Recorded NVIDIA EULA acceptance and source/asset/output/media publication rights.
- Exact robot asset/world load, observation/action ordering and units, control rate/decimation, reset/seed, and termination mapping.
- Native train, play/evaluate, export, and render commands that the upstream repository already uses.
- An isolated evaluator plus trajectory and factual media outputs. Reward or LLM summaries are never authoritative metrics.

> **Visible challenge, private holdout:** HIM publishes the robot interface, units, control rate, scoring formula, trial ranges, failure codes, and a representative development scene. Ranked seeds and exact sampled launches stay with the server-owned evaluator, outside your repository and package.

## Validate the environment before the first job

1. Run him init . --template isaac-lab in the existing repository.
2. Set the native headless command the project already uses in .him/him.yaml.
3. Declare the robot assets, signal mapping, reset behavior, evaluator, and expected outputs.
4. Commit the source and run him doctor, him validate, and him test --local. Use him push when you want to register the immutable package.
5. Start with the smallest private scenario and verify its artifacts before scaling up.

> **No registry setup required:** HIM maps isaac_lab to a certified hosted environment and caches it internally. Modal is primary and qualified workloads may use a HIM-owned secondary provider. If a repository needs a special environment, HIM reviews and adds that runtime behind the same .him flow. GHCR is not part of the builder setup.

## The required episode pipeline

1. Simulate: load the exact world/robot/brain and write candidate trajectory, summary, environment, and bounded logs.
2. Freeze: make candidate output immutable for the attempt.
3. Evaluate: read frozen candidate state and emit authoritative=true plus numeric metrics from a versioned evaluator.
4. Render: derive diagnostic, 16:9, 9:16, and poster media only from recorded state and evaluator output.
5. Attest: bind run spec, package, evaluator, environment, manifest, provider job, and Ed25519 signature.
6. Ingest privately: verify exact bytes and identities before any owner or Arena view can use the result.

> **Result video comes from your job:** HIM preserves native simulator video when the hosted environment supports it. Otherwise, HIM renders the exact trajectory recorded during your run. The result page labels the source, and a reference demo is never presented as your job output.

## If the first hosted run fails

*Common Isaac setup failures*

| What you see | What to do |
| --- | --- |
| The .him folder is missing | Run him init . --template isaac-lab from the repository root, then set the generated entrypoint to the command the project already uses. |
| Runtime family must be a short portable identifier | Use isaac_lab. Do not enter an image tag, version, provider name, or shell command as the runtime. |
| No module named 'isaaclab' | Launch native Isaac scripts with /isaac-sim/python.sh instead of generic Python. Keep setup scripts that do not import Isaac in your normal Python environment. |
| The repository is dirty | Review and commit the intended source first. HIM runs an exact clean commit so the hosted result can be reproduced. |
| A required repository path is missing | Run the same .him entrypoint locally. Fix the path relative to the repository root; do not add a machine-specific absolute path. |
| A motion or dataset fails to load | Test the exact source file before launch. Check its header, column order, units, and coordinate convention against the repository's native converter. |
| The simulation finishes but no result is published | Declare an evaluator that writes authoritative=true and at least one numeric metric. Logs and summaries are useful evidence, but they are not scored metrics. |
| The hosted runtime is not ready | Your package is valid, but HIM has not enabled this Isaac profile yet. Retry after the runtime is marked available; do not add provider credentials to your repository. |
