The two sides

Sources produce events. Destinations hold the conversation.

A connection is set up once. Routes then combine one source with one destination as often as you need.

Sources

GitHub

northwind/api

Pull requests, check runs, optional commit digests

Installed as a GitHub app with read permissions (Checks and Actions for Live CI, Contents: read for Push). Terminology stays PR and checks throughout.

GitLab

platform/edge

Merge requests, pipelines, optional commit digests

Connected through OAuth, then watched through per-project hooks (pipeline and job events for Live CI). Terminology stays MR and pipeline throughout.

Destinations

Slack

#eng-reviews

Channel message plus thread

Posts as an app, threads every later update, mentions mapped workspace users.

Discord

#deploys

Channel message plus public thread

Bot posts in the channel and opens one public thread per request.

Setup model

Connect, route, refine.

Every pairing follows the same three moves, and the wording adapts to the forge you connected.

  • Connect a forge and a chat destination once per workspace
  • Create one route per repository-to-destination pairing
  • Choose events from a preset, then override features for that route
  • Map identities so mentions reach a person, not a handle

Supported events

  • opened
  • review_requested
  • approved
  • changes_requested
  • merged
  • closed
  • pipeline / checks failed
  • pipeline / checks recovered
  • top-level comments
  • push digests

Identity mappings and pipelines

Identity mapping is shared across destinations, so one person can be mapped to both a Slack user and a Discord member. Pipeline support is available on all four pairings, using each forge's own terminology.

FAQ

Before you connect anything.

Yes. Connections are independent, and a route names exactly one source repository and one destination channel.

No. A route is a repository-to-destination policy that can relay several event types, so opened, review requested, approved, merged and pipeline status can share one route. Commit digests use a separate Commits subject — add a route to relay them.

Identity mapping links a forge account to a Slack or Discord user. Unmapped people appear as their forge handle rather than a guessed mention.

The behaviour is the same — failures only, failures and recovery, or all changes — but GitLab reports pipelines and jobs while GitHub reports check suites and checks.

Required to subscribe to Push events and resolve compare or commit links for digests. ForgeRelay does not clone repositories or store your source tree, and never writes to code.

Pick a pairing and start relaying.

Free for up to 3 mapped people. Unlimited repos and notifications. No credit card.