Skip to main content

Search-SWE CLI

Documentation index

Configure evaluations interactively and run one model setting across selected tasks, sequentially or concurrently. For agent-assisted operation, install the evaluation skill.

Installation

Use Python 3.12+ and a Linux host meeting the Docker and hardware requirements:

pip install search-swe
search-swe run

The Python package supplies the CLI; a separate checkout holds tasks, backend scripts, assets and results. CLI and checkout must share a release series, currently 0.2.x. Patch versions within that series are compatible. For local CLI development, install from the checkout with pip install -e ..

On first interactive use, choose an existing checkout, clone to ~/Search-SWE, or enter a custom location. Cloning needs Git and a new or empty directory; it fetches a shallow snapshot of main. The CLI remembers the selected path in $XDG_CONFIG_HOME/search-swe/repository.json (default ~/.config/search-swe/repository.json).

Checkout lookup uses --repo, SEARCH_SWE_REPO, the current directory and its parents, an editable installation's checkout, then the remembered path. Use search-swe --repo /path/to/Search-SWE run to select one explicitly. --yes, dry runs, list and doctor need an existing checkout; --offline offers existing checkouts only. Update the package and checkout together when changing release series, preserving local work.

Update tasks and inspect the checkout

CLI 0.2.1+ provides repository updates and offline diagnostics:

search-swe info
search-swe update --check
search-swe update

info shows the CLI/checkout versions, path, task count, compatibility and local Git state. update --check fetches the current branch's configured upstream (normally origin/main) and reports commits and added/removed tasks, leaving checkout files unchanged. update applies a compatible fast-forward. Use --repo PATH to select a checkout; both commands support --json for agents.

Update between evaluation batches with a clean working tree. Local changes, unfinished Git operations, detached HEAD and diverged histories produce an actionable error. Ignored credentials, downloaded assets and job outputs are preserved; an upstream file that would overwrite them blocks the update.

New tasks are discovered from the checkout and normally need no CLI upgrade. The target checkout must match the installed CLI's release series. update updates repository files; package upgrades remain separate Python installations.

Interactive setup

search-swe or search-swe run opens the wizard:

  1. Select the harness, provider, model and reasoning level.
  2. Enter missing coding-agent credentials using hidden input.
  3. Filter tasks, select with Space and confirm with Enter. Review their resource requirements, download locations and disk-space estimate.
  4. Configure the selected tasks' required services and choose optional APIs to enable. Shared variables are requested once.
  5. Choose sequential or parallel execution, select an idle GPU pool if needed, and confirm saving settings and starting.

search-swe configure saves model settings, credentials and default concurrency without launching tasks. Its optional task selection determines which service keys to configure; run selects the tasks to evaluate. Use each command's --help for its flags.

The default is Codex + OpenRouter + openai/gpt-6-luna, max reasoning. All three harnesses support OpenRouter. See the agent/provider matrix for direct routes and model scope. search-swe pi-models lists Pi providers; add --provider NAME for exact model IDs.

Search by name or model ID, highlight with ↓/↑ and select with Enter. An empty field keeps the displayed model; full IDs can also be entered manually. Suggestions use text, tool and API metadata: Responses for Codex, Messages for Claude Code, and Chat Completions for Pi. Model selection makes no inference request; actual compatibility depends on the model/provider.

The public catalog is cached for 24 hours at $XDG_CACHE_HOME/search-swe/openrouter-models.json (default ~/.cache/search-swe/openrouter-models.json). Search runs locally. Use --refresh-models to refresh or --offline to use cached metadata. Catalog failure permits cached results or manual input; new Pi OpenRouter models need compatible live or cached metadata, resolved before credential entry or downloads.

Changing the model, harness or provider defaults reasoning to Model/config default; an unchanged setting keeps its saved effort. Use --reasoning-effort LEVEL to override it. default retains the model/harness configuration, including a custom Codex TOML, rather than disabling reasoning. Choose explicit levels supported by your model/provider.

Credentials and configuration

Settings come from the checkout .env or --env-file PATH, in this order: explicit flags/wizard answers, exported shell variables, file values, defaults. The wizard identifies exported variables that override saved values.

Keys are hidden during entry and omitted from summaries. Saving preserves unrelated settings/comments and writes the file atomically with mode 0600; files inside the checkout must be Git-ignored. Values are literal. Cancelling before final confirmation leaves the file unchanged; declining to save uses entered values only for that run.

Saved setting Variable
Harness and provider SEARCH_SWE_AGENT, SEARCH_SWE_PROVIDER
Model and reasoning AGENT_MODEL, AGENT_REASONING_EFFORT / PI_THINKING
Default parallelism SEARCH_SWE_CONCURRENCY

Only selected tasks determine which service credentials are requested. Later runs reuse saved keys and ask for missing ones. Task-defined model names, endpoints and required services remain fixed. Coding-agent, judge and submission keys have separate roles; reusing the agent key for the trajectory judge requires an explicit choice.

