GitHub pull requests, threaded in Slack.
Relay GitHub pull requests and checks to Slack. Keep one thread per request, mention mapped reviewers, and nudge delayed reviews once.
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 #eng-reviews 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 Slack.
Slack threads keep the review out of the main channel while the summary message stays visible.
- Route
- rt_01
- Source
- northwind/api
- Destination
- Northwind HQ #eng-reviews
-
FR
ForgeRelay APP 14:02
#482 Review requested — cache invalidation
Status: Awaiting review
northwind/api · feat/edge-cache → main
- Opened by
- dana.k
- Reviewers
- alex.r
- CI
- 2 pending, 4 total
- Size
- +128 · −41 · 3 files
Opened 2 hours ago · Last activity 4 minutes ago · ForgeRelay
Open pull request
-
FR
ForgeRelay APP 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 APP 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 APP Next day, 09:30
Still waiting on review · @dana.k
-
FR
ForgeRelay APP 11:04
#482 Merged — cache invalidation
Status: Merged
northwind/api · feat/edge-cache → main
- Opened by
- dana.k
- Reviewers
- None
- CI
- 4 passing
- Size
- +128 · −41 · 3 files
Opened 2 hours ago · Last activity 4 minutes ago · ForgeRelay
Open pull request
Setup
Connect GitHub and Slack.
Four steps in the control panel. Nothing to deploy, no YAML to maintain.
-
01
Install the GitHub app
Grant the listed read permissions for the repositories you want to relay. ForgeRelay never asks for write access to code, and never pushes to your repositories.
-
02
Authorise the Slack workspace
Pick the workspace, then let ForgeRelay post as an app. Channels appear in the searchable destination picker.
-
03
Create the route
northwind/api → Northwind HQ #eng-reviews. Start from Review essentials for the PR lifecycle, or Full lifecycle when you also want CI. Optional commit digest routes can watch branches like main when you opt in.
-
04
Map the reviewers
Accept the suggested matches on the People page so review requests mention real Slack users.
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 runs, including recovery.
Relay failures only, failures and recovery, or all changes. Updates can post into the existing pull request thread or as a new message, and carry the failed check, duration, SHA, plus 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. |
| chat:write | Post the relayed message and its thread updates. |
| channels:read | List channels in the searchable destination picker. |
| users:read | Resolve mapped reviewers so mentions reach a real person. |
| chat:write.customize | Send as ForgeRelay with a consistent app identity. |
-
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.
-
chat:write
Post the relayed message and its thread updates.
-
channels:read
List channels in the searchable destination picker.
-
users:read
Resolve mapped reviewers so mentions reach a real person.
-
chat:write.customize
Send as ForgeRelay with a consistent app identity.
no code write access Full security overview
FAQ
GitHub and Slack, specifically.
Put the review where the team already is.
Start with northwind/api → #eng-reviews, then add routes as the team grows.