Relaymesh
Control Plane for Git Events

Route GitHub, GitLab, and Bitbucket events into one reliable stream.

Relaymesh unifies provider events, syncs namespaces, and delivers a single event stream to your workers so teams can ship automation without maintaining three separate stacks.

3

Providers

1

Webhook endpoints

All core events

Event coverage

Multi-tenant isolationZero secret sprawl
Live event pipeline
realtime

GitHub App

installation

GitLab OAuth

merge_request

Bitbucket

pullrequest

topic: pr.opened.readyworker queue
{  "provider": "github",  "repo": "acme/launchpad",  "actor": "octocat",  "event": "pull_request.opened"}

Enterprise foundation

Standardize governance, security, and onboarding across providers.

Built for platform teams that need auditability, tenant isolation, and consistent policy enforcement across GitHub, GitLab, and Bitbucket.

Policy-aware routing

Enforce tenant policies, allowed topics, and provider scopes.

Event normalization at scale

Normalize payloads into a consistent contract for every worker.

Driver-ready delivery

Publish to AMQP, NATS, Kafka, or HTTP with one config layer.

Before and after

Replace fragile webhook sprawl with a single, audited workflow.

Without Relaymesh

  • Separate webhook endpoints for each provider
  • Different payload formats for every event source
  • Custom retry and routing logic in every service

With Relaymesh

  • One endpoint and one routing model across providers
  • Normalized events consumed by the same worker SDK
  • Rule-driven publish flow with built-in retries

Architecture

Keep config centralized, run workers anywhere.

Relaymesh hosts provider configs and installation metadata. Workers pull normalized events from the API and deliver them to your infrastructure with the driver you choose.

Control plane

Provider instances, tenants, rules, namespaces, and onboarding flows in one place.

Data plane

Worker SDK receives events, runs match rules, and publishes to your drivers.

Worker SDK

Write the worker logic once, deploy anywhere.

Workers connect to the control plane, stream events, and publish to your drivers with minimal setup. Stay focused on core logic while Relaymesh handles auth, retries, and routing.

Provider-aware clients

SDKs ship with GitHub/GitLab/Bitbucket helpers.

Retry + backoff built in

Failures are queued and retried safely.

Typed event payloads

Normalized payloads align with your policies.

Driver ready

Publish to AMQP, NATS, Kafka, or HTTP.

SDK Examples

Drop-in snippets for your workers.

worker/main.gogo
package main
import (	"context"	"log"	"os"	"os/signal"	"syscall"
	worker "github.com/relaymesh/relaymesh/sdk/go/worker")
func main() {
	ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)	defer cancel()
	wk := worker.New(		worker.WithEndpoint("https://relaymesh.vercel.app/api/connect"),	)
	wk.HandleRule("85101e9f-3bcf-4ed0-b561-750c270ef6c3", func(ctx context.Context, evt *worker.Event) error {		if evt == nil {			return nil		}		log.Printf("topic=%s provider=%s type=%s installation=%s",			evt.Topic, evt.Provider, evt.Type, evt.Metadata["installation_id"])		if len(evt.Payload) > 0 {			log.Printf("payload bytes=%d", len(evt.Payload))		}		return nil	})
	if err := wk.Run(ctx); err != nil {		log.Fatalf("worker run failed: %v", err)	}}

What you get

Everything you need to operate webhook infrastructure at scale.

Unified webhook ingestion

One endpoint to ingest GitHub, GitLab, and Bitbucket events with consistent payloads.

Namespace sync

Automatically keep repos, projects, and workspaces in sync after onboarding.

Rules + orchestration

Express match rules once and publish to the right topics and drivers.

Multi-tenant isolation

Every request is scoped by tenant, ready for SaaS platforms.

Event observability

Track emitted topics, failures, and retries with a single log stream.

Provider flexibility

Support both OAuth apps and GitHub App flows with the same API surface.

Open source

Use the open source Relaymesh server as your foundation.

Run the same control plane that powers Relaymesh Cloud. The OSS stack ships with the CLI, worker SDK, and provider integrations so you can self-host or prototype quickly.

Self-hosted server

Deploy the Go control plane with Postgres, drivers, and OAuth.

CLI + provisioning

Create providers, sync namespaces, and generate onboarding links.

Worker SDK

Consume normalized events with provider-aware clients.

Pricing

Plans that scale with event volume and tenants.

Start free, then step into production-ready routing, longer retention, and priority support when you need it.

Free
Kickstart
Free plan to get started with core routing.
$0.00/month
Lifetime
  • 1 driver
  • 5 rules
  • 24-hour log retention
  • Community support
Early stage
Startup
Cloud plan for early teams shipping automations.
$49.00/month
Billed monthly
  • 100k events/month per tenant
  • 7-day log retention
  • Unlimited drivers
  • Unlimited rules
Popular
Scale
Production routing and higher throughput.
$199.00/month
Billed monthly
  • 1M events/month per tenant
  • All-time log access
  • Advanced analytics + filters
  • Unlimited drivers
  • Unlimited rules
  • Priority routing + retries
  • Slack + email support

Enterprise

Need enterprise support?

SSO/SAML, audit exports, private networking, and dedicated onboarding tailored to your rollout.

Usage-based add-ons

Extra events, retention, and tenant seats are billed as you scale.

What counts as an event?

Any webhook payload processed and routed through rules.

Security first

Per-tenant isolation, secure secrets, and configurable audit trails.

FAQ

Questions teams ask before switching.

Get quick clarity on onboarding, security, and how your workers consume events.

How does Relaymesh handle multi-tenant isolation?

Every API request is scoped by tenant ID. Provider instances, rules, namespaces, and logs never cross tenant boundaries.

Do I need to host three different webhook endpoints?

No. You configure a single endpoint per provider and route everything through the control plane.

What happens when a repo is added or removed?

Namespaces are synced automatically during onboarding and updated by provider webhooks.

How do workers receive events?

Workers use the SDK to fetch normalized events and publish them to the drivers you configure.

Can I bring my own drivers?

Yes. You can use built-in drivers or register your own for custom pipelines.

Is there a free plan?

Yes. The Starter plan includes a single provider instance with core webhook routing.

Ready to ship webhook automation?

Spin up a tenant, connect your providers, and start delivering events to your workers in minutes.