Configuration
Configure mergequeue per repository — base branch, batch size, required checks, merge method, and the staging branch prefix.
Where configuration lives
Per-repository settings are managed in the dashboard and stored in
Postgres alongside the queue state. Most settings are discovered automatically
from your GitHub branch-protection configuration; you only override them when you
want behavior different from the repo defaults. Instance-wide settings (database,
GitHub App credentials, listen address) are MQ_* environment variables covered
in Self-hosting.
Base branch
The branch the queue lands onto — usually main. mergequeue reads it from branch
protection, but you can pin it explicitly per repo. Every batch is staged on top
of the current tip of this branch and fast-forwarded onto it when green.
Batch size
The maximum number of ready PRs mergequeue stages together in one batch.
- Larger batches amortize CI over more PRs and raise throughput when the queue is busy and changes rarely conflict.
- Smaller batches shorten the bisect search on failure and reduce wasted CI when conflicts are common.
A batch size of 1 degrades gracefully to strictly serial, one-PR-at-a-time
landing (no bisecting needed). Tune upward as you trust your suite.
Required checks
The set of check-runs / commit statuses that must be green on the staging branch for a batch to land. By default mergequeue uses exactly the required checks from your branch protection, so the queue's definition of "green" matches the one you already enforce on PRs. You can narrow or extend this set per repo if your staging checks differ from your PR checks.
mergequeue waits for every configured required check to conclude before deciding. Optional or informational checks are ignored.
Merge method
How the batch is integrated into base when green. Because mergequeue fast-forwards the staging branch onto base, the staging branch is built to reflect your chosen method:
- Merge — preserve each PR's commits with merge commits.
- Squash — collapse each PR into a single commit.
- Rebase — replay each PR's commits linearly onto base.
Pick the method that matches your repository's history conventions.
Staging branch prefix
The namespace for throwaway staging branches. The default is mq/staging/, so a
batch targeting main lives on mq/staging/main. Change the prefix if it
collides with an existing branch convention or if you want to exclude it from
other automation with a glob. Staging branches are created and deleted by
mergequeue and should not be edited by hand.
A note on branch protection
For mergequeue to land batches, the GitHub App must be allowed to update the base branch. If you enforce "require status checks before merging" or restrict who can push to base, add the mergequeue App to the allowed actors, or let it merge through its required-check gate. mergequeue never bypasses your checks — it runs them on the combined result and only lands on green.
How it works
The mergequeue batch lifecycle — Staging, Testing, Merging, Merged, Bisecting, Ejected, and Superseded — plus bisect-to-eject and crash safety.
CI integration
mergequeue works with any CI — it reads the required check-runs and commit statuses on the staging branch. Examples for Woodpecker and GitHub Actions.
