| title | Installation |
|---|---|
| description | Install Harbor and set up your evaluation environment |
Before installing Harbor, ensure your system meets these requirements:
**Python 3.12 or higher** is required.Check your Python version:
```bash
python --version
```
If you need to upgrade, visit [python.org](https://www.python.org/downloads/) or use a version manager like [pyenv](https://github.com/pyenv/pyenv).
Check if Docker is installed:
```bash
docker --version
```
Install Docker:
- **macOS/Windows**: [Docker Desktop](https://www.docker.com/products/docker-desktop)
- **Linux**: Follow the [official Docker Engine installation guide](https://docs.docker.com/engine/install/)
<Warning>
Ensure Docker daemon is running before executing Harbor evaluations. Test with `docker ps`.
</Warning>
For Windows users, we recommend using [WSL2](https://docs.microsoft.com/en-us/windows/wsl/install) with Ubuntu.
<Tip>
Memory requirements scale with `--n-concurrent`. Each concurrent trial typically uses 1-2GB RAM.
</Tip>
Harbor can be installed using uv (recommended) or pip.
uv is a fast Python package installer and resolver. It's the recommended way to install Harbor.
If you don't have `uv` installed:<CodeGroup>
```bash macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
```
```bash Windows (PowerShell)
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
```
```bash pip
pip install uv
```
</CodeGroup>
```bash
uv tool install harbor
```
This installs Harbor and its dependencies in an isolated environment.
```bash
harbor --version
```
You should see output like:
```
0.1.45
```
You can also install Harbor using standard pip:
```bash python -m venv harbor-env source harbor-env/bin/activate # On Windows: harbor-env\Scripts\activate ``` ```bash pip install harbor ``` ```bash harbor --version ```Harbor provides convenient command aliases for faster typing:
harbor # Full command
hr # Short alias
hb # Alternative aliasAll three are equivalent:
harbor run --dataset terminal-bench@2.0 --agent claude-code
hr run --dataset terminal-bench@2.0 --agent claude-code
hb run --dataset terminal-bench@2.0 --agent claude-codeTo use AI agents, you'll need API keys from the respective providers.
For Claude Code and Claude-based agents:1. Get an API key from [Anthropic Console](https://console.anthropic.com/)
2. Set the environment variable:
```bash
export ANTHROPIC_API_KEY=sk-ant-...
```
Make it persistent by adding to your shell profile (`~/.bashrc`, `~/.zshrc`, etc.):
```bash
echo 'export ANTHROPIC_API_KEY=sk-ant-...' >> ~/.bashrc
source ~/.bashrc
```
1. Get an API key from [OpenAI Platform](https://platform.openai.com/api-keys)
2. Set the environment variable:
```bash
export OPENAI_API_KEY=sk-...
```
1. Get an API key from [Google AI Studio](https://makersuite.google.com/app/apikey)
2. Set the environment variable:
```bash
export GEMINI_API_KEY=...
```
- **OpenRouter**: `export OPENROUTER_API_KEY=...`
- **Together AI**: `export TOGETHER_API_KEY=...`
- **Replicate**: `export REPLICATE_API_KEY=...`
- **Hugging Face**: `export HUGGINGFACE_API_KEY=...`
See [LiteLLM docs](https://docs.litellm.ai/docs/providers) for the complete list.
For cloud-based evaluation execution, configure your provider credentials.
[Daytona](https://www.daytona.io/) provides managed development environments.1. Sign up at [daytona.io](https://www.daytona.io/)
2. Get your API key from the dashboard
3. Set the environment variable:
```bash
export DAYTONA_API_KEY=...
```
4. Run evaluations:
```bash
harbor run --dataset terminal-bench@2.0 --agent claude-code --env daytona --n-concurrent 100
```
1. Install Modal CLI:
```bash
pip install modal
```
2. Authenticate:
```bash
modal token new
```
3. Run evaluations:
```bash
harbor run --dataset terminal-bench@2.0 --agent claude-code --env modal --n-concurrent 50
```
1. Sign up at [e2b.dev](https://e2b.dev/)
2. Get your API key
3. Set the environment variable:
```bash
export E2B_API_KEY=...
```
4. Run evaluations:
```bash
harbor run --dataset terminal-bench@2.0 --agent claude-code --env e2b
```
1. Set up Runloop credentials according to their documentation
2. Run evaluations:
```bash
harbor run --dataset terminal-bench@2.0 --agent claude-code --env runloop
```
1. Set up GCP credentials and kubectl access
2. Configure GKE cluster
3. Run evaluations:
```bash
harbor run --dataset terminal-bench@2.0 --agent claude-code --env gke
```
For local execution, optimize Docker settings for Harbor:
Configure Docker Desktop resource limits:1. Open Docker Desktop Settings
2. Go to Resources
3. Adjust:
- **CPUs**: Allocate enough for `--n-concurrent` trials
- **Memory**: At least 2GB per concurrent trial
- **Disk space**: 50GB+ recommended
For Docker Engine on Linux, modify `/etc/docker/daemon.json`:
```json
{
"default-ulimits": {
"nofile": {
"Name": "nofile",
"Hard": 64000,
"Soft": 64000
}
}
}
```
```bash
# View cache usage
harbor cache info
# Clear cache
harbor cache clear
# Prune old Docker images
docker system prune -a
```
```bash
# Test network connectivity
docker run --rm alpine ping -c 1 google.com
```
If you're behind a proxy, configure Docker proxy settings in Docker Desktop or daemon configuration.
Verify your Harbor installation is working correctly:
```bash harbor --version harbor --help ``` ```bash harbor datasets list ```This should show available benchmarks from the Harbor registry.
```bash
# Create a simple task
mkdir -p test-task/tests
echo 'Create a file called hello.txt with "Hello, world!"' > test-task/instruction.md
cat > test-task/task.toml << EOF
version = "1.0"
[agent]
timeout_sec = 60.0
[verifier]
timeout_sec = 60.0
EOF
cat > test-task/tests/test_state.py << EOF
from pathlib import Path
def test_hello():
assert Path("/app/hello.txt").read_text().strip() == "Hello, world!"
EOF
# Run evaluation
harbor run --path test-task --agent oracle
```
If successful, you should see a completion message with reward 1.0.
**Solution**: Upgrade Python using:
- [pyenv](https://github.com/pyenv/pyenv): `pyenv install 3.12 && pyenv global 3.12`
- [Official installer](https://www.python.org/downloads/)
- System package manager: `brew install python@3.12` (macOS)
**Solution**:
- Start Docker Desktop (macOS/Windows)
- Start Docker daemon: `sudo systemctl start docker` (Linux)
- Verify: `docker ps`
**Solution** (Linux):
```bash
sudo usermod -aG docker $USER
newgrp docker
```
Or run Docker commands with `sudo`.
**Solution**:
- Ensure you're in the correct virtual environment
- Reinstall: `pip install --force-reinstall harbor`
- Check installation: `pip show harbor`
**Solution**:
- Set environment variable: `export ANTHROPIC_API_KEY=...`
- Check it's set: `echo $ANTHROPIC_API_KEY`
- Add to shell profile for persistence
**Solution**:
- Reduce `--n-concurrent` flag
- Increase Docker memory limits
- Use cloud provider for large-scale runs
For contributing to Harbor or developing custom extensions:
```bash git clone https://github.com/laude-institute/harbor.git cd harbor ``` ```bash uv sync --all-extras --dev ``` ```bash uv run pytest tests/ ``` ```bash uvx ruff format . uvx ruff check --fix . uvx ty check ```To remove Harbor:
```bash uv uv tool uninstall harbor ```pip uninstall harborOptionally clean up cached data:
rm -rf ~/.cache/harbor
rm -rf ~/.harbor<Card title="Core Concepts" icon="book" href="/concepts/tasks"
Learn about Harbor's architecture
<Card title="CLI Reference" icon="terminal" href="/cli/run"
Explore all available commands
<Card title="Configuration" icon="gear" href="/api-reference/job-config"
Advanced configuration options