# Centrifugo / AnyCable

Realtime you host. Centrifugo is Apache-2.0; AnyCable is MIT — Pusher and Ably without the connection meter.

**Replaces:** Pusher / Ably

**Tier:** Medium

## Problem

Pusher and Ably meter connections, messages, and channels. You wanted a WebSocket server you run. Centrifugo is Apache-2.0 (centrifugal/centrifugo). AnyCable is MIT (anycable/anycable) if you want that realtime server in front of an app. Soketi is AGPL-3.0 and Pusher-protocol compatible, but it was last pushed 3 Mar 2025 — not the maintained path. This is not every Ably presence SKU, Pusher Beams, or a video room — LiveKit stays on /replace/zoom.

## Stack

- [Centrifugo](https://centrifugal.dev) — Apache-2.0 scalable realtime messaging server
- [AnyCable](https://anycable.io) — MIT realtime server if you want that lineage

## Estimated SaaS cost saved

| You stop paying | Typical / year | Self-host instead |
|---|---:|---|
| Pusher / Ably (small team) | $1,200 | Centrifugo or AnyCable |

**About $1,200 / year** on a small team, before you count lock-in.

## Deploy on Railway

Placeholder: Centrifugo (or AnyCable) as a Railway service. Redis if you scale beyond one node. Bind HTTP/WebSocket to 0.0.0.0:$PORT. No one-click template in this repo yet — Start on Railway. Push notifications stay on /stacks/ntfy-push.

[Start on Railway](https://c17.io/go/railway/centrifugo-realtime?from=%2Fstacks%2Fcentrifugo-realtime.md)

[ntfy / Gotify if this is push notifications, not WebSockets](https://c17.io/stacks/ntfy-push)

## AGENT_PROMPT

```
Replace Pusher or Ably with Centrifugo (preferred) or AnyCable.

- One service, persist if the project requires it, Redis when you need more than one node. Point the client at the new WebSocket URL.
- Confirm one subscribe/publish. Do not claim every Beams or presence SKU. Write AGENT_PROMPT.md.
- Soketi is Pusher-protocol compatible but not the maintained path (last push 3 Mar 2025).
```

## FAQ

### Centrifugo or AnyCable?

Centrifugo if you want a language-agnostic realtime server. AnyCable if you want that Go server in front of an app. Pick one.

### Why not Soketi?

Soketi speaks the Pusher protocol (AGPL-3.0) but was last pushed 3 Mar 2025. This page uses actively maintained servers.

### Is this OneSignal?

No. OneSignal is push to phones — /replace/onesignal. This page is WebSockets.

Source: https://c17.io/stacks/centrifugo-realtime
