PullPact is discontinued. The hosted service is no longer running. New installations are not supported.

PullPact for GitHub

Site API

Automate GitHub pull request decisions with reaction voting.

PullPact helps maintainer-light repos keep PRs moving. Contributors vote with reactions, Checks show the result, and your repo policy decides what happens next.

No dashboard. No comment commands. Just .pullpact.yaml and the PR workflow people already know.

For repos where PRs get stuck

When one busy person becomes the bottleneck, PullPact gives the community a clear way to help.

Fewer PRs left hanging

Thresholds, cooldowns, and stale rules give every PR a path to an outcome.

Clear rules, no gatekeeper

Your repo policy says who votes, how many votes count, and what consensus means.

Decisions people can see

Vote totals, blockers, and outcomes stay visible in GitHub.

Automation at your pace

Start with reporting. Turn on merge or close when your project is ready.

What happens on a PR

PullPact adds a small decision loop without changing the PR flow.

Step 1

People vote with reactions

Approve, reject, or abstain on the PR description.

Step 2

PullPact posts the Check

Totals, blockers, timing, and status stay visible without progress-comment noise.

Step 3

Your policy makes the call

.pullpact.yaml decides whether to report, merge, queue, close, or wait, then records the result.

Choose how much it should do

Keep PullPact advisory, or let it act when votes and GitHub safeguards agree.

none keeps the PR open

Let contributors keep revising, discussing, or gathering fresh votes.

report shows the decision

Publish the voting result without merging or closing anything.

merge ships approved work

Use merge queue when available, or direct merge after required checks and rules pass.

close resolves stale or rejected work

Close only when your policy calls for it, with a final outcome to audit later.

Careful when it counts

PullPact moves work forward, but double-checks merge and close actions.

Respects required checks, branch protection, rulesets, and mergeability. Pauses on WIP or DONTMERGE labels. Turns invalid config into needs_human and action_required. Guards actions by PR, policy snapshot, and head SHA. Cancels queued work when commits, labels, votes, or readiness change. Uses merge queue first when available.

Try it in 4 steps

Start with one repository and one real PR.

  1. Install the GitHub App on a test repository.
  2. Add the starter .pullpact.yaml below.
  3. Open or update a pull request.
  4. Vote with 👍, 👎, or 👀.

Starter .pullpact.yaml

Three voters, 60% approval, a 24-hour merge cooldown, and stricter rules for governance changes.

.pullpact.yaml
version: 1

reactions:
  approve_reaction: "+1" # counts as approve
  reject_reaction: "-1" # counts as reject
  abstain_reaction: "eyes" # counts as abstain

pull_requests:
  minimum_voters: 3 # voters needed
  required_approval_ratio: 0.6 # approval needed
  eligible_voters: all # who may vote
  merge_cooldown_hours: 24 # wait after open or push
  cooldown_override_approve_votes: 6 # approvals to skip wait
  stale_timeout_hours: 168 # inactive hours before stale
  vote_settle_hours: 1 # wait after last vote

  protected_paths:
    - paths: [".pullpact.yaml"] # stricter rule for config changes
      minimum_voters: 5 # more voters needed
      required_approval_ratio: 0.75 # higher approval needed
      merge_cooldown_hours: 72 # longer wait after update
      vote_settle_hours: 3 # longer vote settle

safety:
  ignored_labels: ["status:draft"] # skip PullPact until label removed
  blocked_labels: ["DONTMERGE"] # pause automation, votes may still count

resolution:
  on_pass: merge # when voting passes
  on_fail: none # when voting fails
  on_stale: close # when PR goes stale

Bring reaction voting to your next pull request

Install the GitHub App, commit .pullpact.yaml, and give contributors a clear way to move PRs forward.

Like the project? Support the maintainer.