Realtime
Realtime is a fanout inside the Cloud daemon: POST …/realtime/publish hands an event (channel, name, JSON payload) to every subscriber connected to that channel right now over GET …/realtime/sse. That is the whole mechanism.
- Events exist only while the daemon runs and only for subscribers connected at publish time, plus a best-effort in-memory replay of the last 64 events per channel for clients reconnecting with
Last-Event-ID. - Delivery is at-most-once with no acknowledgement. Nothing is written to any Native directory; a restart drops every subscriber and every buffered event. It is not a Native change feed and not a WAL.
- The
systemchannel is emitted by Cloud routes after they act —project.woke,project.slept,storage.object.stored,storage.object.deleted,snapshot.created,project.restored— and cannot be published to.
Limits
Section titled “Limits”| Channel name | 1–64 chars: a-z 0-9 . _ - |
| Event name | 1–64 chars: a-z A-Z 0-9 . _ - : |
| Payload | 32 KiB of JSON |
| Channels per connection | 16 |
| Connections per credential | 32 |
| Idle stream | closed after CLOUDD_REALTIME_IDLE_SECS (300 s) without an event; keep-alive comments every 15 s do not count |
Both the owner’s session and a live project key may publish and subscribe. Revoking a key closes its open streams immediately. There is no WebSocket transport, no ordering across channels, and no multi-host fanout: one host, one daemon.