loops · ctrl-\ l

Local Loop Engineering,
let them build while you sleep

A loop builds a brief, runs your checks and has different models review the change, round after round, until the checks pass and no P1 finding is open. Loops in different repositories run side by side. The board shows where each one is, and by default none of them stops to ask.

$ brew install partyline-sh/tap/partyline
loops · ctrl-\ l
0 needs you · watcher 2s
NEEDS YOU (0)
—
PLANNED (1)
○ batch 7d20b1 · checkout-web
round prices in one place
step 3 of 3
IN PROGRESS (2)
/ 3fa21c · payments-api
cap webhook retries at 8, with jitter
●○○○○○ 3m
/ 9b03c2 · checkout-web
move the tax lookup behind an interface
step 2 of 3
⚙ codex ●○○○○○ 6m
IN REVIEW (1)
⠋ 5be912 · ingest-worker
drain the dead-letter queue on startup
round 2 review
checks✓ codex… claude✓
DONE (1)
✓ e41a09 · checkout-web
split cart totals into a pure function
step 1 of 3
pr_ready · 14m
batch 7d20b1 ▰▱▱ 1/3 step 2 building · 22m in batch
←→↑↓ move⏎ opens stopd delete, settingsesc/q close

the Loops board, ctrl-\ l. d deletes a loop or its batch.

five columns

01

needs you

What waits on a person. By default loops decide for themselves; turn on “ask me” and briefs to approve and disputes to rule on stop here.

02

planned

Batch steps not started yet. Partyline runs a headless builder for each step in turn.

03

in progress

A builder at work: your own session, or a batch step's builder (⚙). The pips show rounds used out of the maximum.

04

in review

Your checks, then each reviewer reading the change read-only. A ✓ lands next to each one as it reports.

05

done

PR ready, failed or stopped. Finished batch steps are committed; nothing is pushed, merged or opened as a PR.

inside a card

loop 3fa21c · payments-api○○○○○○
· brief· build· checks· review· dispute· pr ready

checks

Partyline runs the brief's checks. A check that fails and did not fail before the change sends the round back.

review

Reviewers on different models, Claude and Codex, read the change read-only and rank findings P1, P2, P3.

dispute

The builder can dispute a finding. A model that did not build the work reads the code and rules fix or dismiss.

repeat

Open P1s go back to the builder. When the checks pass and no P1 is open, the loop is PR ready.

what you're wondering

one loop per repository?

Yes, one at a time, and worktrees of a repository count as that repository. Loops in different repositories run in parallel, which is what fills the board.

who picks the models?

You do, once, in settings (ctrl-\ ,): the builder and the reviewers, each with an engine, model and effort. Engines today are Claude and Codex.

what stops a builder going too far?

Builders run with your own CLAUDE.md or AGENTS.md, settings and tools, plus two guards: they cannot push or merge, and they cannot read or write ~/.partyline. A loop also stops at its maximum number of rounds.

start a loop, then go do something else.

$ brew install partyline-sh/tap/partyline

loops are part of ptln. partyline never pushes or merges.