Firebase worked, until it didn't.
No proper sharding. You hacked Firestore and RTDB together to handle throughput. The architecture got messy. The platform got flaky. A traffic spike shouldn't feel like a production incident.
Celeris is a Rust-powered WebSocket platform for teams that need high-throughput pub/sub without JSON overhead, vendor lock-in, or billing surprises. Launching with two regions, five SDKs, and a free tier.
We're not live yet. Get early access when we launch.
Single c8g.large EC2.
Includes k6 client overhead.
No proper sharding. You hacked Firestore and RTDB together to handle throughput. The architecture got messy. The platform got flaky. A traffic spike shouldn't feel like a production incident.
Three meters. Four meters. Usage fees on top of base fees. Add a premium feature and watch it multiply. By the time you understand the invoice, you're locked in. You just needed messages to move, not a pricing puzzle.
Average contract north of $80k/year. HTTP long-polling on the hot path. The pricing page requires a spreadsheet to understand. You just need messages to move fast.
Rolling your own Kafka + WebSocket layer sounds attractive until your team is on-call at 2am for infrastructure that isn't your core product. Managed is faster. The math is obvious.
We built Celeris because we lived this.
Not as a market opportunity. As a solution to a real problem we had. The architecture decisions aren't clever. They're deliberate.
Every architecture decision exists for a reason. Here are the three that matter most.
Binary-first. Kafka-backed. Built in Rust.
Native MessagePack and Protobuf support means no JSON serialization on the hot path. Messages flow through Kafka for per-channel ordering and multi-node fanout. In-memory delivery for local rooms. Cross-region replication only when you need it.
Three dimensions. Clearly stated. No surprises.
Messages, connection minutes, channel minutes. You know exactly what you're paying for before you deploy. Monthly billing for teams still evaluating. 10-year one-time access for teams that hate recurring SaaS subscriptions.
BYOD: Bring Your Own Destination.
Celeris delivers. You own the data. Connect write-only export connectors to Kafka, RabbitMQ, S3, or HTTP endpoints. Your database is never on the spike path. Consume from your own queue at your own pace.
These are production benchmarks run on a single c8g.large EC2 instance. Round-trip latency includes k6 test-client overhead.
96,114/s
Sustained 25 minutes · 44,000 KBps data transfer
32ms
avg 13.85ms · med 12ms
102MB
56% CPU · single node
99.95%
Reliability with automatic retries
You can test Celeris from the dashboard before writing a single line of code. When you're ready, integration takes minutes.
Sign up, create an app, and send test messages directly from the dashboard. No code required to verify it works.
No credit card. No code. Just working WebSockets.
Dashboard message tester
Send a test message. See it arrive. No code.
Create a signing key in the dashboard. Add ~4 lines to your backend to issue scoped tokens for clients.
Works with any backend: Node, Java, Python, Rust, Go.
const celeris = new Celeris(keys);
app.post("/token", (req) => {
const token = celeris.createToken({ ...options });
return { token };
});Point the SDK at your token endpoint. Connect to a channel. Send and receive messages.
Pure WebSocket underneath. Raw WebSocket also works.
const celeris = new CelerisClient({
appId,
tokenEndpoint: "/token",
});
const channel = celeris.connect({
channel: "my-channel",
onMessage: (msg) => console.log(msg.json()),
});
channel.send({ text: "hello" });Messages delivered, bytes transferred, connection health, all visible in the dashboard in real time. Add regions, increase limits, configure BYOD export when you need it.
US and EU live at launch, via AWS Global Accelerator.
Celeris has a simple, composable hierarchy. Once you understand it, everything else follows naturally.
Your organization. Contains all your apps and billing.
Separate environments per product or deployment. Apps are fully isolated with different signing keys and different metrics.
Each WebSocket connection is to a Channel. Channels have their own auth rules and message ordering.
Virtual sub-divisions within a channel, like rooms. The default segment is always there. No extra code needed for simple cases.
Celeris is the delivery layer. Your data belongs to you. Configure write-only export connectors to pipe message data directly into your own infrastructure.
Why this matters: When traffic spikes, your application database shouldn't be the one absorbing it. Celeris writes to your queue. Your system consumes at its own pace. No dropped messages. No cascading failures.
Deduplication via event_id. Post-acceptance delivery. Celeris confirms receipt before export. Your pipeline runs at your pace.
The Celeris SDK is a thin wrapper over a standard WebSocket connection. If you want to connect with raw WebSocket, no SDK or dependency needed, you can. We publish the protocol. We hide nothing.
The SDK is optional. Connect with any standard WebSocket client. The protocol is documented.
BYOD export means your messages are in your infrastructure before you even think about switching.
No proprietary message format. No SDK-specific state. Standard WebSocket frames, your data, your choice.
"If you want to leave, the door is open."
Your messages are in your BYOD destination. Your clients use standard WebSocket. Migrating away means updating a URL. We're confident you won't want to.
Celeris is a transport layer. What you build on top of it is up to you.
Built and benchmarked. No vaporware. These are the features available today.
Native MessagePack and Protobuf support. No JSON serialization on the hot path. Smaller payloads, faster transmission.
Per-channel message ordering via Kafka. In-memory fanout for local rooms, Kafka for multi-node, bridge replication for cross-region.
Issue scoped tokens from your backend using a signing key from the dashboard. Clients authenticate without touching your database.
Write-only connectors to Kafka, RabbitMQ, S3, and HTTP. At-least-once delivery with deduplication via event_id. Your DB is never on the spike path.
US and EU live at launch. AWS Global Accelerator for global routing. Regional isolation. Cross-region replication only when configured.
Send test messages, view history, inspect metrics, and verify delivery from the dashboard, before writing a single line of client code.
JavaScript, Java, Rust, Python, Flutter. Pure WebSocket underneath. Raw WebSocket also works if you prefer no abstraction.
Each WebSocket connection is to a Channel. Segments are virtual sub-divisions within a channel, like rooms. The default segment requires no extra code.
Three transparent dimensions: messages, connection minutes, channel minutes. No per-seat fees, no per-region surcharges, no surprises.