Skip to main content
Harbor supports running and downloading datasets from custom registries via --registry-url or --registry-path.
This document describes how anyone can create a custom registry. By default, Harbor uses Harbor Hub as the registry.

Schema

registry.json is a JSON array. Each entry defines one version of a dataset and must include name, version, description, and tasks. The metrics field is optional.
registry.json

Dataset fields

string
Dataset name used with --dataset.
string
Dataset version. Define another top-level entry to publish another version of the same dataset.
string
Human-readable description of the dataset.
list[Task]
Tasks included in the dataset.
list[Metric]
default:"[]"
Optional reward aggregations. See Metrics.

Task fields

Every task must include name and path. The Git fields are optional.
string
Task name.
string | null
default:"null"
Git repository containing the task. Without --repo, omitting this field makes path a local path.
string | null
default:"null"
Commit containing the task. If omitted, Harbor resolves the repository’s default branch.
string
Path to the task directory, relative to the Git repository root when git_url is set.

Metric fields

"sum" | "min" | "max" | "mean" | "uv-script"
default:"\"mean\""
Metric implementation used to aggregate task rewards.
object
default:"{}"
Keyword arguments passed to the metric implementation.
When loading the registry with --repo, Harbor fills omitted git_url and git_commit_id values from the selected repository and resolved commit.
Use unique dataset name and version pairs, and pin remote tasks to full commit SHAs for reproducible runs.