Skill

Benchmark coding models on DeepSWE via OpenRouter

Benchmarks any OpenRouter-reachable model on DeepSWE's 113-task coding-agent benchmark via Pier and mini-swe-agent.

Works with openrouterdockergithubmodal

91
Spark score
out of 100
Updated 15 days ago
Version 1.0.0
Models
universal

Add to Favorites

Why it matters

Run reproducible coding-agent evaluations against the 113-task DeepSWE benchmark using any model available through OpenRouter, producing scored trajectories and artifacts for leaderboard submission.

Outcomes

What it gets done

01

Validate OpenRouter model connectivity with single-task smoke tests before full runs

02

Execute deterministic subset or full 113-task corpus evaluations in Docker or Modal sandboxes

03

Generate pass/fail scores and trial artifacts for each benchmark task attempt

04

Troubleshoot authentication, cost tracking, and model mapping errors across OpenRouter providers

Install

Add it to your toolbox

Run in your project directory:

curl -fsSL https://spark.entire.vc/get/ag-run-deep-swe | bash

Overview

Run DeepSWE via OpenRouter

Benchmarks any OpenRouter-reachable model on DeepSWE's 113-task coding-agent benchmark via Pier driving mini-swe-agent, from a single-task smoke test through a deterministic subset to the full corpus. Use it to get a reproducible coding-agent evaluation for a model. Confirm the full 113-task corpus run with the user first, since it costs real tokens and time.

What it does

Benchmarks a model on DeepSWE, hosted at deepswe.datacurve.ai, a 113-task Harbor-compatible coding-agent benchmark. It runs via Pier, a fork of Harbor, which in turn drives mini-swe-agent, a coding agent built to be model-agnostic rather than tied to one vendor. Because mini-swe-agent is model-agnostic and Pier just orchestrates it against the task corpus, any model reachable through OpenRouter can be scored on the same 113 tasks without writing a bespoke integration for that model first. The output is meant to be a reproducible, repeatable evaluation plan with concrete artifacts on disk, not a one-off manual comparison: the same commands, run again later, should reproduce the same score for the same model, which matters when comparing multiple candidate models over time or re-checking a score after a model update.

When to use - and when NOT to

Use it when the user wants to benchmark a model on DeepSWE or mini-swe-agent tasks specifically, or needs a reproducible coding-agent evaluation plan with concrete output artifacts to point at afterward, rather than an ad-hoc manual comparison that can't be rerun the same way twice. Before touching any of the run commands, state-check the prerequisites rather than assuming they're already satisfied: confirm the uv, git, and docker binaries are actually installed, confirm the Docker daemon is actually running rather than just installed, since Pier sandboxes every task in Docker by default, and confirm an OpenRouter API key is already present in the environment. A short state-check command sequence covers all three:

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}"

A cloud sandbox flag exists as an alternative to the Docker default for teams that would rather not run task sandboxes locally. The OpenRouter key specifically must already be present in the environment before starting; if it's unset, the correct move is to ask the user to configure their own preferred secret-management path, never to read shell startup files looking for it, never to print a discovered secret back to the user, and never to invent a placeholder key just to get a command to run.

Integrations

Every trial's output lands in a per-run, per-trial directory on disk, and that output can be inspected three different ways depending on how much detail is needed: a quick view of a single run, an aggregate analysis across all trials in a run for overall scoring, or a deeper per-task critique when a specific result needs scrutiny rather than just a pass or fail number. Whatever the outcome, the resulting report should always state the exact command that was actually run, whether it passed or failed, the score itself, and any blockers hit along the way, so the run can be reproduced or debugged later without guessing what was actually executed. Each documented failure mode has its own specific fix rather than a generic "just retry": an HTTP 401 means the OpenRouter key needs to be re-exported, since it's either missing or wrong; a missing-provider error means the model slug is missing its routing prefix, fixed by switching to the fallback route or adding the explicit OpenRouter model-class flag to the preferred route; a model-not-mapped cost error is fixed by explicitly telling the cost tracker to ignore that class of error; and an unrecognized flag almost always means the installed Pier version has drifted from whatever documentation is being followed, resolved by checking the CLI's own current help output rather than trusting older instructions.

Who it's for

Anyone evaluating a model's coding-agent performance who wants a reproducible, OpenRouter-driven DeepSWE benchmark run with clearly separated smoke-test, deterministic-subset, and full-corpus stages, plus concrete, specific fixes for the most common OpenRouter wiring failures instead of generic trial-and-error debugging when a run doesn't behave as expected.

Source README

Run DeepSWE via OpenRouter

When to Use

  • Use when the user wants to benchmark a model on DeepSWE or mini-swe-agent tasks.
  • Use when you need a reproducible coding-agent evaluation plan and output artifacts.

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).

OPENROUTER_API_KEY must already be present in the environment. If it is unset,
ask the user to configure their preferred secret-management path; do not read
shell startup files, print secrets, or 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 --help and mini --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 with pier view jobs/<run>, pier analyze jobs/<run>, or pier 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

Limitations

  • Adapted from davidondrej/skills; verify local paths, tools, credentials, and agent features before acting.
  • For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first.

Discussion

Questions & comments · 0

Sign In Sign in to leave a comment.