Parallel agents & evals

Fork a warm environment a hundred ways.

Pay the slow setup once: install deps, load the model, warm the cache, then snapshot. Every fork resumes from that exact live state in about 125 ms, with its own memory, entropy, and network identity. It is the primitive parallel agent work actually wants.

  • ~125 ms per fork
  • lazy userfaultfd memory
  • 320 VMs on a laptop
  • clone-safe by construction
~ crucible · fork fan-out

why it is fast, and safe

Hundreds of copies, bounded by RAM not by copying

01

Lazy memory, not copies

A fork pages in only the working set it touches via userfaultfd. Sixty-four forks share down to ~13 MiB each, not 512.

userfaultfd · O(pages used)
02

O(1) disk on reflink

On btrfs or XFS the rootfs clone shares extents, so nothing is copied. Hundreds of forks are bounded by RAM, not by disk.

reflink copy-on-write
03

Clone-safe, before reachable

Every child reseeds its RNG and rotates machine-id and netns before it is reachable. No duplicated entropy, no photocopies.

fatal-before-reachable

put it to work

One warm parent, many timelines

evals

Score N variants at once

Fork one warm server per variant, run them in parallel, keep the winner.

$ SNAP=$(crucible snapshot create $SERVER)
$ crucible fork $SNAP --count 32
# 32 isolated scorers, one warm parent

agents

Explore every branch

Try eight approaches from the same checkpoint; discard the seven that fail.

$ crucible fork $SNAP --count 8
# same state, eight timelines
# none can see or corrupt the others

checkpoints

Snapshot mid-run

Freeze a long task, branch to test a risky step, roll back if it breaks.

$ crucible snapshot create $SBX
$ # try the risky migration in a fork
$ crucible fork $SNAP -p 8081:80

the crown-jewel primitive

Branch running state like it is a variable.

Snapshot once, fork as wide as your RAM allows. No shared-kernel container can do this.

$ curl -fsSL https://github.com/gnana997/crucible/releases/latest/download/install.sh | sudo bash -s -- --with-deps --enable