Use search-swe configure TASK --edit-credentials to review or replace keys. For an optional service, Disable / clear clears its key for the run and, if saved, in .env. Required services still need credentials. Unset any exported shell value too if you want the service to stay disabled on future runs.

Every enabled OpenRouter submission key needs its exact allowlist: the shared key has 47 models, and reasoning-query-rewriting has 17. Both exclude qwen/qwen3-reranker-8b for cost. Apply the submission-key setup in OpenRouter; coding-agent and judge keys have separate access. View/export profiles offline without credentials:

search-swe submission-models
search-swe submission-models --profile reasoning-query-rewriting --json

Before saving or running, the CLI probes each enabled submission key with three out-of-list requests (max_tokens=1). Accepted or inconclusive responses block the operation; accepted probes may incur small charges. This also applies to saved keys, --yes and --offline. --dry-run sends no requests. The setup guide explains the sampled checks and exact profile requirements.

Scripted runs

search-swe run reasoning-query-rewriting --yes
search-swe run agentic-search agentic-search-vectorless \
  --agent codex --provider openrouter --model openai/gpt-6-luna \
  --reasoning-effort max --concurrency 2 --yes
search-swe run code-embedding-finetuning --gpu-devices 0 --yes
Command or flag Behavior
list --hardware cpu / list --json Show task names and resource requirements
doctor Check the host and Docker using the checkout .env or --env-file
--yes Use arguments/saved settings; missing required variables produce a configuration error
--dry-run Preview settings, disk estimates and commands without prompts, writes, downloads, allocation or API calls
--offline Use cached assets/model metadata; submission-key checks and evaluation still need network
--task NAME Repeat to select tasks instead of positional names

Parallel execution and results

Task copies live under <checkout>/tasks/<task-name>/data and models; Hugging Face also keeps a cache, normally ~/.cache/huggingface/hub. Set HF_HUB_CACHE in the shell or selected .env to relocate it. Before starting, the CLI shows both locations and estimated additional space, combines requirements on the same filesystem and checks free capacity. Allow extra space for checksum repairs, Docker images, scratch files and results. See the asset guide for cache, repair and standalone download options.

--concurrency N limits simultaneous tasks; its default is the saved value or

  1. The scheduler assigns disjoint logical CPUs and one idle physical GPU per GPU task within the RAM pool, preserving task limits and fixed CPU sets. Use --cpu-set 0-31, --gpu-devices 0,1 and --memory-gb 64 to bound that pool. It reserves 2 GiB for the host plus 512 MiB per running task. GPUs above 512 MiB used memory or 5% utilization are treated as busy and checked again at allocation. Coordinate with other host users; allocations only cover this CLI invocation. Keep the same CPU placement when reproducing timing measurements.

Each batch creates jobs/evaluations/<unique-run>/ or a new --output directory:

Output Contents
run.json Setting, checkout revision/dirty state, per-task allocation, status and result paths
logs/ Asset preparation and evaluation logs
Harbor result paths recorded in run.json Scores, verifier health, trajectories and artifacts

completed means the launcher exited successfully; check Harbor reports for scores and verifier health. Ctrl-C/SIGTERM cancels active runs and lets storage teardown finish. Cleanup failure stops the batch, cancels other active runs, records cleanup-error and leaves queued tasks not-started; follow the recovery instructions before another batch. Tasks with bounded storage need root/sudo for their storage helper; unattended runs need non-interactive sudo access. Harbor runs as the invoking user.

Metadata

Release files for search-swe 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for search-swe 0.2.1
File Size Uploaded Provenance Actions
search_swe-0.2.1.tar.gz 70.1 kB Without provenance Details for search_swe-0.2.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for search-swe 0.2.1
File Interpreter ABI Platform Actions
search_swe-0.2.1-py3-none-any.whl Python 3 none any Details for search_swe-0.2.1-py3-none-any.whl

Total release size: 139.2 kB

Release files / search_swe-0.2.1.tar.gz

Download URL search_swe-0.2.1.tar.gz
Size 70.1 kB
Tags Source
SHA-256 checksum
How to use checksums
cbbb6b03554aa5c6d605b30b2e1af14b9c5cfa3ca34235417853e9762d1657a6
BLAKE2b-256 checksum
How to use checksums
4f83b5fa5a529457bd0c0efd643ec0d8c6e89c48eadcd01f96e587bd00f1d599
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / search_swe-0.2.1-py3-none-any.whl

Download URL search_swe-0.2.1-py3-none-any.whl
Size 69.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
942d8a174b15ef7feb300585e459cf194f3653026da3bfc23347485e3351ea40
BLAKE2b-256 checksum
How to use checksums
30eed237514431a2266b1e6c9174014c9855ef28480f1e69f5ae58d91e21186c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Security for search-swe 0.2.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page