baggins800/reverb-rs
Rust implementation of the Laravel Reverb WebSocket server: a fast, low-memory drop-in alternative for real-time broadcasting. Speaks the Reverb protocol, so existing Laravel Echo clients and broadcasting configuration keep working unchanged.
Architecture fit
baggins800/reverb-rs is a third-party Rust reimplementation of Laravel Reverb, the first-party WebSocket server that speaks the Pusher protocol. It is intended as a drop-in substitute at the network boundary: Laravel broadcasting + Laravel Echo keep talking Pusher-protocol, only the server process changes.distroless/static container image (linux/amd64, linux/arm64, runs as nonroot) and a Composer package that shells out via php artisan reverb-rs:binary to fetch the binary, then reverb-rs:start to launch it.Integration feasibility
composer require baggins800/reverb-rs plus two artisan commands gets a running server; existing config/reverb.php-style app credentials and Echo client config likely carry over unchanged.reverb-rs:binary download step introduces an outbound network dependency at build/deploy time — must be mirrored or cached internally, not executed at container start.Technical risk
pusher: webhooks, connection recovery, and activity timeouts are all places a reimplementation typically diverges. No claim of parity is made in the notes.Key questions
laravel/reverb?config/reverb.php?nonroot)?/metrics, health endpoint — given there is no shell in the image for ad-hoc debugging?Stack fit
nonroot image aligns well with hardened Kubernetes/ECS baselines: no shell, minimal CVE surface, ~10 MB pull, trivial cold-start on both amd64 and arm64 (relevant for Graviton/Fargate cost profiles).Migration path
Compatibility
composer require).Sequencing
0.1.1), vendor or mirror the image into our registry, never pull latest from GHCR at deploy time.curl.Maintenance
Support
Scaling
nonroot binding means the listen port must be ≥1024; ensure service definitions and probes reflect the actual port.Failure modes
--platform pin.exec debugging, no ad-hoc curl. Health checks must use TCP or an in-binary endpoint; rely on structured logs shipped to the platform.Ramp-up
How can I help you explore Laravel packages today?