Pull requests shouldn’t wait for someone to notice.
ForgeRelay turns GitHub and GitLab activity into focused Slack and Discord conversations — routed to the right channel, with the right reviewer, pipeline status, and quiet reminders. Reviews stay in threads. Direct-to-main stays visible.
Free for up to 3 mapped people · Unlimited repos · No credit card
-
Reviewer requested 09:41:02 thread opened
!77 Harden edge cache invalidation · @priya.raman
-
Pipeline failed 09:52:38 posted in thread
integration-tests, lint · 4m 12s · main @ 7c1ab90
-
Pipeline recovered 10:06:11 same thread
all 9 jobs passed · 3m 48s
-
Approved 10:14:57
Priya Raman approved · 6 files, +214 −63
-
Merged 10:21:04
!77 merged into main · thread resolved
One merge request, one thread: reviewer requested, pipeline failed, pipeline recovered, approved, merged.
One request, one living thread
Reviews, pipeline changes and the merge all update the same conversation instead of scattering across the channel.
Route each repository deliberately
A route is a repository-to-destination policy. Choose the events it relays and how messages behave, per route.
Mentions resolve to real teammates
Identity mapping links forge accounts to Slack and Discord users, so a review request reaches a person.
Product demo
From webhook to useful conversation.
Pick a forge and a destination. The forge event, the route policy that accepted it, and the conversation it produces.
2 · Route policy
- Route
- rt_04
- Destination
- Condition
- branch = main
- Features
- One thread per request · Mention mapped reviewers · (failures and recovery) · Stale review reminder
-
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
-
FR
ForgeRelay APP 14:02
!77 Review requested — cache invalidation
Status: Awaiting review
platform/edge · 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 merge 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
!77 Merged — cache invalidation
Status: Merged
platform/edge · 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 merge request
-
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
-
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
How it works
Four steps, one continuous relay.
Connections, routes, events, then the behaviour that keeps a review from going quiet.
-
01
Connect the forge and chat
Install the GitHub app or connect GitLab through OAuth and project hooks, then authorise a Slack workspace or a Discord server. Connections are listed with their scopes.
github gitlab slack discordTwo connections are enough to relay your first request.
-
02
Route repositories to destinations
Pick a repository and a channel with searchable pickers. One repository can relay to several channels; each pairing is its own route.
platform/edge rt_04 #deploysbranch = main · relays merge request activity and pipeline status
-
03
Choose events and per-route behaviour
Start from a preset — Review essentials, Full lifecycle with pipeline, Pipeline monitoring — then override workspace defaults for that route only.
- One thread per request On
- Mention mapped reviewers On
- Include diff summary Default
- Compact messages Off
-
04
Let threads, reminders and pipeline recovery keep work moving
Stale reviews get one quiet nudge. Pipeline failures and recoveries post into the existing thread. Every delivery is recorded and replayable.
- pipeline failed integration-tests, lint
- recovered 9 jobs · 3m 48s
- reminder waiting 19h
Capabilities
Everything a review needs, and nothing it doesn’t.
Routing
Readable routing policies
Search repositories, workspaces and channels instead of scrolling a native dropdown. A route names its source, its destination, and the events it relays.
- One route per repository-to-destination pairing
- Presets for review essentials, full lifecycle with CI, and pipeline monitoring
- Conditions for branch, label and author kept in a collapsed disclosure
Overrides
Workspace defaults, route-level exceptions
Set message behaviour once for the workspace, then override it where a channel needs something different. Each route shows whether a feature is inherited or explicit.
- Default / On / Off for every feature
- Workspace defaults live on their own page
- Overrides are counted, so drift is visible
- One thread per request route override On
- Mention mapped reviewers workspace: on Default
- Include diff summary route override Off
- Relay top-level comments workspace: off Default
- Stale review reminder after 4 hours On
People
Real reviewer mentions
Identity mapping connects a forge account to a Slack or Discord user. A review request becomes a mention of the person who has to act.
- Suggested matches with the reason for the match
- Manual mapping through a searchable chat identity picker
- Unmapped people fall back to their forge handle, never a wrong ping
- priya.raman Priya Raman mapped
- dana.k Dana Køhler mapped
- t.oyelaran — needs mapping
Status colours
Your PR and MR states, in your colours
Choose the colour used for Open, Draft, Awaiting review, Changes requested, Merged and Closed. One organisation palette keeps request cards consistent across Slack and Discord.
- Six colours configured from Preferences
- Live preview before you save
- Included on every plan
Organisation status palette
One set of colours across every destination.
- Open #286653
- Draft #99AAB5
- Awaiting review #F2C744
- Changes requested #E03E3E
- Merged #9B59B6
- Closed #6B7280
Pick colours in Preferences and preview them before saving.
Threads
One thread through the whole lifecycle
Opened, review requested, pipeline failed, recovered, approved, merged: all of it updates a single conversation, so nobody scrolls to reconstruct the story.
-
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
Reminders
Quiet stale-review reminders
When a request has waited too long, ForgeRelay posts one reminder into the existing thread and mentions the mapped reviewer. No ping storms, no repeated nagging.
- Elapsed delay set per workspace (four hours by default)
- Reminders stop as soon as a review lands
- Each route can enable or disable the reminder
Still waiting on review · #482
Open for 19 hours with one reviewer requested.
@dana.k
Pipeline status
MR pipeline status, with recovery
Relay failures only, failures and recovery, or all changes. Updates carry the failed jobs, duration, SHA, and a link to the pipeline.
- Post into the existing merge request thread or as a new message
- GitLab uses pipeline language; GitHub uses check language
- Recovery closes the loop instead of leaving a red message behind
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
Reliability
Durable delivery logs and replay
Every relayed event is recorded with its route, destination, status and payload. If a destination rejects a message, replay it once the channel is healthy again.
| Event | Route | Status |
|---|---|---|
| evt_8836 | rt_04 | ok |
| evt_8829 | rt_04 | ok |
| evt_8817 | rt_04 | ok |
| evt_8791 | rt_02 | failed |
Integrations
Two forges, two conversations, four pairings.
ForgeRelay speaks pull request and merge request naturally. Choose the source, choose where the conversation should live.
Pull request activity and check runs, including recovery. Threaded in Slack with mapped mentions.
Pull request activity and check runs, including recovery. Threaded in Discord with mapped mentions.
Merge request activity and pipeline status, including recovery. Threaded in Slack with mapped mentions.
Merge request activity and pipeline status, including recovery. Threaded in Discord with mapped mentions.
Who it's for
Built for the team you have.
Priced on mapped people, not control-panel logins. Start with the smallest useful route and grow from there.
Small engineering teams
Sophisticated review workflow without forcing every engineer to log in. Two repositories, one channel, done in an afternoon.
Platform / DevOps teams
Pipeline failures and recoveries land beside the merge request they belong to — and optional main-branch digests cover direct pushes without leaving chat.
Agencies and consultancies
Route each client repository to its own channel, with separate message behaviour per engagement.
Open-source maintainers
Relay first-time contributions and stale reviews into a Discord server without opening the whole firehose.
Direct-to-main visibility
Ship to main without a pull request and still get a filtered digest in Slack or Discord — same noise discipline, different subject.
Pricing
Free for small teams. Team scales by seats.
Unlimited repos and notifications. Plans meter mapped people — forge identities linked for mentions.
Free
£0
Up to 3 mapped people
Team
From £19/mo
More seats — same product
Self-hosted
Talk to us
Future option
Security
Product principles, stated plainly.
ForgeRelay handles webhook payloads and chat credentials. These are the principles the design follows.
- Signed webhook verification before a payload is accepted
- Least-privilege app permissions on both forge and chat
- No write access to your code — and no clone or stored source tree
- Secrets encrypted at rest
- Delivery history with replay controls
Design principles, not audited claims
FAQ
Questions worth answering before you connect anything.
Put the review where the team already is.
Free for up to 3 mapped people. Unlimited repos and notifications. No credit card.