Hub
Managing Jobs on the Hub
The Harbor Hub can be used to store, share, and host jobs, datasets, and tasks. When a job is uploaded, the hub provides a comprehensive overview page allowing you to examine costs, token consumption, and performance across many dimensions.
The harbor CLI ships with commands analogous to the viewers provided on the hub website.
All of the harbor hub viewer commands share the same entrypoint harbor hub.
Listing Jobs
Using the command harbor hub job list you can print out a list of all jobs visible to your user on the hub.
Flags
The list command supports numerous flags that offer fine-grained observability into your jobs.
--scope my | shared | allalters the visibility scope of the returned jobs, defaulting tomyfor jobs owned by your user--search TEXTreturns only jobs whose names contain a matching substring--agent NAME NAME_2 ...filters jobs by agent name. Accepts multiple entries (e.g. --agent codex claude-code) will return jobs that utilize either codex or claude-code--provider NAME NAME_2 ...filters jobs by model provider. Accepts multiple entries--model NAME NAME_2 ...filters jobs by model. Accepts multiple entries
Job Overview
Use the command harbor hub job show JOB_ID JOB_ID_2 ... to print an overview similar to the one provided on the hub.
This viewer displays the following information
- Number of trials
- Number of errors
- Number of retries
- Average return on metrics
- Cost (in USD)
- Token Usage
Per-Task Job Breakdown
Use the command harbor hub job tasks JOB_ID to see a per-task breakdown of a job.
Flags
--search TEXTreturns only tasks whose names contain a matching substring--agent / --provider / --modelsame as above
Trials Overview
Use the command harbor hub job trials JOB_ID JOB_ID_2 ... to list trials across one or more jobs.
In interactive terminals, you can switch pages to audit all trials without running a second command.
Flags
--search TEXTfilter by text matching trial names--agent / --provider / --modelsame as above--limit Npage size (defaults to 100 here)--failed-onlyonly trials that errored/failed--include-retriesinclude retry history, not just the latest execution--sort-by COLstarted_at | task_name | name| error_type--sort-order asc|desc
Comparing 2 or More Jobs
Use command harbor hub job compare JOB_ID JOB_ID_2 ... to get the side-by-side grid for performance on tasks
Job Visibility
Use command harbor hub job shares JOB_ID to see who a job is shared with. This returns orgs and users
Deleting Jobs
Use command harbor hub job delete JOB_ID JOB_ID_2 ... to permanently delete jobs you own from the hub, including all of their trials and shares.
The command prompts for confirmation before deleting anything; pass --yes / -y to skip the prompt (required when scripting or piping).
Only the job's owner can delete a job. Jobs linked to a leaderboard submission and hosted jobs that are still running cannot be deleted.
Managing Leaderboards
When creating a leaderboard, optionally restrict it to specific dataset-version UUIDs in the create config:
dataset_version_ids:
- 11111111-1111-4111-8111-111111111111
dataset_version_refs:
- latestIDs and refs may be combined; the API resolves refs and stores their UUIDs. Omitting both fields associates every version that exists when the leaderboard is created. Setting both to empty lists associates none. Versions published later are never added automatically.
Use harbor hub leaderboard show BOARD to display a curated leaderboard, or
add --json to print the complete read API response. BOARD may be a UUID or
an org/package/name slug.
Export an update-ready YAML or JSON definition, edit it, and apply it:
harbor hub leaderboard export BOARD --output board.yaml
harbor hub leaderboard update BOARD --config board.yamlSimple definition fields can be updated directly; these flags override values
from --config when both are provided:
harbor hub leaderboard update BOARD --title "New title" --description "New description" --visibility privateRows have the same round-trip workflow. Use --all to export every row:
harbor hub leaderboard row list BOARD
harbor hub leaderboard row create BOARD --config new-rows.yaml
harbor hub leaderboard row export ROW_ID --output row.yaml
harbor hub leaderboard row update ROW_ID --config row.yaml
harbor hub leaderboard row update ROW_ID --status hide
harbor hub leaderboard row export BOARD --all --output rows.yaml
harbor hub leaderboard update BOARD --config board.yaml --rows rows.yamlrow list shows canonical ranks, configured leaderboard columns, status, trial
count, timestamps, and row IDs. It supports --limit, --page, --json, and
--quiet using the same paging behavior as hub job list.
The create config contains a rows list. Each row accepts metadata, metrics,
status, and optional trial_ids. You can also create a leaderboard and its
initial rows atomically with harbor hub leaderboard create --rows new-rows.yaml.
Definition and batch row changes commit atomically. A schema change is rejected
when any resulting row is invalid. Delete incompatible rows explicitly with
harbor hub leaderboard row delete, or update them in the same command with
--rows. Use --dry-run with the combined --config and --rows migration
form to validate it without committing.
The API mirrors these resource boundaries: leaderboard-update changes only
the definition; row create, read, update, delete, and trial changes use their
dedicated endpoints. Only leaderboard-migrate accepts definition and row
changes together.
Manage row provenance separately:
harbor hub leaderboard row trial list ROW_ID
harbor hub leaderboard row trial set ROW_ID --trial-id TRIAL_ID
harbor hub leaderboard row trial add ROW_ID --trial-id TRIAL_ID
harbor hub leaderboard row trial remove ROW_ID --trial-id TRIAL_IDLeaderboard reads and mutation responses return n_trials rather than every
association.
row trial list pages through the associations; use --json for one page or
--quiet to stream every trial ID.
set can also read the complete replacement list from YAML or JSON:
trial_ids:
- 11111111-1111-1111-1111-111111111111
- 22222222-2222-2222-2222-222222222222harbor hub leaderboard row trial set ROW_ID --trial-ids-file trials.yamlset replaces every association; use set --clear to remove them all. Trial
changes do not recompute row metadata or metrics.
Combined Flags
In addition to those listed. the following options are available
-q, --quietprints only IDs for piping into xargs--no-truncshow full cell content (wrap cells instead of ellipsis)--no-headersomit the header row--page Npull a particular page (disables interactive pages)--jsonget result as raw JSON--debugshow full traceback on failure