Publishing a task
Publish tasks on the Harbor registry to share with others
If you are new to Harbor, consider reading about the composition of a Harbor task first.
Tasks developed using Harbor can be easily shared with others inside and outside of your organization using the Harbor registry.
You can publish your task publicly or privately.
- Public tasks are visible and usable by everyone.
- Private tasks are visible only to members of the publishing org.
This guide will walk you through the process of publishing one or more tasks to the Harbor registry.
Prerequisites
Login to the Harbor registry
Before publishing, run:
harbor auth loginThis opens a GitHub sign-in flow and creates your Harbor account. New accounts get an org using your GitHub username by default. You can publish to orgs you are an owner of. If you publish to an org that does not exist, it will be created for you.
You must be signed in to publish.
You can verify you are signed in by running:
harbor auth statusUpdate old tasks
Task identifiers are specified in the [task] section of the task.toml file as <org>/<name>. This enables you to create globally unique identifiers that can be published to the registry.
If your task is missing the [task] section (any task created before Mar 30, 2026), you'll need to add it before publishing. You can do this by running:
harbor task update "<path/to/task>" --org "<org>"This will add the [task] section to the task with the name <org>/<folder-name>. For org name, we recommend using your company or benchmark name.
You can update an entire directory of tasks by including the --scan flag:
harbor task update "<path/to/tasks>" --org "<org>" --scan1) Publish the task
Use harbor publish to publish a task:
harbor publish "<path/to/task>"You can publish multiple tasks in one command:
harbor publish "<path/to/task-a>" "<path/to/task-b>"You can also publish all tasks in a directory:
harbor publish "<path/to/tasks>"2) Publish options
-t / --tag: add one or more tags (repeatable).latestis always included.-c / --concurrency: control upload concurrency.--public: make the task public. Private is the default.
By default, tasks are published with the latest tag.
Tagging and visibility
harbor publish "<path/to/task>" -t benchmark-baseline --public3) What publish does
- Computes and uploads the task archive.
- Resolves task metadata and task digest from
task.toml. - Registers the version in the Harbor registry.
The output includes a registry package page link.
Sharing
If you published it publicly, anyone can use it. If you published it privately, only members of the publishing org can use it. You can change visibility later using harbor task visibility or through the UI on the registry website.
Publishing visibility and access is documented in Sharing.