> This page is for version 0.6.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.tasks.harbor.materialize

Turn loaded tasks into single-agent-turn rows and the run config that serves them.

## Module Contents

### Functions

| Name                                                                                            | Description                                                                            |
| ----------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
| [`_instance_taskset`](#nemo_gym-tasks-harbor-materialize-_instance_taskset)                     | -                                                                                      |
| [`_validate_task_ids`](#nemo_gym-tasks-harbor-materialize-_validate_task_ids)                   | -                                                                                      |
| [`agent_instance`](#nemo_gym-tasks-harbor-materialize-agent_instance)                           | Return an override-compatible agent instance name for the taskset.                     |
| [`environment_server_instance`](#nemo_gym-tasks-harbor-materialize-environment_server_instance) | Return an override-compatible environment instance name for the taskset.               |
| [`materialize_task`](#nemo_gym-tasks-harbor-materialize-materialize_task)                       | One row: the instruction as a user message, the folder digest in `task_data`.          |
| [`resources_server_instance`](#nemo_gym-tasks-harbor-materialize-resources_server_instance)     | Return an override-compatible resources instance name without changing the taskset ID. |
| [`run_config`](#nemo_gym-tasks-harbor-materialize-run_config)                                   | The run-config blocks that bind one taskset to the `harbor` resources server.          |
| [`taskset_mapping`](#nemo_gym-tasks-harbor-materialize-taskset_mapping)                         | Where a taskset's folders live and which digest each task had at materialization.      |
| [`write_rows`](#nemo_gym-tasks-harbor-materialize-write_rows)                                   | Write one materialized row per task as JSONL and return the rows.                      |

### Data

[`AGENT_TIMEOUT_METADATA_KEY`](#nemo_gym-tasks-harbor-materialize-AGENT_TIMEOUT_METADATA_KEY)

[`ENVIRONMENT_SERVER_IMPL`](#nemo_gym-tasks-harbor-materialize-ENVIRONMENT_SERVER_IMPL)

[`RESOURCES_SERVER_IMPL`](#nemo_gym-tasks-harbor-materialize-RESOURCES_SERVER_IMPL)

### API

```python
nemo_gym.tasks.harbor.materialize._instance_taskset(
    taskset: str
) -> str
```

```python
nemo_gym.tasks.harbor.materialize._validate_task_ids(
    tasks: list[nemo_gym.tasks.harbor.task.HarborTask]
) -> None
```

```python
nemo_gym.tasks.harbor.materialize.agent_instance(
    taskset: str
) -> str
```

Return an override-compatible agent instance name for the taskset.

```python
nemo_gym.tasks.harbor.materialize.environment_server_instance(
    taskset: str
) -> str
```

Return an override-compatible environment instance name for the taskset.

```python
nemo_gym.tasks.harbor.materialize.materialize_task(
    task: nemo_gym.tasks.harbor.task.HarborTask,
    taskset: str
) -> nemo_gym.episode_types.MaterializedTask[nemo_gym.single_agent_turn_types.SingleAgentTurnTaskInput]
```

One row: the instruction as a user message, the folder digest in `task_data`.

```python
nemo_gym.tasks.harbor.materialize.resources_server_instance(
    taskset: str
) -> str
```

Return an override-compatible resources instance name without changing the taskset ID.

```python
nemo_gym.tasks.harbor.materialize.run_config(
    taskset: str,
    folder: pathlib.Path,
    tasks: list[nemo_gym.tasks.harbor.task.HarborTask],
    rows_path: pathlib.Path,
    agent_instance_name: str,
    agent_impl: str,
    agent_overrides: dict[str, typing.Any] | None = None,
    sandbox_provider: str = 'sandbox'
) -> dict[str, typing.Any]
```

The run-config blocks that bind one taskset to the `harbor` resources server.

The agent block inherits the selected harness config and points it at the taskset's
resources server. The environment server is a `single_agent_turn` instance. Rows
route to it by taskset.

```python
nemo_gym.tasks.harbor.materialize.taskset_mapping(
    tasks: list[nemo_gym.tasks.harbor.task.HarborTask],
    folder: pathlib.Path
) -> dict[str, typing.Any]
```

Where a taskset's folders live and which digest each task had at materialization.

Servers resolve a task as `&lt;folder&gt;/&lt;task_id&gt;`. For a folder of task folders that is
the folder itself; for a single task folder it is the task's parent, so `folder` is
always the tasks' common parent directory.

```python
nemo_gym.tasks.harbor.materialize.write_rows(
    tasks: list[nemo_gym.tasks.harbor.task.HarborTask],
    taskset: str,
    path: pathlib.Path
) -> list[dict[str, typing.Any]]
```

Write one materialized row per task as JSONL and return the rows.

```python
nemo_gym.tasks.harbor.materialize.AGENT_TIMEOUT_METADATA_KEY = 'agent_timeout_sec'
```

```python
nemo_gym.tasks.harbor.materialize.ENVIRONMENT_SERVER_IMPL = 'single_agent_turn'
```

```python
nemo_gym.tasks.harbor.materialize.RESOURCES_SERVER_IMPL = 'harbor'
```