About run-deep-swe
A skill for running the DeepSWE coding-agent benchmark with Pier, mini-swe-agent, and models available through OpenRouter. It covers setup, test runs, sampling, full-corpus execution, and result inspection.
Key features
- 01Sets up Pier and mini-swe-agent
- 02Connects models through OpenRouter
- 03Runs smoke tests and task subsets
- 04Executes the full benchmark corpus
- 05Inspects benchmark results
Use cases
- 01Checking OpenRouter model wiring on one task
- 02Scoring a deterministic task sample
- 03Running the full DeepSWE benchmark
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ davidondrej/ skills --skill run-deep-sweAfter installing, type/run-deep-swein Claude Code to confirm it loaded.
Bundled filesagents/openai.yaml
Details
From the project READMERun DeepSWE via OpenRouter
DeepSWE (deepswe.datacurve.ai) is a 113-task Harbor-compatible coding-agent benchmark. It runs via Pier (Harbor fork) driving mini-swe-agent (model-agnostic). Any model reachable through OpenRouter can be scored.
Prerequisites — state-check first
which uv git docker || echo "MISSING: install uv, git, docker"
docker info >/dev/null 2>&1 || echo "MISSING: Docker daemon not running (Pier's default sandbox)"
echo "OPENROUTER_API_KEY set? ${OPENROUTER_API_KEY:+YES}"
Docker must be running — Pier sandboxes each task in Docker by default (--env modal for cloud instead).
The user has a dedicated OpenRouter key for this benchmark exported globally in ~/.zshrc (weekly hard spend limit set as a safeguard). A fresh shell already has OPENROUTER_API_KEY available. If it's somehow not set, re-source the shell:
source ~/.zshrc && echo "key loaded? ${OPENROUTER_API_KEY:+YES}"
If still unset, ask the user — never invent a key.
Setup
git clone https://github.com/datacurve-ai/deep-swe && cd deep-swe
uv tool install datacurve-pier # PyPI (preferred)
# or: uv tool install git+https://github.com/datacurve-ai/pier
# pier bundles mini-swe-agent as the --agent driver
Run all pier commands from inside deep-swe/, using relative -p tasks/....
OpenRouter wiring (the part the docs don't spell out)
mini-swe-agent has a native OpenRouter model class. Both routes below use OPENROUTER_API_KEY and the OpenRouter slug (vendor/model, e.g. minimax/minimax-m3):
Route A — native OpenRouter class (preferred, hits openrouter.ai/api/v1 directly):
pier run -p deep-swe/tasks --agent mini-swe-agent \
--model minimax/minimax-m3 --model-class openrouter
Route B — LiteLLM provider prefix (fallback; same key):
pier run -p deep-swe/tasks --agent mini-swe-agent \
--model openrouter/minimax/minimax-m3
Notes:
- Slug = the exact OpenRouter slug. Verify it at openrouter.ai/models before running.
- Free/zero-cost models: OpenRouter cost tracking can error. Set
export MSWEA_COST_TRACKING=ignore_errors. - Flag spelling can vary by version — confirm with
pier run --helpandmini --help.
Smoke test FIRST (1 task — do this before any full run)
Always validate end-to-end wiring on a single task before spending tokens on the corpus:
pier run -p deep-swe/tasks/<task-id> --agent mini-swe-agent \
--model minimax/minimax-m3 --model-class openrouter
# list available task ids:
ls deep-swe/tasks
Pass criteria: run completes, model returns actions (not auth/format errors), a score/trajectory is emitted. If it 401s → key wrong. If "provider not provided"/"model not mapped" → fix slug or switch route.
Subset run (deterministic sample)
pier run -p deep-swe/tasks --agent mini-swe-agent \
--model minimax/minimax-m3 --model-class openrouter \
--n-tasks 10 --sample-seed 0
Full 113-task corpus (costs tokens + time — confirm with user first)
pier run -p deep-swe/tasks --agent mini-swe-agent \
--model minimax/minimax-m3 --model-class openrouter
# add `--env modal` to run in parallel Modal sandboxes (needs Modal configured)
Output & leaderboard
- Trials land in
jobs/<run>/<trial_id>/. Inspect withpier view jobs/<run>,pier analyze jobs/<run>, orpier critique run jobs/<run>. - Report: the exact command used, pass/fail, score, and any blockers.
- Submit results for the official leaderboard to:
Failure modes
| Symptom | Cause | Fix |
|---|---|---|
| HTTP 401 | bad/missing key | re-export OPENROUTER_API_KEY |
| "LLM Provider NOT provided" | missing slug prefix | use Route B openrouter/... or Route A with --model-class openrouter |
| "model isn't mapped"/cost error | unknown cost for model | export MSWEA_COST_TRACKING=ignore_errors |
| unknown flag | version drift | check pier run --help |