Manage AI coding agents like human engineers — plan, implement, review, and ship every change as a real pull request.
Website · Documentation · Live demo · Discord · Built with ProPR
ProPR is a self-hosted platform that runs AI coding agents like Claude Code and Codex through the GitHub pull-request workflow. It monitors issues and PRs, runs your choice of agents in isolated Docker containers and Git worktrees on your own server, and drives the complete path from an issue to a reviewed pull request — with a Web UI available for configuration and monitoring and a CLI that doubles as the local control plane. You bring your existing AI subscriptions or API keys; ProPR never marks up tokens.
A real PR, planned, implemented, and reviewed by ProPR — every run posts its full record to the pull request.
ProPR builds itself: since May 2025, 2,100+ merged pull requests across its author's products have shipped through it — including 690+ merged pull requests in this repository.
ProPR is a set of stages you can adopt independently — use one or all:
- Plan — turn an issue or idea into a reviewable implementation plan (Planner Studio)
- Implement — add label to an issue and let an agent open a PR for it
- Review & fix — drive existing PRs with slash commands (
/review,/fix,/ultrafix, model routing) - Operate — monitor tasks, costs, logs, and agent capacity from the Web UI
- Multi-agent: Claude Code, OpenAI Codex, Google Antigravity, OpenCode, and Mistral Vibe — all first-class, selectable per issue
- Label-based model routing: pick the agent/model per issue with
llm-<agent>-<model>labels; multiple labels fan out into parallel jobs - Web UI dashboard: configure repositories, branches, labels, agents, and defaults; watch tasks, logs, commits, and cost in real time
- CLI control plane: scaffold, verify, start, and stop the local Docker stack — and drive plans, issues, tasks, and repos against the backend
- GitHub PR automation: slash commands, automatic state labels, and PR follow-ups
- Deterministic git workflow: isolated worktrees, model-specific branches, and a strict setup → implement → finalize pipeline
- Production-ready: Docker-isolated agent execution, Redis-backed job state, retries with backoff, and Agent Tank subscription capacity/rate-limit tracking
You need a Linux amd64 host with a maintained Docker Engine release, direct access to its Docker socket, Node.js 22 or 24, GitHub access, and a provider account for at least one coding agent. Reserve 2 vCPU, 4 GB RAM, and 20 GB of free disk for a single-task evaluation; 8 GB RAM or more is recommended for normal or concurrent use. The full Docker, platform, capacity, and network contract is in System Requirements.
Reuse a host login (claude auth login, agy login, …), create one through the agent image with propr agent login <agent>, or add the agent in the Web UI and log in directly to an isolated ProPR-managed credential directory.
npm install -g propr-cli
propr setup # guided one-pass: verify host, authorize agents, connect GitHub, startpropr setup is re-runnable and wraps the individual steps (propr init stack, propr check, propr start), which remain available for scripting.
During interactive setup, ProPR can also install its bundled operator Agent Skill into detected tools after showing the exact destinations. Manage it separately with propr skill install|status|remove; non-interactive setup does not write agent homes unless --install-skill <targets> is explicit.
Delegating setup to an AI coding agent? Use the copyable safe agent installation prompt so GitHub authorization, App scope, Connect/tunnel choices, provider logins, and existing stack data stay under human control.
Then open the Web UI at http://localhost:5173 and add a repository and an agent (propr repo add, propr agent add, or via the UI).
See the Local Setup tutorial for the full walkthrough, Server Setup for shared/production hosts, and Secure VPS Deployment for a hardened install.
No Node.js on the host? The stack can also be launched from the prebuilt
propr/launcherimage with a singledocker run. Docker Compose is only required for source development. See Setup.
| Agent | Type | Provider | Execution image |
|---|---|---|---|
| Claude Code | claude |
Anthropic | propr/agent |
| Codex | codex |
OpenAI | propr/agent |
| Antigravity | antigravity |
Google (multi-model) | propr/agent |
| OpenCode | opencode |
OpenCode (multi-provider) | propr/agent |
| Mistral Vibe | vibe |
Mistral | propr/agent |
You supply your own provider credentials. The full model catalog, per-agent credential setup, and label formats live in Agents & Models.
Add an llm-<agent>-<model> label to an issue to choose who processes it:
llm-claude-opus5— Claude Opus 5llm-codex-gpt54— Codex GPT-5.4llm-opencode-deepseek-v4-flash-free— OpenCode DeepSeek V4 Flash Freellm-antigravity-pro-high— Antigravity Gemini 3.1 Pro Highllm-antigravity-opus46-thinking— Antigravity Claude Opus 4.6 Thinking
Multiple model labels on one issue create one independent job (and branch) per model. Add a base-<branch> label to target a non-default branch.
Each labeled issue runs through a deterministic three-phase pipeline:
- Pre-agent setup — clone/update the repo, create an isolated worktree on a model-specific branch, and push it to GitHub.
- AI implementation — run the selected agent in a sandboxed container with implementation-only prompts and full issue + comment context.
- Post-agent finalization — commit changes, push, and open a pull request linked to the issue (
Closes #123), then manage state labels.
Branches follow <issueId>/<model>-<sanitized-title>-<YYYYMMDD-HHMM>-<random>, e.g. 349/claude-opus5-feat-implement-onboarding-20260529-1506-3he.
State labels are derived from the trigger label, so an issue labeled AI moves through AI-processing → AI-waiting → AI-done / AI-failed-*, while a propr-labeled issue uses the propr-* set. Configure trigger labels in the UI or via PRIMARY_PROCESSING_LABELS.
The docs site also ships inside the stack — run propr docs to open the bundled copy.
Bootstrap credentials and infrastructure paths are set once via a .env file (GitHub App ID/key, OAuth, session secret, storage paths). Everything operational — repositories, branches, labels, agents, supported models, defaults — is managed in the Web UI or via the CLI.
Start from .env.example and see GitHub authentication and Deployment for the full reference.
ProPR ships its prebuilt images on Docker Hub, orchestrated by the propr/launcher umbrella image:
| Image | Contents |
|---|---|
propr/launcher |
Orchestrator that spawns the stack |
propr/app |
Server — daemon / workers / API (role selected at launch) |
propr/ui |
Web UI static bundle |
propr/docs |
Docusaurus documentation site (optional) |
propr/agent |
Unified execution container for every supported coding agent |
End users must supply their own provider API credentials and accept those providers' terms. Bundled third-party attributions are preserved at /usr/share/licenses/propr/ in each image; offline copies are in NOTICE and THIRD_PARTY_LICENSES.md.
A source checkout is only needed to modify ProPR itself (requires Node.js, Redis, Git, and Docker).
npm ci # install workspace dependencies
npm run compose:up # build and run the full stack from source
npm test # run the test suiteCommon workspace scripts:
npm run daemon:dev # issue-detection daemon (debug logging)
npm run worker:dev # job worker (debug logging)
npm run dashboard:dev # dashboard API
npm run images:build # build all Docker images locally
npm run images:smoke # smoke-test locally built imagesSee the source setup tutorial for the development flow and the architecture docs for how the pieces fit together.
propr/
├── src/ # Daemon, workers, jobs, polling, GitHub handling
├── packages/
│ ├── core/ # Git/worktree management, agents, queue, config, DB migrations
│ ├── api/ # Dashboard REST API, webhooks, authentication
│ ├── cli/ # The `propr` command (published to npm as propr-cli)
│ └── shared/ # Shared model catalog and types
├── propr-ui/ # Web UI (React + Vite)
├── docs/ # Docusaurus documentation site
├── docker/ # Launcher and production app images
├── scripts/ # Agent entrypoints, build/compose/release helpers
└── docker-compose*.yml
ProPR is free and open source under the Apache License 2.0. The optional hosted relay, ProPR Connect, is a separate service — free for up to 3 users — and you can skip it entirely by bringing your own GitHub App.
Contributions are welcome. Please follow existing code patterns, keep tests passing, update docs alongside code, and use the structured logger for output. See CHANGELOG.md for release history.




