Pusher-compatible WebSocket channels, presence, and pub/sub. Go-powered. Scales to millions. Swap your config — keep your code.
const pusher = new Pusher('your-app-key', {
wsHost: 'relay.yourapp.com',
wsPort: 6001,
forceTLS: false,
cluster: 'mt1',
});
pusher.subscribe('orders')
.bind('new-order', (data) => {
console.log(data);
});
Built from the ground up as a modern Pusher alternative.
Works with pusher-js, Laravel Echo, and any Pusher client. Change your host config — done.
Built in Go for massive concurrency. Handle millions of WebSocket connections on a single node.
HMAC-authenticated channels. Track who's online with real-time member lists.
Trigger events from any backend. Pusher-compatible endpoints for channels, events, and presence.
Live event stream, channel browser, and connection inspector — built into your dashboard.
Get notified when channels activate, users join or leave. HMAC-signed payloads, retried automatically.
Redis pub/sub syncs messages across instances. Add nodes as you grow.
Track connections, messages, and API requests. Usage graphs and plan limits at a glance.
Organizations with roles, invite by email, and per-app API tokens for your servers.
Same protocol. Same client libraries. Same channel types. Just point your existing Pusher configuration to your Relay server and everything works. No code changes required.
wsHost: 'ws-mt1.pusher.com'
wsHost: 'relay.yourapp.com'
Start free. Scale as you grow.