Multi-tenant chat, calling & push infrastructure

Real-time chat, voice & video
your app can ship in a day

Relay is a drop-in SDK for chat, audio/video calling and push notifications β€” backed by a managed multi-tenant service so you never run your own realtime infrastructure. Native SDKs for Web, iOS and Android, one dashboard to manage every tenant.

🌐 Web (React) 🍎 iOS (Swift) πŸ€– Android (Kotlin) 🧩 REST + WebSocket
What the service provides

Everything a chat & calling feature needs, run for you

One Relay project maps to one of your apps. Each tenant gets isolated data, its own API keys, and independent controls β€” nothing is ever shared across tenants.

πŸ’¬

1:1 & group chat

Conversations, typing indicators, read receipts, media messages β€” synced in real time over a managed WebSocket gateway.

πŸ“ž

Audio & video calling

WebRTC signaling plus TURN relay handled for you, with audio and video gated as independent modules.

πŸ””

Push notifications

APNs and FCM wake-ups for offline users β€” upload your credentials once from the admin panel, Relay handles delivery.

🏒

True multi-tenancy

Every tenant is isolated end to end β€” its own keys, users, usage counters and configuration. No cross-tenant query path exists.

πŸ”‘

Public / secret key model

A public key ships inside your client app; a secret key stays server-side to mint short-lived user tokens after you authenticate the user yourself.

πŸ›‘οΈ

App-identity allowlisting

Register your iOS bundle ID / Android package name so a public key only ever works from the app it was issued for.

πŸ“Š

Usage & module dashboards

See logins, messages, audio calls and video calls per day, and turn any module on or off per tenant instantly.

βš™οΈ

Self-serve configuration

CORS origins, TURN credentials, APNs/FCM β€” every section of your tenant's settings is edited and saved independently.

How it works

From request to running SDK

No infrastructure to provision. Get a project, drop in an SDK, and you're sending messages.

1

Request access

Tell us about your app below. A Relay admin reviews and creates your tenant, usually same day.

2

Get your keys

You receive a public key (safe in-app) and a secret key (server-side only) plus a login to your tenant dashboard.

3

Drop in the SDK

Install @relay/react, RelayCore, or relay-core, point it at your project, done.

4

Configure & launch

Set your CORS origins, TURN, APNs/FCM and app allowlist from your tenant dashboard, then ship.

Integration

A few lines, not a few weeks

Every SDK speaks the same concepts: a public key identifies your project, a short-lived user token (minted by your own backend) identifies the person using it.

Web Β· @relay/react
import { RelayProvider, ChatWindow } from '@relay/react';

const relayConfig = {
  baseUrl: 'https://relay.yourdomain.com',
  publicKey: 'pk_your_project_key',
  token: () => fetchTokenFromYourBackend(),
};

export function App() {
  return (
    <RelayProvider config={relayConfig}>
      <ChatWindow />
    </RelayProvider>
  );
}
  • βœ“ Your backend authenticates the user however it already does, then mints a short-lived Relay token β€” Relay never sees your auth secret.
  • βœ“ The public key is safe to embed client-side; it only identifies which tenant a connection belongs to.
  • βœ“ The same pattern applies on iOS (RelayCore / RelayUI / RelayCall) and Android (relay-core / relay-ui / relay-call).
  • βœ“ Full per-platform snippets β€” pre-filled with your own project's key β€” are generated for you inside your tenant dashboard's Integration tab once your account exists.
Plans

Start free, scale when you need to

Every plan includes chat, calling and push β€” the only thing that changes is scale and support.

Starter
Free / during review
  • 1 project
  • Chat, audio & video calling
  • Push notifications (APNs + FCM)
  • Shared TURN relay
  • Community support
Enterprise
Talk to us
  • Everything in Growth
  • Dedicated infrastructure
  • Custom data residency
  • SLA-backed support
Get started

Request your Relay account

Tell us about your app β€” an admin reviews every request and sets up your tenant with its own keys.

Try it now

Access the live demo

Verify your email and we'll show you exactly how to run the chat + calling demo yourself β€” no account, no waiting for approval.

FAQ

Common questions

Do I need to run my own server for this?

No. Relay runs the multi-tenant chat/call/push service for you. You only integrate the client SDK in your app and, if you mint your own user tokens, a couple of endpoints on your existing backend.

What's the difference between the public key and secret key?

The public key ships inside your client app and identifies your project on a connection β€” it's not sensitive. The secret key stays on your own server and is used only to mint short-lived user tokens; it's never sent to a client.

Can one public key be reused across multiple apps?

You can restrict it: register your iOS bundle ID / Android package name in your dashboard's "Authorized apps" setting, and Relay rejects requests from any app that isn't registered β€” so a key copied out of your app doesn't work elsewhere.

Do you support voice and video calling?

Yes β€” audio and video calling are separate, independently toggleable modules, with WebRTC signaling and TURN relay handled by the service.

How long does approval take?

Requests are reviewed by a Relay admin, typically within one business day. You'll be contacted at the email you provide once your tenant is created.