piloop --help for the list of commands, and piloop <command> --help for the options of one command.
Many commands take a REF: a project name, or a path inside the project’s repo. Without a REF, piloop status
and piloop history use the project of the current directory, else the only active project, else every project.
piloop inbox, piloop inbox wait and piloop watch cover every project.
Commands that write sign their writes with PILOOP_ACTOR (human by default). See
Environment variables.
Set up
piloop init
PATH (default .) a piloop project and registers it. It is safe to run again.
- Runs
git initand makes a baseline commit when necessary. - When there is no
piloop.toml, writespiloop.toml,brief.mdandevaluate.pyfrom the template. It keeps files that exist already. Whileevaluate.pyis the unchanged stub, it stops and says what to edit. - Measures
HEADas the baseline candidate and registers the project. When the project is registered already, it readspiloop.tomlagain.
--example creates a bundled example instead of the blank template.
piloop install-skills
Copies the skills of this CLI into the skill directory of every harness on yourPATH: ~/.claude/skills for
Claude Code (or $CLAUDE_CONFIG_DIR/skills), and ~/.agents/skills for Codex, pi, Gemini CLI and Cursor. It replaces
only piloop’s own skills. The installer and piloop upgrade run it.
piloop doctor
Checks the install, without changing anything. Each failure says how to fix it, often with the command to run. See Upgrading.piloop upgrade
--timeout (default 30) is
how long to wait for the daemon to come back. See Upgrading.
piloop migrate
Brings the database to the schema of this CLI and prints what changed. The daemon and every command that reads or writes projects do this silently when they start.piloop doctor and piloop sql do not.
The daemon
piloop serve
--detach starts it in the background, with its output in
$PILOOP_HOME/serve.log. Only one daemon runs for each PILOOP_HOME.
piloop stop
--timeout seconds (default 30) for it to exit. The daemon stops the
running agents, and their runs fail with daemon stopped. The projects stay active, and the next piloop serve
continues them. A campaign ends only at its [stop] limits.
piloop restart
--timeout (default 30) is how
long to wait for the daemon to come back.
piloop service-unit
Prints a systemd user unit (Linux) or a launchd agent (macOS) that keepspiloop serve running. It installs nothing.
See Running for days.
Ideas and candidates
piloop idea add
ready idea runs when a worker slot is free, in order of priority.
Research, the orchestrator and humans add ideas. A watchdog files a seed with
piloop idea seed instead, and a worker
files neither.
piloop idea seed
piloop idea develop
Optional:
--plan, --title, --family, --base, --priority (default: the seed’s) and --proposed.
piloop candidate import
reference candidate: a starting point that an idea
can pin with --base. The daemon measures it. It is never kept, never the head and never a bar. To import a candidate
of another project, fetch its commit into this repo first: git fetch <its repo> <sha>.
piloop candidate note
discard or interesting candidate in view as a starting point. Its verdict becomes interesting,
and its reason becomes note: <REASON>, followed by the earlier reason. Each --follow-up files a seed pinned to the
candidate. See Notes.
Status and the inbox
piloop status
[stop], the open runs, the queue, the running agents with their last line, the recent candidates, the anomalies,
the inbox, the latest decisions and the recent events. The watchdog and research agents get the same overview in
their brief.
piloop watch
piloop history
piloop inbox
--kind
keeps only items of the given kind: note, finding, decision or escalation. Repeat it to keep several kinds.
--all includes acknowledged items. See
The orchestrator and the inbox.
piloop inbox show
piloop inbox ack
--up-to marks every unacknowledged item up to that id instead. With --up-to, --project
keeps only the items of one project, and --kind keeps only the items of the given kinds. With IDS, --project and
--kind are refused.
Nothing waits on an acknowledgement. To revise a decision, write a decision comment on its target.
piloop inbox wait
--after is the cursor
that the last wait printed (default: now). --timeout (default 1800) is how long to wait before it returns with
nothing. Set the timeout of your shell tool above it.
Agents
piloop launch
ROLE: watchdog, research or a
role that you defined. The daemon starts it on its next tick, within the role’s
max_concurrent. --scout asks for a research sweep in scout mode.
Only the daemon starts workers, because a worker needs a run.
piloop attach
piloop Herdr session and attaches this terminal to it. This needs the Herdr runtime.
piloop prompt
TEXT into a running agent of any role. This needs the Herdr runtime. The worker ids are in piloop status.
The database
piloop sql
ATTACH and all but the read-only
PRAGMAs are denied. So are writes to piloop’s internal tables and to the full-text indexes. Everything else,
including DELETE, is allowed. The output stops at 500 rows. See the database schema.
piloop schema
Prints whatpiloop sql accepts, the conventions for writing to the database, and every table. Agents read it before
they write.