> This page is for version 0.5.0.
> For other versions, use one of these documentation indexes:
> - Main (default): https://docs.nvidia.com/nemo/gym/main/llms.txt
> - 0.7.0: https://docs.nvidia.com/nemo/gym/v0.7.0/llms.txt
> - 0.6.0: https://docs.nvidia.com/nemo/gym/v0.6.0/llms.txt
> - 0.5.1: https://docs.nvidia.com/nemo/gym/v0.5.1/llms.txt
> - 0.5.0: https://docs.nvidia.com/nemo/gym/v0.5.0/llms.txt
> - 0.4.0: https://docs.nvidia.com/nemo/gym/v0.4.0/llms.txt
> - 0.3.0: https://docs.nvidia.com/nemo/gym/v0.3.0/llms.txt
> - 0.2.1: https://docs.nvidia.com/nemo/gym/v0.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/nemo/gym/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo/gym/_mcp/server.

# nemo_gym.data.tasks.harbor

Read Harbor task folders and hub references into NeMo Gym materialized tasks.

Harbor is the input format; Gym owns execution. A task is a folder holding
`task.toml`, `instruction.md`, `environment/` and `tests/`. A dataset is a
folder of task folders. `harbor:<dataset>[@<version>]` names a dataset in the
Harbor registry, which this package fetches into `environments/harbor/` in the Gym checkout, or
under the working directory when Gym is installed as a package (`gym dataset pull`;
`nemo_gym.data.tasks.harbor.hub.datasets_dir`); a committed entry there declares its dataset as
`[gym] source` and is pulled into its own folder (`nemo_gym.data.tasks.harbor.entries`).

This package is the Harbor format's public API.
Code outside `nemo_gym/` imports Harbor names from `nemo_gym.data.tasks.harbor`, not from `nemo_gym.data`.

## Submodules

* **[`nemo_gym.data.tasks.harbor.build_compose`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/build_compose)**
* **[`nemo_gym.data.tasks.harbor.build_options`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/build_options)**
* **[`nemo_gym.data.tasks.harbor.build_plan`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/build_plan)**
* **[`nemo_gym.data.tasks.harbor.build_records`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/build_records)**
* **[`nemo_gym.data.tasks.harbor.build_tools`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/build_tools)**
* **[`nemo_gym.data.tasks.harbor.compose_overlay`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/compose_overlay)**
* **[`nemo_gym.data.tasks.harbor.compose_variables`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/compose_variables)**
* **[`nemo_gym.data.tasks.harbor.dataset_config`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/dataset_config)**
* **[`nemo_gym.data.tasks.harbor.digest`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/digest)**
* **[`nemo_gym.data.tasks.harbor.dockerfile`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/dockerfile)**
* **[`nemo_gym.data.tasks.harbor.entries`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/entries)**
* **[`nemo_gym.data.tasks.harbor.errors`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/errors)**
* **[`nemo_gym.data.tasks.harbor.harbor_compat`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/harbor_compat)**
* **[`nemo_gym.data.tasks.harbor.hub`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/hub)**
* **[`nemo_gym.data.tasks.harbor.image_build`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/image_build)**
* **[`nemo_gym.data.tasks.harbor.image_configs`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/image_configs)**
* **[`nemo_gym.data.tasks.harbor.manifest`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/manifest)**
* **[`nemo_gym.data.tasks.harbor.materialize`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/materialize)**
* **[`nemo_gym.data.tasks.harbor.models`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/models)**
* **[`nemo_gym.data.tasks.harbor.package_store`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/package_store)**
* **[`nemo_gym.data.tasks.harbor.parameterized`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/parameterized)**
* **[`nemo_gym.data.tasks.harbor.prepare`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/prepare)**
* **[`nemo_gym.data.tasks.harbor.prepare_builds`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/prepare_builds)**
* **[`nemo_gym.data.tasks.harbor.publish`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/publish)**
* **[`nemo_gym.data.tasks.harbor.python_verifier`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/python_verifier)**
* **[`nemo_gym.data.tasks.harbor.records`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/records)**
* **[`nemo_gym.data.tasks.harbor.registry`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/registry)**
* **[`nemo_gym.data.tasks.harbor.run_summary`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/run_summary)**
* **[`nemo_gym.data.tasks.harbor.scaffold`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/scaffold)**
* **[`nemo_gym.data.tasks.harbor.task`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/task)**
* **[`nemo_gym.data.tasks.harbor.task_data`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/task_data)**
* **[`nemo_gym.data.tasks.harbor.validation_report`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/validation_report)**
* **[`nemo_gym.data.tasks.harbor.verifier_env`](/nemo/gym/nemo-gym/nemo_gym/data/tasks/harbor/verifier_env)**

## Package Contents

### Data

[`_PUBLIC_API`](#nemo_gym-data-tasks-harbor-_PUBLIC_API)

### API

```python
nemo_gym.data.tasks.harbor._PUBLIC_API = {'AGENT_TIMEOUT_METADATA_KEY': 'materialize', 'BUILT_IMAGES_FILE': 'records', 'C...
```