> This page is for version Main (default).
> 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.tasks.harbor.cli

`gym eval run &lt;folder | harbor:dataset&gt; --agent &lt;name&gt;`: prepare a taskset and run it.

Preparation writes, under `results/harbor/&lt;taskset&gt;/`:

* `tasks.jsonl`: one materialized row per loadable task;
* `skipped.json`: omitted task IDs and reasons (empty when all tasks load);
* `run_config.yaml`: the resources server, agent and environment server blocks.

Then the ordinary end-to-end rollout collection runs with that config plus the
selected agent, environment server and model configs.

## Module Contents

### Classes

| Name                                                            | Description |
| --------------------------------------------------------------- | ----------- |
| [`AgentSelection`](#nemo_gym-tasks-harbor-cli-AgentSelection)   | -           |
| [`PreparedTaskset`](#nemo_gym-tasks-harbor-cli-PreparedTaskset) | -           |

### Functions

| Name                                                                          | Description                                                                                     |
| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| [`_config_path`](#nemo_gym-tasks-harbor-cli-_config_path)                     | -                                                                                               |
| [`_has_override`](#nemo_gym-tasks-harbor-cli-_has_override)                   | -                                                                                               |
| [`build_run`](#nemo_gym-tasks-harbor-cli-build_run)                           | Write `run_config.yaml` and return it with the Hydra overrides for collection.                  |
| [`prepare_target`](#nemo_gym-tasks-harbor-cli-prepare_target)                 | Fetch (for hub references) and load the tasks, then write the rows file.                        |
| [`resolve_agent`](#nemo_gym-tasks-harbor-cli-resolve_agent)                   | Map `--agent NAME[/FLAVOR]` to `responses_api_agents/&lt;NAME&gt;/configs/&lt;FLAVOR&gt;.yaml`. |
| [`resolve_sandbox_config`](#nemo_gym-tasks-harbor-cli-resolve_sandbox_config) | -                                                                                               |
| [`run_target`](#nemo_gym-tasks-harbor-cli-run_target)                         | Entry point for `gym eval run &lt;target&gt; ...`.                                              |

### Data

[`AGENT_OVERRIDES`](#nemo_gym-tasks-harbor-cli-AGENT_OVERRIDES)

[`DEFAULT_OUTPUT_ROOT`](#nemo_gym-tasks-harbor-cli-DEFAULT_OUTPUT_ROOT)

[`ENVIRONMENT_SERVER_CONFIG`](#nemo_gym-tasks-harbor-cli-ENVIRONMENT_SERVER_CONFIG)

[`SANDBOX_PROVIDER_CONFIG`](#nemo_gym-tasks-harbor-cli-SANDBOX_PROVIDER_CONFIG)

[`logger`](#nemo_gym-tasks-harbor-cli-logger)

### API

```python
class nemo_gym.tasks.harbor.cli.AgentSelection(
    config_path: pathlib.Path,
    instance_name: str,
    impl_name: str
)
```

Dataclass

**`config_path`** `Path`

---

**`impl_name`** `str`

---

**`instance_name`** `str`

---

```python
class nemo_gym.tasks.harbor.cli.PreparedTaskset(
    taskset: str,
    folder: pathlib.Path,
    tasks: list[nemo_gym.tasks.harbor.task.HarborTask],
    rows_path: pathlib.Path,
    output_dir: pathlib.Path,
    skipped: dict[str, str] = dict()
)
```

Dataclass

**`folder`** `Path`

---

**`output_dir`** `Path`

---

**`rows_path`** `Path`

---

**`skipped`** `dict[str, str] = field(default_factory=dict)`

---

**`tasks`** `list[HarborTask]`

---

**`taskset`** `str`

---

```python
nemo_gym.tasks.harbor.cli._config_path(
    relative: str
) -> pathlib.Path
```

```python
nemo_gym.tasks.harbor.cli._has_override(
    overrides: list[str],
    key: str
) -> bool
```

```python
nemo_gym.tasks.harbor.cli.build_run(
    prepared: nemo_gym.tasks.harbor.cli.PreparedTaskset,
    agent: nemo_gym.tasks.harbor.cli.AgentSelection,
    sandbox: str | None,
    overrides: list[str]
) -> tuple[pathlib.Path, list[str]]
```

Write `run_config.yaml` and return it with the Hydra overrides for collection.

```python
nemo_gym.tasks.harbor.cli.prepare_target(
    target: str,
    output_root: pathlib.Path = DEFAULT_OUTPUT_ROOT,
    refresh_registry: bool = False
) -> nemo_gym.tasks.harbor.cli.PreparedTaskset
```

Fetch (for hub references) and load the tasks, then write the rows file.

A task folder that does not load is skipped with a warning (and listed in
`PreparedTaskset.skipped`) so the rest of the dataset still prepares.

```python
nemo_gym.tasks.harbor.cli.resolve_agent(
    agent: str
) -> nemo_gym.tasks.harbor.cli.AgentSelection
```

Map `--agent NAME[/FLAVOR]` to `responses_api_agents/&lt;NAME&gt;/configs/&lt;FLAVOR&gt;.yaml`.

`NAME` may omit a trailing `_agent` (`hermes` selects `hermes_agent`).

```python
nemo_gym.tasks.harbor.cli.resolve_sandbox_config(
    provider: str
) -> pathlib.Path
```

```python
nemo_gym.tasks.harbor.cli.run_target(
    args: argparse.Namespace,
    overrides: list[str]
) -> None
```

Entry point for `gym eval run &lt;target&gt; ...`.

```python
nemo_gym.tasks.harbor.cli.AGENT_OVERRIDES: dict[str, dict[str, Any]] = {'hermes_agent': {'sandbox_provider': None, 'enabled_toolsets': ['terminal'], 'c...
```

```python
nemo_gym.tasks.harbor.cli.DEFAULT_OUTPUT_ROOT = Path('results/harbor')
```

```python
nemo_gym.tasks.harbor.cli.ENVIRONMENT_SERVER_CONFIG = 'environment_servers/single_agent_turn/configs/single_agent_turn.yaml'
```

```python
nemo_gym.tasks.harbor.cli.SANDBOX_PROVIDER_CONFIG = 'nemo_gym/sandbox/providers/{provider}/configs/{provider}.yaml'
```

```python
nemo_gym.tasks.harbor.cli.logger = logging.getLogger(__name__)
```