GitHub pull requests, in your Discord server.
Relay GitHub pull requests and checks to Discord. Keep one public thread per request, add mapped mentions, and close the loop on CI recovery.
Free for up to 3 mapped people · Unlimited repos · No credit card
-
Reviewer requested 14:02:11 thread opened
#482 Cache invalidation for edge reads
-
Checks failed 14:09:44
build (node 20) · 2m 31s
-
Checks recovered 14:24:02
all 6 checks passed · 2m 07s
-
Stale review reminder 09:30:00
open 19h with one reviewer requested
-
Merged 10:47:19
#482 merged into main
What gets relayed
GitHub events, chosen per route.
Pick a preset or select events individually. Everything below can travel to #deploys through one route.
- pull_request.opened
- pull_request.review_requested
- pull_request.approved
- pull_request.changes_requested
- pull_request.merged
- pull_request.closed
- check_run.completed
- check_suite.completed
- workflow_run.completed
- issue_comment.created (top-level)
- push.commits (commit digests)
In the channel
One conversation in Discord.
Discord public threads suit servers where contributors watch a channel rather than a mailbox.
- Route
- rt_03
- Source
- northwind/api
- Destination
- Platform Guild #deploys
-
FR
ForgeRelay BOT 14:02
#482 Review requested — cache invalidation
Status: Awaiting review
northwind/api · 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
#482 Merged — cache invalidation
Status: Merged
northwind/api · 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 GitHub and Discord.
Four steps in the control panel. Nothing to deploy, no YAML to maintain.
-
01
Install the GitHub app
Install with the listed read permissions — including Contents: read when you want commit digests. ForgeRelay never pushes code.
-
02
Add the ForgeRelay bot to the server
Invite the bot, then give it access to the channels that should receive routes.
-
03
Create the route
northwind/api → Platform Guild #deploys, starting from the Pipeline monitoring preset. Add a separate Commits route later if you want filtered digests on main.
-
04
Map contributors to Discord members
Identity mapping links GitHub accounts to server members so mentions reach the right person.
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
Check status
Check failures and recovery in one thread.
Discord threads keep a noisy build out of the channel. Choose failures only, failures and recovery, or all changes, and include failed checks, duration, and SHA with a link back to GitHub.
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 |
|---|---|
| Pull requests: read | Read request titles, reviewers, state changes and diff totals. |
| Checks: read | Subscribe to check_run and check_suite so Live CI cards list each job, failure, duration and recovery. |
| Actions: read | Subscribe to workflow_run so PR and Live CI cards refresh when a GitHub Actions workflow finishes (per-job detail still comes from check_run). |
| Contents: read | Required to subscribe to Push events and resolve compare or commit links for digests — not to browse or mirror the repository. |
| Metadata: read | Resolve repository names and default branches. |
| Members: read | Suggest identity mappings between forge and chat accounts. |
| Webhook: Check suite / Check run | Receive per-job CI updates for Live CI cards and failure/recovery pings. |
| Webhook: Workflow run | Refresh CI status when an Actions workflow completes, even before every check_run has landed. |
| Webhook: Push | Receive push payloads; ForgeRelay ignores them unless a Commits route matches. |
| Webhook secret | Verify every incoming payload signature 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. |
-
Pull requests: read
Read request titles, reviewers, state changes and diff totals.
-
Checks: read
Subscribe to check_run and check_suite so Live CI cards list each job, failure, duration and recovery.
-
Actions: read
Subscribe to workflow_run so PR and Live CI cards refresh when a GitHub Actions workflow finishes (per-job detail still comes from check_run).
-
Contents: read
Required to subscribe to Push events and resolve compare or commit links for digests — not to browse or mirror the repository.
-
Metadata: read
Resolve repository names and default branches.
-
Members: read
Suggest identity mappings between forge and chat accounts.
-
Webhook: Check suite / Check run
Receive per-job CI updates for Live CI cards and failure/recovery pings.
-
Webhook: Workflow run
Refresh CI status when an Actions workflow completes, even before every check_run has landed.
-
Webhook: Push
Receive push payloads; ForgeRelay ignores them unless a Commits route matches.
-
Webhook secret
Verify every incoming payload signature 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
GitHub and Discord, specifically.
Put the review where the team already is.
Start with northwind/api → #deploys, then add routes as the team grows.