You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* feat: add pi and omp agent vendors
Support Pi (pi) and Oh My Pi (omp) as fresh-run agent vendors, following
the grok-build pattern: config/CLI allowlists, spawn argv defaults,
model catalog probe, dashboard selectors, and docs. Native resume and
interactive takeover remain unsupported.
* fix: preserve opaque Pi model identifiers
Parse rows by the aligned pi model table structure instead of enforcing a lowercase identifier alphabet, and cover uppercase/colon values.
Generated-By: looper 0.11.8 (runner=fixer, agent=codex)
Copy file name to clipboardExpand all lines: README.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -35,7 +35,7 @@ The loops compose: planner hands off to reviewer↔fixer, reviewer↔fixer hands
35
35
- 🐙 **The forge is the source of truth.** Issues, PRs, labels, reviews, and assignees *are* the workflow — no external task tracker, no YAML pipeline. GitHub is fully supported; Forgejo supports planner, worker, native reviewer requests/reviews, and summary-comment compatibility flows.
36
36
- 🛰️ **Many repos, one daemon.** Register your projects once — Looper watches them together and runs loops across repos in parallel.
37
37
- 🌳 **Parallel-safe by design.** Every loop runs in its own git worktree, so agents work across issues and repos without stepping on each other.
38
-
- 🤖 **Bring your own agent.** Pluggable vendor layer (`opencode`, `claude-code`, `codex`, `cursor-cli`, `grok-build`) so you're not locked into one model or CLI.
38
+
- 🤖 **Bring your own agent.** Pluggable vendor layer (`opencode`, `claude-code`, `codex`, `cursor-cli`, `grok-build`, `pi`, `omp`) so you're not locked into one model or CLI.
39
39
- 🧰 **Local, inspectable, stoppable.** Daemon on your machine, thin CLI to drive it. `looper ps`, `looper logs`, `looper stop` — no hosted control plane.
40
40
41
41
## Quick start
@@ -120,7 +120,7 @@ looper takeover acme/repo#42
120
120
- starts a continuous **reviewer** loop and **fixer** loop on the PR, which ping-pong until the review comes back clean;
121
121
- with `--merge`, lets the reviewer enable GitHub auto-merge so the PR merges itself once it's approved and green.
122
122
123
-
It picks your coding agent automatically when exactly one of `claude` / `codex` / `grok` / `opencode` is on `PATH`, prompts when it's ambiguous, and accepts `--agent-vendor` / `--yes` for non-interactive (agent-driven) runs:
123
+
It picks your coding agent automatically when exactly one of `claude` / `codex` / `grok` / `opencode`/ `pi` / `omp`is on `PATH`, prompts when it's ambiguous, and accepts `--agent-vendor` / `--yes` for non-interactive (agent-driven) runs:
@@ -135,7 +135,7 @@ looper takeover stop acme/repo#42 # stop this takeover's reviewer + fixer loo
135
135
looper takeover stop --all
136
136
```
137
137
138
-
Requirements: `git`, an authenticated `gh`, and one supported agent CLI installed locally (the agent runs on your machine with your own credentials). Grok Build from xAI uses `agent.vendor = "grok-build"` and the `grok` executable; see [Grok Build configuration](docs/configuration.md#grok-build-xai) for daemon authentication and automation limits.
138
+
Requirements: `git`, an authenticated `gh`, and one supported agent CLI installed locally (the agent runs on your machine with your own credentials). Grok Build from xAI uses `agent.vendor = "grok-build"` and the `grok` executable; see [Grok Build configuration](docs/configuration.md#grok-build-xai). Pi uses `agent.vendor = "pi"` (`pi` binary); Oh My Pi uses `agent.vendor = "omp"` (`omp` binary)—see [Pi](docs/configuration.md#pi)and [Oh My Pi](docs/configuration.md#oh-my-pi-omp).
Copy file name to clipboardExpand all lines: docs/configuration.md
+30Lines changed: 30 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -369,6 +369,36 @@ For fresh unattended runs, Looper supplies `--always-approve` and `--sandbox off
369
369
370
370
Grok Build support is fresh-run only. Daemon native resume and interactive takeover through `looper resume` are unsupported. A retry uses a fresh checkpoint prompt, and Looper never uses Grok Build's ambient `--continue`.
371
371
372
+
## Pi
373
+
374
+
Use `pi` as the `agent.vendor` identifier. Looper invokes the [Pi](https://pi.dev) coding agent executable as `pi`:
375
+
376
+
```toml
377
+
[agent]
378
+
vendor = "pi"
379
+
```
380
+
381
+
Authenticate via Pi's own login/config (project-local `.pi` and vendor credentials). Prefer vendor authentication over storing secrets in Looper configuration.
382
+
383
+
For fresh unattended runs, Looper supplies `-p` with the generated task prompt and `--approve` (trusts project-local `.pi` for the run). Configured `agent.params.args` override these defaults: if `-p`/`--print` is already present, Looper does not append its prompt (operator owns print/prompt); if any of `-a`/`--approve`/`-na`/`--no-approve` is present, Looper does not add `--approve`. There is no `--cwd` flag—Looper sets the process working directory to the worktree.
384
+
385
+
Pi support is fresh-run only. Daemon native resume and interactive takeover through `looper resume` are unsupported. A retry uses a fresh checkpoint prompt.
386
+
387
+
## Oh My Pi (omp)
388
+
389
+
Use `omp` as the `agent.vendor` identifier (not `oh-my-pi`). Looper invokes the [Oh My Pi](https://omp.sh) executable as `omp`:
390
+
391
+
```toml
392
+
[agent]
393
+
vendor = "omp"
394
+
```
395
+
396
+
Authenticate via omp's own login/config. Prefer vendor authentication over storing secrets in Looper configuration.
397
+
398
+
For fresh unattended runs, Looper supplies `-p` with the generated task prompt, `--cwd <worktree>` when the workdir is non-empty, and `--auto-approve`. Configured arguments override defaults: if `-p`/`--print` is already present, Looper does not append its prompt; if `--cwd` is present, Looper does not add workdir; if `--auto-approve` or `--approval-mode` (including `--approval-mode=...`) is present, Looper does not add `--auto-approve`.
399
+
400
+
Oh My Pi support is fresh-run only. Daemon native resume and interactive takeover through `looper resume` are unsupported. A retry uses a fresh checkpoint prompt.
Copy file name to clipboardExpand all lines: docs/users-guide.md
+9-1Lines changed: 9 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -45,6 +45,14 @@ For xAI Grok Build, configure `agent.vendor = "grok-build"`; Looper runs the `gr
45
45
46
46
Configured Grok arguments take precedence: `--permission-mode` can prompt or fail unattended work, a non-`plain``--output-format` can break direct completion-marker parsing, and `-p`/`--single` replaces Looper's generated task prompt. Grok Build has no daemon native resume or interactive `looper resume` takeover. Retries start with a fresh checkpoint prompt; Looper never uses ambient `--continue`.
47
47
48
+
### Pi
49
+
50
+
For Pi ([pi.dev](https://pi.dev)), configure `agent.vendor = "pi"`; Looper runs the `pi` executable. Authenticate with Pi's own login/config (project-local `.pi`). Looper defaults to `-p <prompt> --approve` for unattended fresh runs. Configured `-p`/`--print` means you own the prompt; any of `-a`/`--approve`/`-na`/`--no-approve` skips the default approve flag. Pi has no daemon native resume or interactive `looper resume` takeover.
51
+
52
+
### Oh My Pi (omp)
53
+
54
+
For Oh My Pi ([omp.sh](https://omp.sh)), configure `agent.vendor = "omp"` (not `oh-my-pi`); Looper runs the `omp` executable. Authenticate with omp's own login/config. Looper defaults to `-p <prompt> --cwd <worktree> --auto-approve`. Configured print, cwd, or approval flags (`--auto-approve` / `--approval-mode`) override those defaults. Oh My Pi has no daemon native resume or interactive `looper resume` takeover.
55
+
48
56
## 1a. Local-only vs Routed projects
49
57
50
58
Looper supports two project modes:
@@ -562,7 +570,7 @@ looper takeover owner/repo#42 --merge # also auto-merge once approved + green
562
570
3. starts a continuous reviewer loop and fixer loop on the target PR (skip the fixer with `--no-fix`);
563
571
4. with `--merge`, sets `roles.reviewer.autoMerge.enabled` for the project so the reviewer enables GitHub auto-merge once the PR is approved and checks are green.
564
572
565
-
Agent selection: `takeover` reuses the vendor already in your config; otherwise it auto-detects an installed `claude` / `codex` / `grok` / `opencode` CLI, prompts when the choice is ambiguous, and accepts `--agent-vendor` plus `--yes` for non-interactive runs. Auto-merge still depends on the repository allowing it (and, by default, on branch protection with required checks); when GitHub refuses, the reviewer keeps reviewing and reports why instead.
573
+
Agent selection: `takeover` reuses the vendor already in your config; otherwise it auto-detects an installed `claude` / `codex` / `grok` / `opencode`/ `pi` / `omp`CLI, prompts when the choice is ambiguous, and accepts `--agent-vendor` plus `--yes` for non-interactive runs. Auto-merge still depends on the repository allowing it (and, by default, on branch protection with required checks); when GitHub refuses, the reviewer keeps reviewing and reports why instead.
0 commit comments