
Parallel Queues
Intelligent Batching
Flake Protection
Works Where You Do
Stacked PRs
Trusted by teams that ship hundreds of PRs every hour


6 hrs → 90 min
Time to merge
Reduced time to merge on day one in a 900-project Nx monorepo
The bottleneck moved from coding to merging
More PRs, more logical conflicts, and flaky tests now overwhelm the merge step, whether you merge by hand or run a single-lane queue.
Agentic engineering
Agents open more PRs and churn code more aggressively. That drives logical conflicts, where two PRs merge cleanly but still break main, and pushes you to need a merge queue earlier in your repo's growth.
Flakes evict good PRs
A flaky test kicks a healthy PR out of the queue. It goes to the back of the line, and every PR behind it re-runs CI.
Serial queues don't scale
GitHub's merge queue tests unrelated changes one at a time. Your frontend PR waits behind an API change it can't conflict with.
How Trunk keeps your queue moving
Parallel queues
Test unrelated changes at the same time
Your frontend PR should not wait behind a backend PR it cannot conflict with. Trunk tests independent changes in parallel from the impacted targets each PR touches. Bazel and Nx compute those automatically. On any other setup, provide them via the API.
Anti-flake protection
Flakes cannot poison your pipeline
Two layers keep flakes out of your way. In the queue, a PR that fails on a flake stays in line while downstream PRs test, and merges once a later one passes. Upstream, Trunk Flaky Tests quarantines known flakes so they never block the queue at all.
Intelligent batching
Test a batch of PRs in a single run
Trunk batches compatible PRs into a single run. If a batch fails, automatic bisection isolates the culprit and the healthy PRs keep moving. Teams cut CI costs by 60-90 percent.
Works Where You Do
Meet your engineers where they already work
A custom browser extension brings queue status and controls into the GitHub PR page, so no one learns a new tool. With Slack updates alongside, your team keeps shipping without missing a beat.

Stacked PRs
Queue an entire stack at once
Native GitHub Stacked PR support allows you to enqueue any PR in a stack. Trunk tests and merges the whole stack together, atomically. No proprietary stacking tool to adopt and no rebases to babysit.

Free · CI Health Report
Not sure if you need a merge queue?
Most teams can’t say how long their PRs actually take to land. Connect read-only and we’ll audit your real numbers: your P90 time to merge, how often main is red, the hours lost waiting in the queue, and the CI compute a parallel, batched queue would give back.
Main pass rate · where you stand
How often main is green is how often you can actually ship. Numbers above are illustrative.
What teams are saying
Trunk has saved us 330 hours by preventing merge issues over the last 35 days - that's 9.4 hours of engineering productivity saved per day...it's been great.
George Jacob
Senior Software Engineer @ FaireEngineers don't have to worry - when they're ready, they can just enqueue their PRs and have everything just work.
Roland Zeng
Builder Experience Engineer @ DescriptI can't remember the last time someone complained about queue length. It's been great, honestly.
Amir Toole
VP Platform Engineering @ CasewareI heard some comments... a week after we enabled it, and they basically told me, 'Man, you got that just in time. We had this big push to meet this milestone. A lot of people were trying to get their changes in.'
Juan Ortega
Technical Lead Manager @ GlydwaysIf you have a monorepo and you have hundreds of developers, these are the challenges you're going to face. It's complicated to do yourself. Trunk has basically solved it.
Matt Schurenko
Senior Cloud Developer @ AgencyAnalyticsHow Trunk fits your setup
Trunk is an orchestration layer that manages how your PRs merge into main. GitHub and GitLab keep running your CI and runners. Trunk reads impacted targets for parallel lanes and exposes queue signals and controls to the tools you already use.
Source control
RequiredYou install Trunk as an app. GitHub and GitLab manage your runners and pipelines.
GitHub
GitLabBuild system
Optionally, you can post your impacted targets to enable parallel lanes.
BazelMerge Queue
Developer experience
Slack
GitHubMetrics & dashboards
DatadogCSVAPI & automation
Safe to put in the merge path
Trunk is built to be secure, resilient, and observable: SOC 2 Type II, scoped to your existing GitHub permissions, steady when GitHub is not, and fully inspectable from the outside.
Scoped access
Trunk requests only the permissions its features need, and only for the tools you enable. It runs on PR metadata, commit SHAs, and check results, never a copy of your source.
SOC 2 Type II
Independently audited and penetration tested, with annual reviews. The report is available under NDA.
Enforced permissions
Your branch protection, rulesets, and required reviews stay in force. Trunk has read-only access to them and merges only what GitHub already allows.
Outage resilience
Webhook dedup, polling fallback, and a break-glass merge keep the queue moving when GitHub does not.
Full observability
Every merge, eviction, and override is logged and exportable through the API, webhooks, and Prometheus.
Private Preview: Trunk Merge Queue is available on-premise. Request access →
