Label an issue.
Get a pull request.

An opinionated runner for the coding agent you already have. romp works labelled issues in an isolated worktree, re-runs your verify commands itself, reviews the diff, and opens the PR. No API keys, no cloud runner.

Watch it work

This is romp watch, the dashboard you actually get. It is live and it is yours to drive — press tab, ↑↓ and enter, or just click.

romp watch
BRO3886/romp 2 active ● WATCHING
Active 2 History 9
▸ #17 ◈ REVIEWING CODEX → CLAUDE 18m32s
Synchronize relay device readiness and sender identities
reviewer working across 6 lenses (read-only)
  #21 ◆ AGENT CLAUDE 4m08s
Retry a failed review verification within budget
agent working

Every job shows the phase it is in and the harness acting right now — CODEX → CLAUDE reads as builder then reviewer. Press enter on a job to open its phase timeline.

Opinions, not options

Four calls romp makes on your behalf, and does not offer a switch to unmake. They are what separates 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, and an under-scoped issue is rejected before a single file is edited.

The agent's word is never evidence

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

Every diff is reviewed before you see it

A read-only review gate fans out across lenses chosen from the changed files — correctness, tests, security, quality, conventions. Blocking findings go back to the builder as constraints, and the whole job re-verifies. You read a diff that has already survived a critic.

Your machine, your login, your agent

romp drives the Claude Code, Codex, or OpenCode CLI you are already logged into, and talks to GitHub through the gh CLI. No extra key, no runner, no new account. And romp never merges — it opens the pull request and stops.

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 what Codex, Claude Code, or OpenCode 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, opinionated CLI that watches a GitHub repo for labelled issues, runs your local coding agent (Claude Code, Codex, or OpenCode) on each one in an isolated git worktree, re-runs your verify commands itself, reviews the resulting diff, and opens a pull request. It is opinionated in the sense that the goal contract, the independent verification, the review gate, and the refusal to merge are not configurable away.

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.