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.

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.