PAT quickstart for a self-hosted, CodeRabbit-style PR-review council: a control plane + 3 stock OpenAB Claude pods deliberate on a PR and post one verdict as your GitHub account. After deploy, copy examples/pr-review.yml into the target repo and set COUNCIL_PLANE / COUNCIL_KEY. Do not also configure the webhook trigger on the same repo. See docs/template.md.
PAT quickstart for a self-hosted, CodeRabbit-style PR-review council: a control plane + 3 stock OpenAB Claude pods deliberate on a PR and post one verdict as your GitHub account. After deploy, copy examples/pr-review.yml into the target repo and set COUNCIL_PLANE / COUNCIL_KEY. Do not also configure the webhook trigger on the same repo. See docs/template.md.
Use this template when you want the fastest install path: a copied GitHub Action triggers the council, and the chair posts the verdict with your fine-grained PAT.
It deploys a control plane plus 3 stock OpenAB Claude pods (1 chair + 2 reviewers). No per-bot setup is needed; every pod uses the same Claude Code OAuth token.
PUBLIC_DOMAIN: the control-plane domain, for example my-council.CLAUDE_CODE_OAUTH_TOKEN: from claude setup-token.GH_TOKEN: fine-grained PAT for the chair. Grant the target repo
Pull requests: Read and write and Contents: Read-only.Deploy this template and wait until control-plane, chair, rev1, and
rev2 are running.
Open the control-plane service variables and copy OABCP_API_KEY; it is
the generated PASSWORD value.
Copy examples/pr-review.yml from the source repo into the target repo at
.github/workflows/pr-review.yml:
https://github.com/canyugs/openab-control-plane/blob/main/examples/pr-review.yml
Set the target repo secrets:
gh secret set COUNCIL_PLANE --body "https://my-council.zeabur.app"
gh secret set COUNCIL_KEY --body "<OABCP_API_KEY>"
/review on the PR.workflow_dispatch and a PR
number.The chair posts one verdict comment as the PAT owner.
Council Review GitHub Action succeeds.control-plane and chair service logs.Use this PAT template or the GitHub App webhook template, not both on one repo, or one PR event can convene two councils.
For private repos, reviewer pods also need read access to fetch the PR diff.
Public repos work anonymously. Full guide:
https://github.com/canyugs/openab-control-plane/blob/main/docs/template.md