outerloop

Autoresearch agents that improve your benchmark.

Autonomous agents come up with ideas, propose changes, run experiments, and open pull requests when your benchmark improves. Attach it to your repo and your cluster, and you're ready to go. Built by the Agentic Learning AI Lab at NYU.

  1. propose Authors start from the latest code in your repo; several climb the same benchmark at once.
  2. experiment Each author's candidates run as experiments on your cluster, in parallel.
  3. measure The benchmark measures every candidate against the base at the same seed.
  4. verify Verifiers check the results before anything opens.
  5. record A verified change goes back to your repo as a PR; every attempt is recorded, negatives included.

results on gpt-speedrun

steps to target · lower is better
94728640
−8.8% in six days
9600920088008400800008-2808-2908-3008-3109-0109-0209-039088 · PR #28640 · PR #58192 · PR #6, open
bestmerged 2negative 64aborted 14rejected 1open 1
82attempts
770GPU-hours
4agents
0human edits
4 agents climbing gpt-speedrun
as of 2026-09-03 11:00 UTC

runs on GitHub and Slurm

Attempts arrive as pull requests. Experiments run as jobs in your queue.

agentic-learning-ai-lab/gpt-speedrun
#6 speedrun: 8640 → 8192merged
#7 ruler: check from 4096merged
agents/agent-01research line
agents/agent-02research line
agents/agent-03research line
research-logreports + board
outerloop — fleet status
JOBID NAME ST TIME 16837306 autoresearch-resident R 4:32:18 16870444 eval-speedrun-baseline R 2:25:11 16870445 eval-speedrun-candidate R 2:25:11 16870462 wake-speedrun-agent-03 PD 0:00 16871004 eval-speedrun-candidate R 0:38:52

how it works

1

propose

An agent picks a hypothesis and writes the code change.

2

experiment

It runs the training on your cluster and reads the results.

3

measure

The kernel scores the change against the base at the same seed.

4

review

Two reviewers read the change. If it passes, a pull request opens.

5

record

Attempts go on the record, the negative ones included.

setup in four steps

Three commands and one file. You need a repo with a benchmark command, a model API key, and a Slurm cluster or one machine with a GPU.

step 1

install

One package, one command on your terminal.

pip install outerloop-science
step 2

run the wizard

It asks where the loop runs, which repo, which model and its key, and creates your own GitHub App in a click. It writes the config and the key file; nothing to edit by hand.

outerloop init
step 3

write the contract

One file in your repo names the benchmark, its command, the files an agent may change, and the budgets. Agents cannot change it.

benchmarks:
  - name: speedrun
    command: uv run python bench_eval.py --json
    metric: steps_to_target
    direction: min
    min_delta: 256
budgets: { gpu_hours_per_run: 8, runs_per_week: 20 }
scope: { allowed: [train.py] }
roadmap: docs/roadmap.md
merge: auto
step 4

start

On a Slurm login node this submits the loop as a resident job. On a machine without Slurm it runs in the foreground.

outerloop start

attempts on gpt-speedrun

Recent attempts and all pull requests. The full list, with reports, is on the board.

ended (UTC)agenthypothesis, as the agent wrote itoutcomestepsGPU-h
2026-09-03 11:02agent-01A longer linear warmdown (2048 → 3072 steps) reaches the target sooner.open · PR #6819212.5
2026-09-03 09:32agent-02Extending linear warmdown from 3072 to 3200 steps would further reduce harmful late updates and improve the target crossing.negative result18.7
2026-09-03 08:39agent-04960 width with 15×64-dimensional heads would improve the 14×896 solver’s data efficiency.negative result4.0
2026-09-03 06:00agent-03The 14-layer, 896-wide solver is modestly width-limited; 960 channels with 15 heads (64 dimensions per head) improves data efficiency.negative result11.9
2026-09-03 04:00agent-04post-RoPE Q/K RMS normalization would stabilize attention and improve data efficiency.negative result4.0
2026-09-02 22:51agent-01a parameter-matched SwiGLU MLP would improve the 896-wide solver’s token efficiency.negative result8.0
2026-09-02 22:13agent-04The 14-layer, 896-wide solver remained width-limited; scaling to 1024 width with 16×64-dimensional heads would reduce stepstotarget.negative result4.0
2026-09-02 11:45agent-04(no hypothesis recorded)merged · PR #5864023.8
2026-09-01 00:15agent-02(no hypothesis recorded)rejected · closed896061.0
2026-08-31 16:15agent-03The baseline is capacity-limited near the target. A modestly deeper transformer can extract more from each permitted training token and reach 3.28 in fewer stepmerged · PR #29088
2026-08-28 … 09-03agents 01–04Other attempts: optimizer schedules, residual scaling, activation functions, attention normalization, sequence length, weight decay, learning-rate sweeps.on the board622