GitLab → Discord

GitLab merge requests, in your Discord server.

Relay GitLab merge requests and pipeline status to Discord, keeping the full review and CI story in one public thread.

Free for up to 3 mapped people · Unlimited repos · No credit card

platform/edge !77 rt_04 branch = main #deploys
  1. Reviewer requested 09:41:02 thread opened

    !77 Harden edge cache invalidation

  2. Pipeline failed 09:52:38

    integration-tests, lint · 4m 12s

  3. Pipeline recovered 10:06:11

    all 9 jobs passed · 3m 48s

  4. Approved 10:14:57

    Priya Raman approved

  5. Merged 10:21:04

    !77 merged into main

What gets relayed

GitLab events, chosen per route.

Pick a preset or select events individually. Everything below can travel to #deploys through one route.

  • merge_request.opened
  • merge_request.review_requested
  • merge_request.approved
  • merge_request.changes_requested
  • merge_request.merged
  • merge_request.closed
  • pipeline.failed
  • pipeline.recovered
  • build (job) events
  • note.created (top-level)
  • push.commits (commit digests)

In the channel

One conversation in Discord.

One Discord thread per merge request keeps deploy chatter attached to the change that caused it.

Route
rt_04
Source
platform/edge
Destination
Platform Guild #deploys
Platform Guild · #deploys
thread · 6 messages
  • FR

    ForgeRelay BOT 14:02

    !77 Review requested — cache invalidation

    Status: Awaiting review

    platform/edge · feat/edge-cache main

    Opened 2 hours ago · Last activity 4 minutes ago

    Opened by
    dana.k
    Reviewers
    alex.r
    CI
    2 pending, 4 total
    Size
    +128 · −41 · 3 files

    ForgeRelay

  • FR

    ForgeRelay BOT 14:09

    Open pipeline #58217

    2 of 9 jobs failed.

    Passed

    build, typecheck, security, e2e, deploy-preview, docs, coverage

    Failed

    integration-tests, lint

    Duration
    2m
    SHA
    83c1a8e

    ForgeRelay

  • DK

    Dana Køhler 14:16

    Missing lockfile bump. Pushing now.

  • FR

    ForgeRelay BOT 14:24

    Open pipeline #58217

    Checks are green again.

    Passed

    integration-tests, lint, build, typecheck, security, e2e, deploy-preview, docs +1 more

    Duration
    2m
    SHA
    83c1a8e

    ForgeRelay

  • FR

    ForgeRelay BOT Next day, 09:30

    Still waiting on review · @dana.k

  • FR

    ForgeRelay BOT 11:04

    !77 Merged — cache invalidation

    Status: Merged

    platform/edge · feat/edge-cache main

    Opened 2 hours ago · Last activity 4 minutes ago

    Opened by
    dana.k
    Reviewers
    None
    CI
    4 passing
    Size
    +128 · −41 · 3 files

    ForgeRelay

Setup

Connect GitLab and Discord.

Four steps in the control panel. Nothing to deploy, no YAML to maintain.

  1. 01

    Connect GitLab with OAuth

    Read scopes only. ForgeRelay reads merge request, pipeline and job metadata — and push metadata when you opt into digests — and never pushes code. Project hooks include pipeline and job events for Live CI.

  2. 02

    Add the ForgeRelay bot to the server

    Invite the bot and give it access to the deploy channels it should post in.

  3. 03

    Create the route

    platform/edge → Platform Guild #deploys with branch = main and the Pipeline monitoring preset. Commit digest routes are a separate subject — add a Commits route to relay them.

  4. 04

    Choose pipeline behaviour

    Failures and recovery, posted into the existing merge request thread, with failed jobs and duration included.

Message customisation

Route behaviour and a shared status palette.

Set message behaviour per route, then choose one organisation-wide PR/MR status palette for Slack and Discord.

  • Custom PR/MR status colours — one organisation palette across Slack and Discord
  • One thread per request — keep every update in one place
  • Mention mapped reviewers — resolve forge accounts to chat users
  • Include diff summary — files changed and line counts
  • Include link to the forge — one click back to the request
  • Compact messages — a single line for low-signal channels
  • Relay top-level comments — discussion without review noise
  • Stale review reminder — one quiet nudge, then silence
  • MR pipeline status — failures, recovery, or all changes

MR pipeline status

Deploy channels stay honest.

A red pipeline is followed by its recovery in the same thread, so #deploys never keeps a stale failure at the top. Include failed jobs, duration, SHA, and the pipeline link.

Open pipeline #58217

2 of 9 jobs failed.

Passed

build, typecheck, security, e2e, deploy-preview, docs, coverage

Failed

integration-tests, lint

Duration
2m
SHA
83c1a8e

ForgeRelay

Open pipeline #58217

Checks are green again.

Passed

integration-tests, lint, build, typecheck, security, e2e, deploy-preview, docs +1 more

Duration
2m
SHA
83c1a8e

ForgeRelay

Permissions

What ForgeRelay asks for, and why.

Least-privilege by design. ForgeRelay never needs to push code or manage members.

  • read_api

    Read merge request state, reviewers, diff totals and pipeline metadata.

  • read_repository

    Resolve branch names and commit SHAs in messages, and support commit digests.

  • Pipeline events

    Relay pipeline failure, recovery and suite-level snapshots for Live CI.

  • Job events

    Receive each Job Hook (build) so Live CI cards keep every parallel job — pipeline snapshots alone are not enough.

  • Webhook: push events

    Receive push hooks; digests only post when a Commits route matches.

  • Project members: read

    Suggest identity mappings for reviewer mentions.

  • Webhook secret token

    Verify every incoming payload before processing.

  • Send Messages

    Post the relayed message into the selected channel.

  • Create Public Threads

    Open one thread per pull or merge request.

  • Send Messages in Threads

    Keep pipeline and review updates in the same thread.

  • Read Message History

    Attach updates to the correct existing thread.

no code write access Full security overview

FAQ

GitLab and Discord, specifically.

Yes. Choose the Pipeline monitoring preset and leave review events unselected.

No. While MR pipeline status posts into the existing thread, the channel keeps a single summary message per merge request.

Yes. Add a route from platform/edge to another channel that relays merges only.

The route sets branch = main, so merge requests targeting other branches are skipped.

Enable commit digests and add a Commits route for main. Reviews stay in threads. Direct-to-main stays visible.

Put the review where the team already is.

Start with platform/edge → #deploys, then add routes as the team grows.