Auto Merge
Menu
Test Now Buy Now
Open Source · Self-Hosted · Zero Lock-in

Stop clicking
“Merge”

A merge queue and merge train for self-hosted GitLab CE — without GitLab Premium. Auto-merge, auto-rebase, pipeline management, and smart status labels.

$ docker run -d \
    -e GITLAB_SERVER_URL=https://gitlab.example.com \
    -e GITLAB_PROJECT=your/project \
    -e GITLAB_ACCESS_TOKEN=glpat-xxxx \
    neckarit/gitlab-auto-merge --mode=DryRun

Start in DryRun mode. See what it would do. Enable when ready.

The Problem

Your merge workflow is a bottleneck

Rebase & Wait

Every MR that falls behind main needs a manual rebase. Then you wait for CI again. Then someone else merges first. Repeat.

Wasted CI Resources

Obsolete pipelines keep running. Draft MRs trigger full CI. Runners are at capacity while stale jobs block the queue.

No Visibility

Which MR merges next? Who has conflicts? What’s blocking the queue? You check manually, across 20 open MRs.

Features

Everything your merge workflow needs

merge

Auto Merge

Approved MRs merge the moment their pipeline passes. No manual clicks. No delays.

rebase

Auto Rebase

Stale branches are rebased automatically. The merge queue keeps moving without developer intervention.

cancel

Pipeline Management

Cancels obsolete, duplicate, and superseded pipelines. Draft MR pipelines are killed immediately.

label

Smart Status Labels

Every MR gets a real-time label: Mergeable, Waiting for CI, Rebase Required, Conflict. See status at a glance.

🚌 queue

Queue Position

Each MR shows its merge queue position. Labels update automatically as MRs merge ahead.

retry

Smart Job Retry

Automatically retries jobs that fail from transient issues: compiler OOM, network timeouts, registry errors.

Priority Support

Label an MR “Important” to jump the queue. Lower-priority pipelines may be cancelled to free capacity.

Web Dashboard

Built-in React UI to monitor MRs, pipelines, runners, and the full audit trail of every action.

Webhook Integration

Near-instant reactions to MR and pipeline events via webhooks, plus 15-second polling as fallback.

Zero-Risk Onboarding

Six modes. Start safe.

Begin with DryRun to observe. Gradually enable features as you build confidence.

execution-modes
Mode Labels Rebase Cancel Merge
DryRun
OnlyLabels
RebaseOnly
NoMerge
NoPipelineCancellation
Run
Comparison

Merge queue comparison: How it stacks up

diff --competitors
Feature Auto Merge GitLab Premium Marge-bot Bors-NG
Auto merge
Auto rebase
Pipeline cancellation
Job retry
Queue position labels
Web dashboard N/A
Resource-aware scheduling
GitLab CE support Premium Archived
Price (50 devs) $49/mo $17,400/yr Free
Quick Start

Three environment variables.
That’s it.

Deploy as a single Docker container. Point it at your GitLab project. Observe in DryRun mode. Enable when you’re ready.

docker-compose.yml
services:
  auto-merge:
    image: neckarit/gitlab-auto-merge:latest
    command: --mode=DryRun
    ports:
      - "8711:8711"
    environment:
      GITLAB_SERVER_URL: https://gitlab.example.com
      GITLAB_PROJECT: your-group/your-project
      GITLAB_ACCESS_TOKEN: glpat-xxxxxxxxxxxxxxxxxxxx