1
Install piloop
piloop CLI and the piloop skills for every coding agent on your PATH.
It is safe to run again. If you already have uv, you can install the CLI alone:2
Open your agent in your repo
Start Claude Code, Codex, pi, Gemini CLI or Cursor in the repo that you want to improve. This agent is the only one
that you talk to.The workers run on Claude Code, Codex or pi, so at least one of these must be installed. The agent that you talk
to can be any of the five.
3
Tell it what to improve
Describe the goal in plain words. Say “piloop”, so that the agent uses the piloop skills:
The setup
The agent follows thepiloop-setup skill. It runs every command itself and reports each result in one line.
- It checks your machine: git, uv, the coding agent CLIs and their logins. It fixes what it can. It asks you only to log in where a CLI needs a browser, and it asks for all the logins at the same time. It checks Herdr only if you want to see and steer every agent in a terminal pane.
- It reads your repo and interviews you. It says what it learned from the repo, so you can correct it. Then it asks only what the repo does not answer. It writes no file before you answer or skip the interview.
- It writes the campaign:
brief.mdfor the workers,piloop.tomlwith the metrics and limits, and the evaluate command. It runs the evaluate command once and shows you both files. It asks you once more before it continues. - It registers the project with
piloop init .. This measures the baseline. The agent tells you the baseline value. A value that surprises you usually means that the evaluate command is wrong. - It starts the daemon with
piloop serve --detach. It adds the first ideas with you, or asks a research agent for ideas. - It becomes the orchestrator. It asks if it should run the campaign in this session or in a background subagent, so that your session stays free.
What the interview asks
The questions fit your problem. A typical interview covers these topics:
The agent puts each limit in
piloop.toml, so that the daemon enforces it. A limit that is only in brief.md is not
enforced.
While the campaign runs
Workers try ideas in their own git worktrees and commit. piloop scores every commit and keeps the ones that beat the best result so far. Your agent waits on the inbox withpiloop inbox wait, so it uses no tokens while nothing
happens. When something needs it, it acts:
- It answers escalations from the other agents.
- It adds ideas, changes their priority and asks for research or watchdog sweeps.
- It records each decision that it takes for you in your inbox, with the reason and how to revert it.
- It leaves for you the decisions that cannot be undone and can wait.
Check in later
Ask your agent:piloop status.
To look yourself, run:
piloop watch shows the inbox, the agents, the ideas and the candidates. Press r on an inbox item to reply to a
decision. Your agent applies your reply first. See Watching a campaign.
Stop
The campaign ends by itself at the limits in the[stop] table of piloop.toml, for example after a number of runs.
To end it earlier, lower a limit in [stop] and run piloop init again, or ask your agent to do it.
To pause every campaign, stop the daemon:
piloop stop stops the daemon and every agent that it runs. The ideas of the stopped runs go back to the backlog.
The projects stay active, and the next piloop serve --detach continues them. Every candidate commit stays in the
repo under refs/piloop/, so git show and git cherry-pick work on any of them.
Try it on an example
To see a campaign before you use your own repo, ask your agent:Next steps
- Several campaigns: one agent runs a campaign in each of your repos.
- The orchestrator and the inbox: how your agent decides and what it records.
- Running for days: keep the daemon running with a service manager.