Label an issue.
Get a pull request.

romp runs your coding agent on labelled issues in an isolated worktree, re-runs your verify command, and opens the PR. No API keys, no cloud runner.

Watch it work

romp runs several issues at once. One watcher claims the issue, runs each agent in its own worktree, re‑runs verify, and hands back the pull request links.

romp watch
$ romp watch
21:47:39 watching label "romp" every 1m0s (width 3)
21:47:43 claimed #17
21:47:44 [sunny_naruto] repo BRO3886/romp, issue #17
21:47:46 claimed #18
21:47:47 [sunny_naruto] running codex
21:47:48 [keen_kakashi] repo BRO3886/romp, issue #18
21:47:51 claimed #19
21:47:52 [keen_kakashi] running claude
21:47:54 [lucky_hinata] repo BRO3886/romp, issue #19
21:47:56 [lucky_hinata] running codex
21:50:12 [sunny_naruto] agent took 2m25s
21:50:41 [sunny_naruto] verify ok (go test ./... -count=1)
21:50:44 [sunny_naruto] PR: https://github.com/BRO3886/romp/pull/482
21:50:44 #17: done

Why romp

Three decisions that separate a pull request you can merge from one you have to re‑read line by line.

A finish line, not a task

Every job carries a goal contract — GATE, DONE, PROVE IT, CONSTRAINTS. The agent has to meet a stated finish line instead of deciding for itself when it is finished.

Independent verification

romp re-runs your verify command itself after the agent exits. A job is done when your test suite says so — never because the agent claimed it.

No API keys, no cloud

romp drives the Claude Code or Codex CLI you are already logged into, and talks to GitHub through the gh CLI. No extra key, no runner, no new account.

Install

A single Go binary. Pick whichever route you already trust.

go install
go install github.com/BRO3886/romp/cmd/romp@latest
# apple silicon — swap arm64 for amd64 on intel
curl -LO https://github.com/BRO3886/romp/releases/latest/download/romp-darwin-arm64.tar.gz
tar xzf romp-darwin-arm64.tar.gz
mkdir -p ~/.local/bin && mv romp ~/.local/bin/romp
git clone https://github.com/BRO3886/romp.git
cd romp
make build
# binary lands at ./bin/romp

Recommended. Requires Go 1.25+ — builds from source into your Go bin directory.

Prebuilt from the latest GitHub release. No toolchain needed.

Requires Go 1.25+ and an authenticated gh CLI.

Know the risks

romp runs a real coding agent on your machine. Four things to understand first.

The label is privileged

Adding the trigger label authorizes your machine to execute whatever that issue says. Label only issues you would run yourself.

romp never merges

It opens the pull request and stops. You review and merge. Branch protection on the default branch is strongly recommended.

No secrets in the tree

The agent can read the whole worktree. Don't point romp at a repo with production credentials checked in.

Sandboxing is the harness's

romp adds no sandbox of its own. It inherits whatever Codex or Claude Code enforces — which is not a substitute for the rule above.

Read the safety notes

Common questions

What romp does, what it refuses to do, and how it behaves with a team on the same repo.

What is romp?

romp is an open-source CLI that watches a GitHub repo for labelled issues, runs your local coding agent (Claude Code or Codex) on each one in an isolated git worktree, independently re-runs your verify command, and opens a pull request.

Does romp need an API key or a cloud runner?

No. romp drives your already-logged-in agent CLI and uses gh for GitHub. No cloud runner, no extra API key, no new account.

How does romp know a change is actually done?

A job is done only when an explicit verify command — committed in romp.toml under [verify] — passes, re-run by romp itself after the agent exits. The agent's word is never trusted.

What happens when an issue is under-specified?

The agent self-rejects before touching code, writes the specific gap to .romp/blocked.md, and romp relabels the issue romp:blocked and posts the gap as a comment. A plausible PR solving the wrong problem costs more than no PR.

Can two teammates run romp on the same repo?

Yes. Claiming is atomic: romp inserts a job row with a unique (repo, issue) constraint and adds the claim label, so concurrent watchers skip issues each other have claimed.

Does romp merge pull requests?

No. romp opens the PR and stops. You review and merge. Branch protection on the default branch is strongly recommended.