CONNECTIONS, NOT MESSAGES

Realtime, without the message meter.

Channels, presence and history over one socket, and every event delivered on to your own backend. Messages are unlimited on every plan, and you pay for concurrent connections — the one number you can actually size in advance.

$npm i @blackevin/client · no credit card required
CONSOLE PREVIEW · MESSAGES / SEC
14,991▲ 231
3,204
connections
128
channels
messages
WHY BLACKEVIN

Everything realtime, nothing you don’t need.

Messages are free
Unlimited messages on every plan, including the free one. No per-message price, no overage, no invoice that grows because your app got popular.
Events reach your backend
Fan out to a webhook, your own AMQP broker, a Lambda or an SNS topic. Signed, retried, with a circuit breaker per endpoint so one dead consumer cannot stall the rest.
Channels, presence and history
The primitives you expect, and tokens your own backend signs — scoped per channel, so a browser never holds a key that can do more than it should.
START IN ONE FILE

Install, connect, publish.

One package and one key. Channels exist on first use, presence and history come with them, and the token your own backend signs decides what each client is allowed to do.

Publishable key, or a token your server signs
Presence, history and webhooks included
Unlimited messages on every plan
// npm i @blackevin/client
import * as Blackevin from "@blackevin/client"

const realtime = new Blackevin.Realtime({ key: KEY })
const channel = realtime.channels.get("chat:lobby")

channel.subscribe((msg) => render(msg.data))
await channel.publish("hello", { text: "hi" })
$0
per million messages
messages, every plan
4
delivery integrations
1
number on your invoice

Your realtime layer is one endpoint away.

Create a project, grab a key, and publish your first message in minutes.

Open the console →