superserve environment runs each trial in its own Superserve sandbox, so you can run many trials in parallel without a local Docker daemon.
Setup
Install Harbor with thesuperserve extra:
superserve environment until the next stable release. Do not add --prerelease allow: it also lets uv pick prereleases of Harbor’s dependencies, and harbor run then fails with ModuleNotFoundError. --python 3.13 pins a Python version that all of Harbor’s dependencies support. Without it, uv can select a newer Python for which some dependencies have no prebuilt wheels, and the install fails.
See API keys to create a Superserve API key. Also export the key for the agent you evaluate, for example ANTHROPIC_API_KEY for Claude Code.
Run a task
Pass-e superserve (or --env superserve) to harbor run. Start with the oracle agent, which runs the task’s reference solution:
-n to set how many trials run at the same time, and -k to set the number of attempts for each task:
-t runs one task from the Harbor registry. Use -d <dataset>@<version> for a registry dataset, or -p <path> for a local task or dataset directory.
How tasks run
Harbor picks one of two modes for each task:
If an image cannot boot as a sandbox, Harbor runs the task with Docker inside the sandbox instead. The first trial for a new image or resource shape waits for the template build. Later trials start from the cached template.
An image’s
ENTRYPOINT and CMD do not run in a template-booted sandbox. Commands run as the image’s USER (root if the image does not set one), unless Harbor requests a specific user.Configure the environment
Pass environment options with--ek key=value (or --environment-kwarg key=value). Harbor parses each value as JSON when it is valid JSON, and as a string otherwise:
Resources
The task’scpus, memory_mb, and storage_mb set the sandbox’s vCPUs, memory, and disk. Each sandbox is sized exactly to the task, so these values are both the reservation and the limit. GPUs are not supported. The task’s values must fit your plan’s resource limits.
Network policies
Harbor network policies map to Superserve network rules:- Hostname entries match the TLS SNI or HTTP
Hostheader, so they allow ports 80 and 443 only. IPv4 address and CIDR entries allow all ports. - A wildcard such as
*.example.commatches subdomains at any depth but notexample.comitself. Add the apex domain as a separate entry. - Policy changes during a trial apply to new connections. Open connections stay open.
Clean up
By default, Harbor deletes each sandbox when its trial ends. With--no-delete, Harbor pauses the sandbox instead, and Superserve deletes it after auto_delete_seconds.
Harbor keeps its harbor/... templates for later runs. To remove one, delete it in the console or with the CLI:
Learn more
Harbor documentation
Read how Harbor runs tasks in cloud sandboxes.
Harbor source
Read the
superserve environment’s source on Harbor’s main branch.Templates
Learn how Superserve builds and caches templates.
Secrets
Bind team secrets to sandboxes.