📈 GH Trending Explorer 🎲 Surprise me

← all repos

RISE-X-Lab / SPROUT

git clone https://github.com/RISE-X-Lab/SPROUT.git

—

+5
stars, 24h · #2,633
+~35
stars, 7 days · #3,277
+100
stars, 30 days · #4,893
104
★ total · +35% this week
19
forks · 0 open issues

Star history (as recorded here)

2026-10-20 · 95 ★ 2026-10-22 · 104 ★
LanguagePython
LicenseMIT
Created2026-09-26 (26d ago)
Last push2d ago
Watchers10
OwnerOrganization

Links

README excerpt
Efficient exploration for coding agents. 
 Save progress at every turn. Branch from any checkpoint instead of starting over.
Sprout lets a coding agent go back to any turn of a rollout and continue from there, instead of
starting over. At each turn, Sprout saves a checkpoint: a disk snapshot of the agent's sandbox,
paired with the agent's history up to that turn. When a rollout fails, SPROUT, the method of the
paper, reviews it, picks the checkpoints before the mistake and branches from them. Benchmark
evaluation and RL training run as the same jobs, which workers claim from the Run Store.
## Quick start
You need a Linux host with Python 3.12 and Go 1.25.
### 1. Set up the host
 [code] 
`ops/setup_podman.sh` installs these items, and skips each one that is already there:
- rootless podman 6, under `~/.local/opt/podman`
- a btrfs store for the sandboxes, at `~/sprout-btrfs`
- `.venv`, with the `mini`, `harbor` and `dev` extras
- the runtime binary, `runtime/sprout-runtime`
The script uses sudo only for the packages, the btrfs store and the cgroup and user id settings.
`doctor` prints one line for each check of the host. If a check fails, it exits 1.
### 2. Run one agent
 [code] 
The endpoint can be any OpenAI-compatible Chat Completions API. The run prints its outcome, and
the journal `runs/first.jsonl` records each turn. `snapshots` lists the snapshot of each turn,
and `export` writes the trajectory as Markdown. If your provider does not serve plain Chat
Completions, put it behind the bundled
LiteLLM proxy.
### 3. Start the Run Store and a worker
Evaluation and RL submit their rollouts, grades and reviews as jobs to the Run Store. A worker
on the same host claims and runs them.
 [code] 
`setup` checks the host, and writes the configs and the secrets under `~/.config/sprout/`. It
asks for the model endpoint and the variable of its key, and it asks before each change of a file
that exists (Guided setup). `python -m sprout.services init`
writes the same configs without questions. The worker passes the key variable to its jobs. The
last command exports the Run Store token into the shell.
### 4. Evaluate a task with SPROUT
The tasks are the Harbor task directories of these benchmarks. Clone them as the
experiments guide says.
- DeepSWE
- TerminalBench 2.1
- SWE-bench Pro v2 HARD-51
 [code] 
The commands do these steps:
1. The gate checks that the oracle of each task scores 1 and that doing nothing scores 0.
2. The evaluation runs the agent on the task. If the attempt fails, the review picks
 checkpoints, and the agent branches from them. `--rounds 2 --branches 4 3` gives two rounds,
 with up to 4 branches and then up to 3.
3. `ops.report task` prints the tree of the attempts and their rewards.
`--dataset-digest` and `--preparation-manifest` pin the task set. `python -m examples.qwen.run`
writes both, and runs a whole benchmark. The evaluation refuses a checkout with uncommitted
changes, because its summary records the commit. Evaluation gives every
op