Realtime & pub/sub

Realtime that sleeps when nobody's watching.

A pub/sub broker, MQTT server, or websocket gateway that stays awake while clients are connected and sleeps the moment the last one disconnects, waking on the next connection. Scale-to-zero measured in connections, not requests. Idle overnight costs nothing; the first client back wakes it in place.

  • awake while subscribed
  • sleeps on disconnect
  • wakes on connect
  • any TCP protocol
A serverless pub/sub redis: a live subscriber keeps it awake, it sleeps when the subscriber disconnects, and the next connection wakes it

connection-scoped scale-to-zero

Idle means nobody's connected, not no recent bytes

Live subscriptions stay alive

A SUBSCRIBE, a LISTEN/NOTIFY, an MQTT session, a websocket: a quiet-but-live connection is never reaped, so the app stays awake and keeps delivering. --keep-connections is the mode for streaming.

--keep-connections

Sleeps on the last disconnect

When the final client drops, connections hit zero and the app sleeps to ~0 RAM. A chat backend or IoT broker that goes quiet overnight costs nothing until morning.

connection-scoped

Wakes on the next client

The first connection to the published port wakes the app in place and forwards, so the reconnecting client just works. A non-volume service wakes from a snapshot in about 125 ms.

wake-on-connect

Any protocol, no parsing

The forwarder splices raw TCP, so it never needs to understand redis, MQTT, or your own wire format. If it speaks TCP, it scales to zero on connection count.

protocol-agnostic

deploy it

A serverless message bus in one command

pub/sub

Redis pub/sub

Keep-connections holds it awake while subscribers are connected; it sleeps when they all leave.

$ crucible app create bus \
    --image redis:alpine -p 6379:6379 \
    --min-scale 0 --idle-timeout 3s \
    --keep-connections

subscribe

Hold it awake

A subscriber's connection keeps the app running; it never sleeps out from under a live stream.

$ redis-cli -h host subscribe room
# stays awake while this is open

wake

First client wakes it

After everyone disconnects it sleeps; the next connection wakes it in place.

$ redis-cli -h host ping
# PONG: woke on connect

serverless realtime, self-hosted

Awake for your users. Asleep the rest of the time.

Connection-scoped scale-to-zero for pub/sub, MQTT, and websocket backends, on hardware you own.

$ curl -fsSL https://github.com/gnana997/crucible/releases/latest/download/install.sh | sudo bash -s -- --with-deps --enable