> This page is for version Release 3.0 (default).
> For other versions, use one of these documentation indexes:
> - Release 3.0 (default): https://docs.nvidia.com/isaaclab/3.0/llms.txt
> - Release 2.3: https://docs.nvidia.com/isaaclab/2.3/llms.txt
> - Release 2.2: https://docs.nvidia.com/isaaclab/2.2/llms.txt
> - Release 2.1: https://docs.nvidia.com/isaaclab/2.1/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/isaaclab/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/isaaclab/_mcp/server.

# Deploy Exported Policies with LEAPP

Isaac Lab provides `~envs.LeappDeploymentEnv` for running exported policies back in
simulation without the training infrastructure. This is the Isaac Lab deployment path for
LEAPP-exported policies and is useful for validating that the packaged policy still behaves
correctly when driven through the deployment stack instead of the training stack.

Run the deployment command with the task name and the exported LEAPP `.yaml` file. Use the
same backend extra and backend selector that you used for training and export, and pass a
`--viz` option when you want a viewport:

#### Linux

```bash
# Newton backend (kitless)
uv run --extra leapp isaaclab leapp deploy \
    --task <TASK_NAME> \
    --pipeline <PATH_TO_EXPORTED_LEAPP_YAML> \
    --viz newton_gl physics=newton_mjwarp

# OV PhysX backend
uv run --extra ovphysx --extra leapp isaaclab leapp deploy \
    --task <TASK_NAME> \
    --pipeline <PATH_TO_EXPORTED_LEAPP_YAML> \
    --viz kit physics=ovphysx

# Isaac Sim PhysX backend
OMNI_KIT_ACCEPT_EULA=Y ACCEPT_EULA=Y uv run --extra isaacsim --extra leapp isaaclab leapp deploy \
    --task <TASK_NAME> \
    --pipeline <PATH_TO_EXPORTED_LEAPP_YAML> \
    --viz kit physics=isaacsim_physx
```

#### Windows

```batch
:: Newton backend (kitless)
uv run --extra leapp isaaclab leapp deploy ^
    --task <TASK_NAME> ^
    --pipeline <PATH_TO_EXPORTED_LEAPP_YAML> ^
    --viz newton_gl physics=newton_mjwarp

:: OV PhysX backend
uv run --extra ovphysx --extra leapp isaaclab leapp deploy ^
    --task <TASK_NAME> ^
    --pipeline <PATH_TO_EXPORTED_LEAPP_YAML> ^
    --viz kit physics=ovphysx

:: Isaac Sim PhysX backend
set OMNI_KIT_ACCEPT_EULA=Y
set ACCEPT_EULA=Y
uv run --extra isaacsim --extra leapp isaaclab leapp deploy ^
    --task <TASK_NAME> ^
    --pipeline <PATH_TO_EXPORTED_LEAPP_YAML> ^
    --viz kit physics=isaacsim_physx
```

## What the Deployment Environment Does

The deployment environment loads the task scene and then bypasses the training-time
observation, action, reward, termination, and curriculum managers. It reads the scene
objects and commands identified by the `isaaclab_connection` metadata in the LEAPP YAML,
uses them as inputs to the exported policy pipeline, and runs that pipeline through
LEAPP's `InferenceManager`. The resulting outputs are written back to the mapped scene
entities.

## Match the Training and Export Configuration

The deployment command rebuilds the task configuration from `--task`. It cannot infer the
training configuration from the checkpoint or LEAPP YAML, so you must provide the same
configuration selections used for training and export. The task name, LEAPP YAML, and
checkpoint must describe the same policy.

Carry these settings through **training**, **export**, and **deployment**:

* **Task and Hydra overrides:** use the same task name and every configuration override that
  changes the scene, robot, sensors, command terms, observation/action term configuration,
  reset behavior, or simulation timing (`sim.dt` and `decimation`).
* **Physics and renderer presets:** pass the same backend selectors when you selected a
  non-default backend. For example, a policy trained and exported with
  `physics=newton_mjwarp` must also be deployed with `physics=newton_mjwarp`; the same
  applies to the untyped `presets=<PRESET_NAME>` form.
* **Seed, when applicable:** use the same `--seed` when reproducible command sampling,
  reset events, or other randomized task behavior matters to your validation.

For example, append the preset after the deployment options:

```bash
uv run --extra leapp isaaclab leapp deploy \
    --task Isaac-Humanoid \
    --pipeline <PATH_TO_EXPORTED_LEAPP_YAML> \
    --viz newton_gl \
    presets=newton_mjwarp
```

### Visualization Options

Visualization does not change the policy or its LEAPP inputs. Omit `--viz` for headless
execution, use `--viz kit` for the Omniverse Kit viewport, or select `newton_gl`,
`newton_rtx` (experimental), `rerun`, or `viser` when those visualizers are installed.
Use `--viz none` to explicitly disable all visualizers, and `--max_visible_envs <COUNT>`
to limit displayed environments. Choose a visualizer compatible with the selected physics and
renderer backend.

> **Note**
>
> For Direct workflow policies, see the
> [Direct workflow export guide ](/source/policy_deployment/05_leapp/exporting_direct_workflow_policies_with_leapp).
> Direct workflow policies are not supported by `LeappDeploymentEnv`.