1. Scaffold
package.json depending on @loop.js/core (which provides the
project-local loop bin), a loop.config.ts, and an empty workspace/ — the work tree
the agents build in.
Agents run on the Claude Agent SDK, so set your key:
2. State the Goal
loop.config.ts is goal-only: goal is the field you edit; limits spells out the
tight engine defaults, and every other knob is a commented line already carrying its
default.
verify takes a prompt exactly
like goal (a string, { file: "./verify.md" }, or a function):
3. Run
4. Schedule it (optional)
Let a real scheduler re-trigger the loop instead of babysitting it:loop run in this directory every morning and removes itself at the first
settle — capped at 3 runs / 24 hours by default, in case it never does. With
--backend modal, State lives on a Modal Volume and removing the Entry never deletes it —
see loop cron.
Where things live
| Path | What it is |
|---|---|
workspace/ | the work tree — everything the agents build |
.loop/ | engine state: the Record, journal, lock |
.handoff/ | the per-Round notes that carry memory across Rounds |