# Physicalai Runtime Loading Exported Policies

> Loads and validates policies exported from Physical AI Studio for Runtime deployment. Use when working on InferenceModel, InferenceModel.from_pretrained, manifest.json, adapter auto-detection (onnx, openvino), backend/device kwargs, Hugging Face Hub policy packages, or the Runtime side of the export/load contract that Studio produces with physicalai export.

- Skill: `openvinotoolkit/physicalai-runtime-loading-exported-policies` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add openvinotoolkit/physicalai-runtime-loading-exported-policies`
- Raw SKILL.md: https://api.skillmd.com/api/skills/openvinotoolkit/physicalai-runtime-loading-exported-policies/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- License: Apache-2.0
- Author: openvinotoolkit (https://skillmd.com/u/openvinotoolkit)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/openvinotoolkit/physicalai-runtime-loading-exported-policies

---


# Loading Exported Policies

Runtime loads Studio export directories (or Hub snapshots that mirror them) through `InferenceModel` in `src/physicalai/inference/model.py`. Manifest parsing lives in `src/physicalai/inference/manifest.py`; backends register in `src/physicalai/inference/adapters/registry.py` (`onnx` → `.onnx`, `openvino` → `.xml`). Hub downloads use `src/physicalai/inference/utils/_hub.py`.

## Workflow

1. **Identify the artifact**: local export directory or Hub `repo_id`, expected backend, and whether the user needs `select_action` vs `predict_action_chunk`.
   - Done when: load path and API entry point are chosen before editing code.
2. **Load with auto-detection first** (local):

   ```python
   from physicalai.inference import InferenceModel
   model = InferenceModel("./exports/act_policy")
   ```

   - Done when: `model` constructs without explicit `backend=` when artifacts match a registered extension.

3. **Hub load** when the package is published:

   ```python
   model = InferenceModel.from_pretrained("OpenVINO/act-fp16-ov", revision="<commit-sha>")
   ```

   - Done when: revision is pinned for reproducibility when security or CI matters.

4. **Explicit backend** only when auto-detection is ambiguous:

   ```python
   model = InferenceModel("./exports/act_policy", backend="openvino", device="CPU")
   ```

5. **Validate structure** against `references/export-load-contract.md` and backend notes (`references/onnx.md`, `references/openvino.md`).
   - Done when: manifest, model file, and processor artifacts resolve under the export directory.
6. **Smoke inference** without owning robot timing:

   ```python
   model.reset()
   action = model.select_action(observation)
   ```

   - Done when: one forward pass succeeds on representative observation keys/shapes. For hardware loops, hand off to `physicalai-runtime-running-policy-on-robot`.

## Validation loop

```bash
uv run pytest tests/unit/inference/test_model.py tests/unit/inference/test_manifest.py -q
```

For adapter changes, add or run targeted tests under `tests/unit/inference/`.

## Required checks

- Export directory contains backend model file(s) and `manifest.json` consistent with `docs/reference/manifest-schema.md`.
- Metadata input/output/feature names align with preprocessors in the manifest.
- Optional backends fail with clear install guidance (`onnxruntime`, OpenVINO).
- Do not document a backend unless an adapter is registered in `src/physicalai/inference/adapters/`.
- Hub loads must not log tokens; prefer pinned `revision=` for production docs.

## References

- `references/export-load-contract.md` — consumer-side contract (coordinate with Studio export skill).
- `references/onnx.md`, `references/openvino.md` — adapter constraints.

