> 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.

# Harbor Task Folders

> Write, validate and run tasks as task folders in the Harbor format, on the harbor Environment Server.

A task folder holds everything one task needs: the instruction, the container the agent works in, the tests that score
it and, optionally, a reference solution. Because each task brings its own environment and tests, there's no server to
write.

Tasks that share one verifier and toolset, such as math, instruction following or tool calling, fit
[JSONL Datasets](/nemo/gym/main/data/jsonl) better.

## Guides

| Page                                                                   | Read it when                                                                                                                                                                                                    |
| ---------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Author Task Folders](/nemo/gym/main/data/task-folders/harbor-tasks)            | You are writing your first task: scaffold a dataset, write a task, check it and run an agent on it. Already use Harbor? Start at [Coming from Harbor](/nemo/gym/main/data/task-folders/harbor-tasks#coming-from-harbor). |
| [Task Folder Format](/nemo/gym/main/data/task-folders/task-folder-format)       | You need a file or a setting: the folder layout, `task.toml`, `dataset.toml` and Dockerfile modes.                                                                                                              |
| [Task Folder Verifiers](/nemo/gym/main/data/task-folders/task-folder-verifiers) | You are writing `tests/`: reward files, Python verifiers, and shared or separate verification.                                                                                                                  |
| [Multi-Step Task Folders](/nemo/gym/main/data/task-folders/multi-step-tasks)    | A task runs several steps in one sandbox.                                                                                                                                                                       |
| [Multi-Container Tasks](/nemo/gym/main/data/task-folders/compose-tasks)         | A task needs sidecar services from a Compose file.                                                                                                                                                              |
| [Task Folder Patterns](/nemo/gym/main/data/task-folders/task-folder-patterns)   | You want parameterized tasks, typed task fields, task MCP tools or shared verifier code.                                                                                                                        |

You pick the harness that runs the tasks with `--agent`; [Integrate Existing Agents](/nemo/gym/main/agent-server/integrate-existing-agents#sandboxed-harnesses)
lists which harnesses run task folders. [Harbor Environment Server](/nemo/gym/main/agent-interactions/harbor) explains how an
episode runs.