Skip to content

Introduction

What is Pylon

Pylon is a self-hostable, Pusher Channels–compatible realtime WebSocket server written in Rust. It implements the Pusher Channels v7 wire protocol and the Pusher HTTP API in full, which means your existing Pusher client and server SDKs work against it unchanged — you simply point them at your Pylon instance instead of the hosted service.

  • Client SDKs — pusher-js, Laravel Echo, and any other Channels v7 client connect to Pylon with a one-line host/port change.
  • Server SDKs — pusher-http-node, pusher-http-php, and compatible libraries authenticate and publish events through Pylon's REST API identically to how they talk to hosted Pusher.

No SDK modifications, no shim layers — just reconfigure the host and port.

Why Pylon

Self-host the realtime layer. Running your own WebSocket infrastructure eliminates per-message fees, keeps connection data entirely within your network, and removes a hard dependency on a third-party service.

Full protocol parity. Pylon supports every Channels v7 feature: public, private, presence, private-encrypted, and cache channels (including all cache-, private-cache-, presence-cache-, and private-encrypted-cache- variants); client events; user authentication (pusher:signin); webhooks (channel_occupied, channel_vacated, member_added, member_removed, client_event, cache_miss, subscription_count); and the complete Pusher HTTP REST API including batch publish and presence queries.

Per-core architecture. Pylon uses a shared-nothing, per-core event-loop model — one worker thread per CPU core, SO_REUSEPORT accept sharding, and an encode-once sharded fan-out path. Throughput scales near-linearly with CPU count.

Production-minded from the start. Native TLS (rustls, no OpenSSL), Redis-backed horizontal clustering, Prometheus metrics, /health and /ready probes, adaptive overload control (drop-head queues, CoDel, graduated shedding, memory budget), and clean graceful shutdown are all built in.

Pylon vs. hosted Pusher / soketi / Laravel Reverb

Feature Pylon soketi Laravel Reverb
Language Rust Node.js PHP
Protocol Pusher Channels v7 Pusher Channels v7 Pusher Channels v7
Public channels Yes Yes Yes
Private channels Yes Yes Yes
Presence channels Yes Yes Yes
Encrypted channels Yes Yes No
Cache channels Yes Partial No
Clustering Redis Redis / Nats / MQTT Redis / Pusher
Native TLS Yes (rustls) No (reverse proxy) No (reverse proxy)
Prometheus metrics Yes Yes No
Overload control Yes (adaptive) No No
License Apache 2.0 MIT MIT

Measured on the same hardware under the same load: see Benchmarks.

Trademark notice

"Pusher" is a trademark of its respective owner. Pylon is an independent, clean-room implementation and is not affiliated with or endorsed by Pusher.