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
-
Reviewer requested 09:41:02 thread opened
!77 Harden edge cache invalidation
-
Pipeline failed 09:52:38
integration-tests, lint · 4m 12s
-
Pipeline recovered 10:06:11
all 9 jobs passed · 3m 48s
-
Approved 10:14:57
Priya Raman approved
-
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
-
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.
-
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.
-
02
Add the ForgeRelay bot to the server
Invite the bot and give it access to the deploy channels it should post in.
-
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.
-
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.
| Scope | Why it's needed |
|---|---|
| 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. |
-
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.
Put the review where the team already is.
Start with platform/edge → #deploys, then add routes as the team grows.