Getting Started
Install the mergequeue GitHub App via the manifest flow, point it at a repository, and queue your first pull request.
Prerequisites
- A running mergequeue instance (see Self-hosting for the docker-compose setup). For a first run, the service only needs to be reachable by GitHub for webhooks — use smee.io to tunnel webhooks to your laptop if you don't have a public URL yet.
- A GitHub organization (or user account) where you can install a GitHub App.
- A repository with branch protection enabled and at least one required status check defined. mergequeue uses those required checks to decide whether a batch is green.
1. Create the GitHub App via the manifest flow
mergequeue uses GitHub's App manifest flow so you don't have to fill in a form of permissions by hand. Open the setup endpoint on your instance:
https://your-mergequeue.example.com/setupThis page submits a pre-filled manifest to GitHub. GitHub shows you the exact permissions being requested, you confirm, and GitHub redirects back to mergequeue with a temporary code. mergequeue exchanges that code for the App's private key, App ID, and webhook secret, and persists them. You never copy a private key by hand.
The manifest requests only what the queue needs:
- Contents (read/write) — to create the staging branch and fast-forward base.
- Pull requests (read/write) — to read the queue and comment on ejected PRs.
- Checks / Commit statuses (read) — to read the required check results on the staging branch.
- Webhooks for
pull_request,check_run,status, andpushevents.
2. Install the App on your org
After the App is created, GitHub offers to install it. Choose the organization and either all repositories or a specific selection. mergequeue only acts on repositories you explicitly enable in the dashboard, so installing broadly is safe.
3. Point mergequeue at a repository
Open the dashboard, pick the installation, and select the repository you want to manage. mergequeue reads the repo's branch-protection configuration to discover the base branch and its required checks. Confirm the defaults (or override them — see Configuration) and enable the repo.
4. Queue a pull request
With the repo enabled, queueing is automatic: when a PR is approved and its own checks are green, it becomes eligible and joins the queue. You can also add a PR to the queue from the dashboard.
From here mergequeue takes over:
- It stages the next batch onto the latest base on a branch named
mq/staging/<base>. - Your CI runs against that staging branch.
- Green → base fast-forwards and the PRs are merged. Red → mergequeue bisects to the breaker, ejects it with a comment, and re-queues the rest.
Watch the whole thing live in the dashboard. To understand each transition, read How it works.
Introduction
mergequeue is a self-hostable, CI-agnostic merge queue that batches ready PRs, tests the combined result against the latest base, and lands them together — or bisects to eject the one that broke.
How it works
The mergequeue batch lifecycle — Staging, Testing, Merging, Merged, Bisecting, Ejected, and Superseded — plus bisect-to-eject and crash safety.
