TL;DR
- Privacy-first teams should evaluate ntfy — it's lightweight, Apache-licensed, and runs entirely on your own infrastructure with zero Google involvement.
- Reducing vendor lock-in is easier with novu, which abstracts notification delivery across multiple channels and providers, letting you swap backends without rewriting application code.
- Full ownership of your messaging layer comes from self-hosting centrifugo or server, both designed for real-time delivery on infrastructure you control.
Why teams leave Firebase Cloud Messaging
Firebase Cloud Messaging is free at the message layer, but that apparent cost advantage obscures deeper expenses. Scaling with FCM means scaling within Google Cloud's billing model and infrastructure—and over time, the convenience tax adds up through platform lock-in, data residency constraints, and limited control over the delivery path.
The real pain points emerge when teams need autonomy. FCM ties you to Google's identity model, project structure, and data handling practices. If your compliance, privacy, or data-sovereignty requirements demand that notifications stay off third-party cloud infrastructure, FCM is not an option. Switching away later is costly: your application code, authentication flows, and client SDKs are built around FCM's API, and extracting yourself requires significant refactoring.
For teams that prioritize vendor independence, self-hostable open-source alternatives offer a different trade-off: you lose Google's massive managed scale and pre-built integrations, but you gain full control over where data lives, how it moves, and who can access it. The infrastructure cost is yours to manage, but so is the freedom.
Quick comparison
| Name | License | Self-Hosted | API / Extensibility | Stack / Language | Best For |
|---|---|---|---|---|---|
| novu | — | Yes | Multi-channel abstraction, webhook integrations | TypeScript | Teams needing unified notification infrastructure across email, SMS, push, and chat |
| ntfy | Apache-2.0 | Yes | Simple HTTP PUT/POST, topic-based | Go | Developers wanting lightweight, minimal push notifications without infrastructure overhead |
| server | — | Yes | WebSocket real-time, web UI included | Go | Small teams needing a self-contained real-time messaging server with a UI out of the box |
| centrifugo | Apache-2.0 | Yes | Language-agnostic, scalable pub/sub, presence | Go | High-scale real-time applications requiring horizontal scaling and multi-language client support |
| anycable | MIT | Yes | Two-way real-time, backend-agnostic | Go | Ruby/Rails teams or polyglot backends needing reliable WebSocket communication |
Top open-source alternatives to Firebase Cloud Messaging
novu
Novu is an open-source notification infrastructure platform that centralizes multi-channel delivery—in-app inbox, email, SMS, push, and Slack—behind a single API. It abstracts the complexity of managing different notification providers and lets you switch backends without touching application code.
Pros
- Multi-channel abstraction reduces vendor lock-in; swap providers without refactoring.
- Includes a built-in in-app inbox component, reducing client-side implementation work.
- TypeScript-native, with strong ecosystem support for JavaScript/Node.js teams.
Cons
- Larger surface area means more operational overhead if self-hosting.
- License not declared, which may complicate enterprise deployments.
ntfy
Ntfy is a minimal, HTTP-first push notification server: send a notification with a PUT or POST request to a topic, and any subscribed client receives it in real time. It's designed for simplicity—no complex configuration, no vendor APIs, just a straightforward pub/sub model.
Pros
- Extremely lightweight and fast to deploy; single Go binary.
- Apache-2.0 licensed, with clear legal standing.
- Dead-simple API reduces integration friction for small projects.
Cons
- Minimal feature set; no built-in user management, analytics, or multi-channel support.
- Best suited for small to medium notification volumes; horizontal scaling requires additional work.
server
Server is a real-time messaging server built in Go with an included web UI, designed for applications that need bidirectional WebSocket communication. It handles message routing, presence, and persistence out of the box.
Pros
- Complete package: messaging engine plus a functional web interface, reducing setup time.
- Written in Go, offering fast deployment and minimal resource overhead.
- Built-in presence and history features useful for chat and collaboration tools.
Cons
- License not declared, creating potential compliance friction for regulated teams.
- Less mature ecosystem and community compared to larger alternatives.
centrifugo
Centrifugo is a scalable real-time messaging server positioned as a self-hosted alternative to managed services like Pusher, PubNub, and Ably. It's language-agnostic, horizontally scalable, and designed for production deployments handling high concurrency.
Pros
- True horizontal scalability; designed for high-throughput, multi-instance deployments.
- Apache-2.0 licensed with mature production track record.
- Language-agnostic client libraries, making it suitable for polyglot teams.
Cons
- Steeper operational complexity than ntfy; requires Redis or other broker for clustering.
- Overkill for small notification volumes; adds infrastructure cost and management burden.
anycable
AnyCable is a real-time communication server built for backend flexibility, allowing you to power WebSocket connections independently of your main application server. It's particularly strong in Rails ecosystems but works with any backend.
Pros
- MIT licensed with clear legal standing.
- Decouples real-time communication from your main application, improving scalability and fault isolation.
- Strong Ruby/Rails integration, though language-agnostic at the protocol level.
Cons
- Smaller community and ecosystem compared to broader alternatives.
- Best value for teams already using Rails or similar frameworks; less obvious fit for pure Node.js or Go stacks.
How to choose
Start with your scale and simplicity needs. If you're replacing FCM for lightweight push notifications on infrastructure you control, ntfy is the fastest path: minimal setup, Apache-licensed, and battle-tested. For teams managing multiple notification channels (email, SMS, push, chat), novu abstracts that complexity and locks you in less than FCM does. If you need real-time bidirectional messaging at scale, centrifugo is the mature choice, though it demands more operational overhead. Rails teams should evaluate anycable for WebSocket infrastructure. For small, self-contained projects, server offers a complete real-time solution with minimal configuration. The common thread: all five let you own your data and infrastructure—the cost is operational responsibility, not vendor lock-in.









