datacurve/deep-swe

DeepSWE: Measuring frontier coding agents on original, long-horizon engineering tasks

Published 5/30/2026 by

harbor run -d datacurve/deep-swe

DeepSWE

DeepSWE is a benchmark for measuring frontier coding agents on original, long-horizon software engineering tasks drawn from active open-source repositories. The benchmark includes 113 tasks across TypeScript, Go, Python, JavaScript, and Rust, with isolated environments and program-based verifiers.

Task format

DeepSWE tasks use the Harbor task format:

task.toml         Metadata: repository, base commit, language, prebuilt image, resource limits
instruction.md    The prompt the agent sees
environment/      Dockerfile that reproduces the prebuilt image (fallback if the image is unavailable)
tests/            Verifier: test.sh (entry point) + test.patch (test additions, applied at grading time)
solution/         Reference solution (held out from the agent; for human and AI reviewers)

The verifier exercises the behavior the prompt describes. It accepts any solution whose observable behavior is correct, regardless of internal symbol names or structure. The reference patch in solution/ is never used at grading time; it exists so reviewers can spot-check correctness offline.

Quickstart

Use Pier to run the benchmark:

git clone https://github.com/datacurve-ai/deep-swe
uv tool install datacurve-pier

# Claude Opus 4.7 via Claude Code
export ANTHROPIC_API_KEY=...
pier run -p deep-swe/tasks --agent mini-swe-agent --model anthropic/claude-opus-4-7

# GPT-5.5 via Codex
export OPENAI_API_KEY=...
pier run -p deep-swe/tasks --agent mini-swe-agent --model openai/gpt-5.5

What is Pier

Pier is a Harbor-compatible framework for sandboxed coding-agent evals. It began as a fork of Harbor to support CLI agents in air-gapped tasks: Harbor blocks all outbound traffic in allow_internet = false tasks, including dependency installs and LLM API calls. Pier adds per-agent network allowlists, giving agents only the network access they need while keeping the task environment isolated.

Pier also adds more complete trajectory metadata, a better trajectory viewer, and pier critique run for analyzing agent trajectories. All leaderboard scores were produced with Pier running mini-swe-agent on Modal.

Agents and models

mini-swe-agent is model-agnostic. Pier also drives claude-code, codex, gemini-cli, and opencode directly. Pass --env modal to run in parallel sandboxes on Modal.

Subsets and single tasks

Deterministic random subset of the 113-task corpus:

pier run -p deep-swe/tasks --agent mini-swe-agent --n-tasks 10 --sample-seed 0

Single task:

pier run -p deep-swe/tasks/<task-id> --agent mini-swe-agent
Task
datacurve/wazero-multi-module-snapshots
datacurve/koota-query-predicates
datacurve/sqlite-utils-safe-import-checkpoints
datacurve/sqlfmt-create-table-ddl-formatting
datacurve/httpx-multipart-response-parsing
datacurve/actionlint-action-pinning-lint
datacurve/kombu-single-active-consumer-priority
datacurve/kcp-go-multiplexed-kcp-streams
datacurve/clack-async-autocomplete-options
datacurve/textual-richlog-follow-state
datacurve/tengo-callable-instance-isolation
datacurve/arcane-drift-detection-baselines
datacurve/helm-unified-manifest-stream
datacurve/participle-grammar-conflict-analysis
datacurve/happy-dom-abort-pending-body-reads
datacurve/textual-kitty-key-phases
datacurve/fd-deterministic-multi-key-sorting
datacurve/kombu-virtual-queue-dead-lettering
datacurve/httpx-streaming-json-iteration
datacurve/go-git-worktree-merge-conflicts
datacurve/katex-multicolumn-array-spans
datacurve/langchain-request-coalescing
datacurve/bandit-interprocedural-taint-checks
datacurve/true-myth-iterable-collection-combinators
datacurve/etree-xml-diff-patch
datacurve/koota-pair-relation-tracking
datacurve/yjs-map-conflict-detection
datacurve/obsidian-linter-link-format-conversion
datacurve/mashumaro-flattened-dataclass-fields
datacurve/sql-formatter-bigquery-pipe-formatting
datacurve/scc-bounded-memory-spilling
datacurve/obsidian-linter-scoped-ignore-markers
datacurve/claude-code-by-agents-recursive-delegation
datacurve/dateutil-rfc5545-timezone-interop
datacurve/onedump-dump-encryption-pipeline
datacurve/anko-typed-variable-bindings
datacurve/superjson-error-stack-serialization
datacurve/returns-validated-error-accumulation
datacurve/wasmi-trap-coredumps
datacurve/testem-per-launcher-reports
datacurve/updo-policy-alerting
datacurve/obsidian-linter-auto-table-of-contents
datacurve/koota-deferred-mutation-buffer
datacurve/awilix-async-container-initialization
datacurve/skrub-duration-encoding
datacurve/kysely-window-grouping-helpers
datacurve/mobly-grouped-test-barriers
datacurve/effect-sse-httpapi-streaming
datacurve/kgateway-consistent-hash-policy
datacurve/csstree-shorthand-expansion-compression
datacurve/koota-composite-trait-aspects
datacurve/fastapi-implicit-head-options
datacurve/kea-atomic-signal-selectors
datacurve/go-genai-streamed-function-args
datacurve/dasel-html-document-format
datacurve/koota-entity-snapshot-rollback
datacurve/cattrs-partial-structuring-recovery
datacurve/abs-module-cache-flags
datacurve/ofetch-per-origin-circuit-breaker
datacurve/opa-template-string-reconstruction
datacurve/oxvg-structural-selector-preservation
datacurve/arktype-json-schema-refs-dependencies
datacurve/prometheus-transactional-reload-status
datacurve/pebble-durability-wait-apis
datacurve/vulture-persistent-analysis-cache
datacurve/anko-default-function-arguments
datacurve/abs-stepped-slices
datacurve/ytt-jsonpath-query-api
datacurve/bandit-incremental-cache-control
datacurve/geo-shapeindex-serialization
datacurve/tengo-destructuring-bindings
datacurve/scriggo-method-declarations
datacurve/prometheus-typed-label-sorting
datacurve/ipython-session-bundle-replay
datacurve/termenv-preserve-ansi-resets
datacurve/drizzle-orm-window-function-builders
datacurve/numba-stencil-boundary-modes
datacurve/cliffy-config-file-parsing
datacurve/python-statemachine-state-data-scoping
datacurve/tomlkit-toml-table-converters
datacurve/adaptix-name-mapping-aliases
datacurve/happy-dom-deterministic-intersectionobserver
datacurve/bandit-structured-nosec-directives
datacurve/opa-rego-rule-profiling
datacurve/query-persist-restored-query-state
datacurve/pest-character-class-coalescing
datacurve/expr-try-catch-errors
datacurve/pwntools-tube-multiplexing
datacurve/helm-array-merge-strategies
datacurve/igel-persist-feature-schema
datacurve/meriyah-explicit-resource-declarations
datacurve/mnamer-daemon-watch-lifecycle
datacurve/dynamodb-toolbox-lazy-recursive-schemas
datacurve/ink-grid-box-layout
datacurve/eicrud-keyset-pagination-cursor
datacurve/yaegi-go-embed-directives
datacurve/valibot-recursive-schema-composition
datacurve/optique-conditional-option-dependencies
datacurve/vitest-duration-sharding
datacurve/httpx-deterministic-cookie-store

Displaying 100 of 113 tasks