search-swe 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,201 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright 2026 VectorSpaceLab
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
@@ -0,0 +1,3 @@
1
+ include LICENSE docs/cli.md
2
+ recursive-include src/search_swe *.py
3
+ global-exclude *.pyc
@@ -0,0 +1,215 @@
1
+ Metadata-Version: 2.4
2
+ Name: search-swe
3
+ Version: 0.1.0
4
+ Summary: Configure and run Search-SWE coding-agent evaluations
5
+ License-Expression: Apache-2.0
6
+ Project-URL: Repository, https://github.com/VectorSpaceLab/Search-SWE
7
+ Project-URL: Homepage, https://search-swe.github.io/
8
+ Classifier: Development Status :: 3 - Alpha
9
+ Classifier: Operating System :: POSIX :: Linux
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
12
+ Requires-Python: >=3.12
13
+ Description-Content-Type: text/markdown
14
+ License-File: LICENSE
15
+ Requires-Dist: harbor==0.22.0
16
+ Requires-Dist: huggingface_hub<2.0,>=1.0
17
+ Requires-Dist: questionary<3,>=2.1
18
+ Requires-Dist: prompt_toolkit<4,>=3.0.48
19
+ Requires-Dist: python-dotenv<2,>=1.0
20
+ Requires-Dist: psutil<8,>=7
21
+ Requires-Dist: PyYAML<7,>=6
22
+ Dynamic: license-file
23
+
24
+ # Search-SWE CLI
25
+
26
+ Configure coding-agent evaluations interactively, restore fixed inputs, and run
27
+ one model setting across selected Search-SWE tasks sequentially or concurrently.
28
+ For agent-driven operation, install the [evaluation skill](https://github.com/VectorSpaceLab/Search-SWE/blob/main/docs/agent-evaluations.md)
29
+ and describe the settings and tasks to your agent.
30
+
31
+ ## Installation
32
+
33
+ The distribution name and command are both `search-swe`. Install from PyPI:
34
+
35
+ ```bash
36
+ python -m pip install search-swe
37
+ ```
38
+
39
+ For local CLI development, install from the repository root:
40
+
41
+ ```bash
42
+ python -m pip install -e .
43
+ search-swe --help
44
+ ```
45
+
46
+ Python 3.12+ is required. Package dependencies are declared in
47
+ `pyproject.toml`, including the pinned Harbor version. Use a virtual
48
+ environment to isolate these dependencies. The wheel contains the CLI; task
49
+ definitions, Docker integration and fixed assets live in a Search-SWE checkout.
50
+ Start the wizard to choose or prepare that checkout:
51
+
52
+ ```bash
53
+ search-swe run
54
+ ```
55
+
56
+ When no checkout is found, interactive `run` and `configure` offer three choices:
57
+ clone to `~/Search-SWE`, clone to a custom path, or select an existing checkout.
58
+ Git is required for cloning. Accept the clone destination to download the
59
+ repository's latest `main` snapshot with a shallow clone, then continue with model configuration. A valid
60
+ checkout at the chosen path is reused; cloning uses a new or empty directory.
61
+
62
+ The selected path is saved in `$XDG_CONFIG_HOME/search-swe/repository.json`
63
+ (default `~/.config/search-swe/repository.json`) and reused by future commands.
64
+ Repository setup completes before model configuration; task assets and results
65
+ belong to the selected checkout, while the CLI stays in the Python environment.
66
+
67
+ Repository discovery uses `--repo`, then `SEARCH_SWE_REPO`, then the current
68
+ directory and its parents. Editable installations also recognize their source
69
+ checkout, followed by the remembered path. To override discovery, use
70
+ `search-swe --repo /path/to/Search-SWE run`. Scripted commands (`--yes`), dry runs,
71
+ `list` and `doctor` require an existing checkout. With `--offline`, the interactive
72
+ selector offers existing checkouts only.
73
+
74
+ ## Interactive setup
75
+
76
+ `search-swe` or `search-swe run` opens the terminal wizard:
77
+
78
+ 1. Choose the harness, then a supported provider. Search/select an OpenRouter
79
+ model, enter a direct-endpoint model ID, or select a supported Pi model.
80
+ Then choose its reasoning or thinking level.
81
+ 2. Enter the coding-agent API key using hidden input, or retain an existing key.
82
+ 3. Filter and select tasks with Space, then press Enter. The menu shows their
83
+ CPU, RAM, GPU and asset requirements.
84
+ 4. Configure the selected tasks' required judge credentials. Optional APIs for
85
+ submitted programs have a separate opt-in prompt.
86
+ 5. Choose sequential execution or a maximum parallelism, review the setting and
87
+ resource requirements, select an idle GPU pool for GPU tasks, then confirm
88
+ saving and starting.
89
+
90
+ `search-swe configure` uses the same configuration flow without starting an
91
+ evaluation. Model/harness compatibility follows the existing backend: Codex
92
+ supports OpenRouter and direct endpoints; Claude Code supports its direct
93
+ Anthropic API and Anthropic models through OpenRouter; Pi uses the repository's
94
+ DeepSeek/Z.ai direct adapters.
95
+
96
+ The default is Codex + OpenRouter + `openai/gpt-6-luna`, with `max` reasoning.
97
+ Custom models must support the selected harness/API; choosing a model does not
98
+ perform a paid connectivity test. Existing task-specific verifier models and
99
+ network allowlists continue to apply.
100
+
101
+ ### OpenRouter model search
102
+
103
+ The model field searches the public OpenRouter directory by name and model ID
104
+ as you type, including multiple keywords. Use ↓/↑ to highlight a result and
105
+ Enter to select its full ID; matching rows show the name and context length.
106
+ Enter on an empty field keeps the displayed current/default model. A complete
107
+ model ID can also be typed manually for newly available or custom models.
108
+
109
+ The directory is fetched once and searched locally; typing does not issue API
110
+ requests. Metadata is cached for 24 hours under
111
+ `$XDG_CACHE_HOME/search-swe/openrouter-models.json` (default
112
+ `~/.cache/search-swe/openrouter-models.json`). Use `search-swe run --refresh-models`
113
+ to refresh it, or `--offline` to use the cache without a catalog request. If the
114
+ directory is unavailable, cached results or manual model input remain usable.
115
+ Catalog requests use the public endpoint and carry no API keys.
116
+
117
+ Suggestions use the selected harness and available text/tool/API metadata;
118
+ Claude Code suggestions are limited to Anthropic models. Metadata filtering
119
+ does not replace an actual harness/model compatibility test. The directory may
120
+ not expose every supported reasoning level. When selecting a new model, the
121
+ wizard starts with **Model/config default**, which omits the explicit effort
122
+ override. Models that list no reasoning support use that setting automatically.
123
+ Other models offer an explicit level selection; choose a level supported by the
124
+ model/provider. The saved model setting is reused on subsequent runs.
125
+
126
+ `--reasoning-effort default` selects the same behavior in scripted runs. This
127
+ uses the model/harness configuration, including any custom Codex configuration;
128
+ it does not mean that reasoning is disabled. Catalog selection and configuration
129
+ do not start paid model requests.
130
+
131
+ ## Credentials and configuration
132
+
133
+ Configuration is read from the checkout `.env`, or `--env-file PATH`. Command-line
134
+ and explicit wizard answers take priority over exported variables, then file
135
+ values, then defaults. A saved configuration does not override exported shell
136
+ variables in a later invocation; the wizard identifies conflicting variable names.
137
+
138
+ Keys are hidden during entry and summaries contain no key values. Saving uses an
139
+ atomic replacement with mode `0600`, preserves unrelated dotenv settings/comments,
140
+ and treats values literally. Saved environment files inside the checkout must be
141
+ Git-ignored. Cancelling before the final confirmation leaves the
142
+ file unchanged. Choose not to save to use entered values only for this run.
143
+
144
+ `SEARCH_SWE_AGENT`, `SEARCH_SWE_PROVIDER`, `AGENT_MODEL`,
145
+ `AGENT_REASONING_EFFORT` / `PI_THINKING`, and `SEARCH_SWE_CONCURRENCY` hold the
146
+ selected defaults. Keys retain their existing purpose-specific variable names.
147
+ Reusing the OpenRouter agent key for the trajectory judge requires an explicit
148
+ choice; submitted programs receive only their task-declared credentials.
149
+
150
+ ## Scripted runs
151
+
152
+ ```bash
153
+ search-swe run reasoning-query-rewriting --yes
154
+ search-swe run agentic-search agentic-search-vectorless \
155
+ --agent codex --provider openrouter --model openai/gpt-6-luna \
156
+ --reasoning-effort max --concurrency 2 --yes
157
+ search-swe run code-embedding-finetuning --gpu-devices 0 --yes
158
+ search-swe run reasoning-query-rewriting --dry-run
159
+ search-swe list --hardware cpu
160
+ search-swe list --json
161
+ search-swe doctor
162
+ ```
163
+
164
+ `--task NAME` may also be repeated. Non-interactive runs use `--yes`; missing keys
165
+ produce a configuration error instead of waiting for input. `--dry-run` previews
166
+ configuration and commands without writing files, downloading assets, allocating
167
+ devices or calling model APIs. `--offline` uses local asset caches; evaluation
168
+ still requires access to the selected model APIs. Asset restoration verifies
169
+ SHA-256 and replaces corrupt manifest-owned files with verified copies.
170
+
171
+ ## Parallel execution and results
172
+
173
+ `--concurrency N` limits simultaneous tasks. The scheduler allocates disjoint
174
+ logical CPU sets and one idle physical GPU per GPU task, and admits tasks only
175
+ within the RAM pool. It preserves each task's CPU quota, memory cap, storage and
176
+ scoring rules. Fixed task CPU-set environment variables remain respected.
177
+ Use `--cpu-set 0-31`, `--gpu-devices 0,1`, and `--memory-gb 64` to bound the pool.
178
+ RAM accounting leaves 2 GiB for the host and 512 MiB per running task for trusted
179
+ infrastructure. GPUs with more than 512 MiB used or over 5% utilization are
180
+ considered busy at startup.
181
+ GPU availability is checked again while scheduling, so a GPU taken by another
182
+ process during asset preparation stays out of the next allocation.
183
+
184
+ Allocations coordinate this CLI invocation. They do not reserve the machine
185
+ against other users or independent launchers; select a dedicated resource pool
186
+ on shared hosts. CPU placement can affect timing, so retain allocations when
187
+ reproducing performance measurements.
188
+
189
+ Runs use fresh `jobs/evaluations/<unique-run>/` directories, or a new `--output`
190
+ directory. `run.json` records the model setting, checkout revision/dirty state,
191
+ per-task resource allocation, process status, log and result paths. A `completed`
192
+ status means the launcher exited successfully; inspect Harbor results for task
193
+ scores and verifier health. Asset logs and evaluation logs are under `logs/`.
194
+
195
+ Ctrl-C / SIGTERM stops launching new tasks, forwards cancellation to running
196
+ launchers and allows teardown before releasing managed storage. Retained Docker
197
+ containers prevent storage unmounting and produce a recovery instruction.
198
+ Tasks using bounded filesystems need the host prerequisites described in the
199
+ repository evaluation guide. Their storage helpers run with root/sudo while
200
+ Harbor retains the invoking user's identity. For unattended runs, arrange
201
+ non-interactive sudo access in advance.
202
+
203
+ ## Building for publication
204
+
205
+ ```bash
206
+ python -m pip install build twine
207
+ python -m build
208
+ python -m twine check --strict dist/*
209
+ ```
210
+
211
+ Inspect both wheel and sdist before publishing. They should contain the CLI,
212
+ metadata, license and documentation, with no `.env`, task datasets, trajectories
213
+ or job outputs. Keep `pyproject.toml` and `src/search_swe/__init__.py` versions
214
+ aligned before building.
215
+ Upload the checked wheel and sdist with Twine using a PyPI API token.
@@ -0,0 +1,163 @@
1
+ <p align="center">
2
+ <img src="assets/hero.png" alt="Search-SWE — Benchmarking coding agents on building search engines">
3
+ </p>
4
+
5
+ <h1 align="center">
6
+ Search-SWE
7
+ <br>
8
+ <sub>🔍 Benchmarking coding agents on building search engines. 🤖</sub>
9
+ </h1>
10
+
11
+ <p align="center">
12
+ <a href="https://search-swe.github.io/"><img src="https://img.shields.io/badge/Homepage-Search--SWE-0E9B9B?style=for-the-badge&logo=githubpages&logoColor=white" alt="Search-SWE homepage"></a>
13
+ <a href="https://search-swe.github.io/tasks.html"><img src="https://img.shields.io/badge/Task_Gallery-Browse-5865F2?style=for-the-badge" alt="Search-SWE task gallery"></a>
14
+ <a href="https://huggingface.co/datasets/search-swe/Search-SWE"><img src="https://img.shields.io/badge/HuggingFace-Search--SWE-FFD21E?style=for-the-badge&logo=huggingface&logoColor=black" alt="Search-SWE dataset on Hugging Face"></a>
15
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-Apache_2.0-lightgrey?style=for-the-badge&logo=apache&logoColor=white" alt="License: Apache 2.0"></a>
16
+ </p>
17
+
18
+ <p align="center">
19
+ <b>English</b> · <a href="README_zh.md">简体中文</a>
20
+ </p>
21
+
22
+ > *Note: Search-SWE is an ongoing project; tasks, documentation, and results
23
+ > are still evolving.*
24
+
25
+ ## 📖 Overview
26
+
27
+ Search-SWE evaluates whether coding agents can **implement and optimize** real
28
+ search systems under fixed resource constraints. Agents inspect an environment,
29
+ write and run code, test their systems, and iterate toward an executable
30
+ submission. Evaluation measures the behavior of the resulting system, including
31
+ retrieval quality, functional correctness, and resource use.
32
+
33
+ Tasks cover reasoning-assisted retrieval, memory-constrained vector search,
34
+ long-document reranking, embedding fine-tuning, and query-encoder alignment.
35
+
36
+ Each task specifies its inputs, submission interface, evaluation criteria, and
37
+ resource budget. See the [benchmark design](docs/benchmark.md) for how
38
+ evaluation works, how the repository is organized, and where fixed data and
39
+ models come from.
40
+
41
+ ## 🚀 Quick Start
42
+
43
+ Install the `search-swe` CLI from PyPI in a Python 3.12+ environment:
44
+
45
+ ```bash
46
+ python -m pip install search-swe
47
+ ```
48
+
49
+ ### Run with the CLI
50
+
51
+ ```bash
52
+ search-swe run
53
+ ```
54
+
55
+ On first use, choose where to keep the task repository: accept `~/Search-SWE`,
56
+ enter a custom clone path, or select an existing checkout. Git is needed for
57
+ cloning. The CLI remembers the selected path for later commands; task assets and
58
+ results are stored in that checkout. An existing checkout in the current
59
+ directory is used directly.
60
+
61
+ The wizard guides you through harness, provider, searchable model selection,
62
+ reasoning level and API keys, followed by tasks and sequential or parallel execution. Its
63
+ default setting is **Codex + OpenRouter + GPT-6 Luna (max)**. Keys use hidden
64
+ input; configuration is saved to the ignored `.env` only after confirmation.
65
+ You can also keep entered credentials only for the current run.
66
+
67
+ Use a native Linux x86_64 Docker host with enough CPU, RAM, disk and optional GPU
68
+ capacity. The CLI restores and checks selected task assets, assigns resources,
69
+ and prepares bounded task storage when needed. Those tasks require root/sudo
70
+ and FUSE; see [host setup](docs/evaluation.md#bounded-task-storage).
71
+
72
+ After configuration, scripted runs are short:
73
+
74
+ ```bash
75
+ search-swe run reasoning-query-rewriting --yes
76
+ search-swe run agentic-search agentic-search-vectorless --concurrency 2 --yes
77
+ search-swe run code-embedding-finetuning --gpu-devices 0 --yes
78
+ ```
79
+
80
+ Parallel tasks receive separate CPU sets and GPUs within the selected resource
81
+ pool. Results, per-task logs and a `run.json` summary are written to a fresh
82
+ `jobs/evaluations/` directory. Use `search-swe list` to browse tasks,
83
+ `search-swe configure` to save settings without running, and `--dry-run` to
84
+ preview. Task definitions remain in the checkout; use `--repo PATH` when running
85
+ an installed CLI from elsewhere.
86
+
87
+ See the [quick start](docs/quickstart.md), [CLI reference](docs/cli.md), and
88
+ [full evaluation guide](docs/evaluation.md) for custom providers, resource pools,
89
+ network configuration and the underlying single-task launcher.
90
+ For local CLI development, use `python -m pip install -e .` from the repository root.
91
+
92
+ ### Run through your agent
93
+
94
+ Install [run-searchswe-evaluation](skills/run-searchswe-evaluation/SKILL.md) into
95
+ your coding agent, then tell it which settings and tasks to run. Use either
96
+ installer (Codex shown here):
97
+
98
+ ```bash
99
+ npx skills add VectorSpaceLab/Search-SWE --skill run-searchswe-evaluation -a codex
100
+ ```
101
+
102
+ ```bash
103
+ gh skill install VectorSpaceLab/Search-SWE skills/run-searchswe-evaluation --agent codex
104
+ ```
105
+
106
+ Then ask your agent:
107
+
108
+ > Use run-searchswe-evaluation with my Search-SWE checkout. Run agentic-search
109
+ > and agentic-search-vectorless with Codex + OpenRouter + openai/gpt-6-luna,
110
+ > max reasoning and concurrency 2. Reuse my .env, monitor the runs and report
111
+ > scores, verifier health and result paths.
112
+
113
+ The skill guides setup, resource checks, execution and monitoring through the
114
+ same CLI. It prompts you to configure missing keys locally. The
115
+ [agent evaluation guide](docs/agent-evaluations.md) covers local checkout
116
+ installation, other agents, user-wide installation and installer prerequisites.
117
+
118
+ ## 📚 Documentation
119
+
120
+ | Document | Contents |
121
+ | --- | --- |
122
+ | [Quick start guide](docs/quickstart.md) | A first CPU evaluation, end to end |
123
+ | [Run with your agent](docs/agent-evaluations.md) | Install the evaluation skill and describe settings/tasks |
124
+ | [Evaluation guide](docs/evaluation.md) | Credential setup, coding agents, GPU, network policy, and custom providers |
125
+ | [Network policy](docs/network-policy.md) | Phase-specific allowlists, default direct gateway, and optional proxy egress |
126
+ | [Asset guide](docs/assets.md) | Downloading, verifying, and restoring fixed data and models |
127
+ | [Benchmark design](docs/benchmark.md) | Evaluation, repository layout, and data provenance |
128
+ | [Contributing guide](docs/contributing.md) | Task-authoring workflow, validation, and PR expectations |
129
+
130
+ For task descriptions and results, visit the
131
+ [project website](https://search-swe.github.io/), maintained in a
132
+ [separate repository](https://github.com/search-swe/search-swe.github.io).
133
+
134
+ ## 🤝 Contributing
135
+
136
+ Contributions are welcome. For new or substantially revised tasks, start with
137
+ the workflow and skills in [`.agents/`](.agents/AGENTS.md), including
138
+ [`create-searchswe-task`](.agents/skills/create-searchswe-task/SKILL.md) for task authoring
139
+ and [`maintain-searchswe-task`](.agents/skills/maintain-searchswe-task/SKILL.md) for
140
+ PR review and publication. See the
141
+ [contribution entry](CONTRIBUTING.md) and [guide](docs/contributing.md) for validation and PR requirements.
142
+
143
+ Task authoring includes running a configured coding model, inspecting its
144
+ trajectory and evaluation results, and using that feedback to refine the task
145
+ setting. Revalidate any changes that affect the task or scoring and report the
146
+ final tested revision. If required API keys are missing, the authoring agent
147
+ asks the contributor to configure them locally before the trial.
148
+
149
+ Create tasks directly at `tasks/<task-name>` in your contribution branch. Choose
150
+ a descriptive name of at most five lowercase, hyphen-separated words, and use
151
+ it for the package and its official data. One PR may add multiple tasks. Review
152
+ and validate each package, then merge with a merge commit to preserve original
153
+ authors.
154
+
155
+ Public upstream HF datasets may be used directly with immutable commit pins,
156
+ exact filenames, sizes and SHA-256 hashes. Verify downloads, provenance and usage
157
+ terms before merging; official re-upload is optional. When official publication
158
+ is needed, publish under `tasks/<task-name>/` and pin the merged HF SHA first.
159
+ Use `--task <task-name>` for downloads and local trials.
160
+
161
+ ## Citation
162
+
163
+ TBA