
I built an open source WebSocket server in Go that's Pusher-compatible — self-host free forever, or use the managed cloud tier
Hey r/laravel,
I built Relay — an open source WebSocket server written in Go. Sharing it here since most of you are the target audience.
Why build this when Reverb exists?
Reverb is great and I want to be upfront about that. The real reason Relay exists is different: Reverb runs inside a Laravel PHP application — you need a Laravel app running to host it. Relay is a standalone Go binary with zero dependencies. No PHP, no Composer, no Laravel. You drop it on any server and run it.
That matters if you want to self-host WebSockets without owning a Laravel app, or if you want a server that starts in milliseconds and uses minimal resources regardless of what stack you're on.
What Relay actually does differently:
- Single Go binary — no runtime, no dependencies, drop it anywhere
- Performance — at 1,000 concurrent connections: ~18% CPU, ~38MB RAM vs Reverb's ~95% CPU, ~63MB RAM on equivalent hardware
- Built-in Channel Inspector — live view of active channels, subscriber counts, and event payloads with syntax highlighting. Nothing like it exists in Reverb.
- Open source exit ramp — Relay Cloud is the managed tier, but the binary is MIT licensed. Self-host free forever, or move between cloud and self-hosted with two env var changes.
What Relay does NOT uniquely offer:
Being honest here since I got called out on this elsewhere — Relay, like Reverb and every other Pusher-compatible server, works with any Pusher client. That's not unique. It's just how the Pusher protocol works. Reverb also supports multiple apps and Laravel Cloud now has a fully managed Reverb offering.
The stack:
Server: Go binary, MIT licensed — github.com/DarkNautica/Relay
Managed cloud (optional): relaycloud.dev — free hobby plan, $19/mo Startup
Laravel package: composer require darknautica/relay-cloud-laravel
Benchmark post: relaycloud.dev/blog/relay-vs-reverb-benchmark
Happy to answer questions and take criticism — clearly still learning what makes this actually unique.