Set up VS Code
Install VS Code for Mac (or brew install --cask visual-studio-code). Use the built-in terminal (zsh). No WSL extension needed.
Machine setup
Follow your operating system step by step. You only need this once. When you’re done, Docker + Harbor should run a quick smoke test successfully.
VS Code
Your editor. Built-in terminal is where you type commands.
Docker Desktop
Runs each task in an identical tiny computer (container).
uv
Fast installer for Python tools — installs Harbor for you.
Harbor
Task harness. Proves oracle=1 and nop=0 locally.
Git
Tracks file history. Claude Code uses it; set your name/email once.
WSL2 (Windows only)
Ubuntu Linux inside Windows — required for Harbor scripts.
Install the Snorkel Terminal-Bench CLI, sign in, submit tasks, handle revisions, and work through review assignments in the dedicated STB guide.
Install VS Code for Mac (or brew install --cask visual-studio-code). Use the built-in terminal (zsh). No WSL extension needed.
Download the Apple Silicon or Intel build, or brew install --cask docker. Open Docker once to accept terms. Wait for the whale icon to settle.
open -a Docker docker version docker run --rm hello-world
curl -LsSf https://astral.sh/uv/install.sh | sh source $HOME/.local/bin/env # or: brew install uv uv --version
uv tool install harbor harbor --help harbor datasets list # later: uv tool upgrade harbor
If git --version prompts for Xcode tools, accept — or xcode-select --install.
git config --global user.name "Your Name" git config --global user.email "you@example.com"
With Docker running, smoke-test Harbor on Terminal-Bench 2. Success means containers build and the oracle scores reward 1 — Docker and Harbor are wired correctly.
harbor run -d terminal-bench/terminal-bench-2 -a oracle -l 5 # -l 5 = first five tasks only (keeps the smoke test quick)
On Project Terminus you’ll mostly use track skills (`/discover`, `/convert`). This Harbor command is still useful to see the folder shape once:
harbor tasks init my-task harbor tasks start-env -p ./my-task -e docker # poke around inside harbor run -p ./my-task -a oracle # must print reward 1 harbor tasks check ./my-task harbor view ./jobs
Same Harbor CLI — only the environment flag changes. New E2B accounts often include free credit. Multi-container compose tasks should stay on local Docker (or Daytona).
# 1) Get API key from e2b.dev → export it export E2B_API_KEY="e2b_***" # add to ~/.zshrc or ~/.bashrc # 2) Install Harbor with E2B extra uv tool install "harbor[e2b]" # 3) Run in the cloud harbor run -p ./my-task -a oracle -e e2b harbor run -d terminal-bench/terminal-bench-2 -a oracle -e e2b -l 5 # Bonus: high concurrency on a weak laptop harbor run -p ./my-task -a oracle -e e2b -n 16
| Action | Command |
|---|---|
| Start Docker (Mac) | open -a Docker |
| Install Harbor | uv tool install harbor |
| Update Harbor | uv tool upgrade harbor |
| List datasets | harbor datasets list |
| Scaffold a task | harbor tasks init <name> |
| Open container interactively | harbor tasks start-env -p ./<name> -e docker |
| Quality check | harbor tasks check ./<name> |
| Oracle check | harbor run -p ./<name> -a oracle |
| E2B install | uv tool install "harbor[e2b]" |
| Run on E2B | harbor run -p ./<name> -a oracle -e e2b |
| Smoke test TB2 | harbor run -d terminal-bench/terminal-bench-2 -a oracle -l 5 |
| View results | harbor view ./jobs |
| Fix CRLF → LF (Windows) | sed -i 's/\r$//' <file> |