Reference
Limits and defaults
Every size limit, name rule, default window and timeout in one place.
Names#
| Thing | Rule |
|---|---|
| Domain slug | 3–40 characters: lowercase letters, digits and -, not starting or ending with -. |
| Topic | 1–8 levels of a-z A-Z 0-9 _ -, joined by :; at most 128 characters. |
| Main Topic | One level: a-z A-Z 0-9 _ -, at most 128 characters. |
| Event type | 1–64 characters of a-z A-Z 0-9 _ . : -. |
| State key | 1–128 characters of a-z A-Z 0-9 _ . : -. |
| App Key | 80 lowercase hex characters: a 16-character selector and a 64-character secret. |
Sizes#
| Limit | Value |
|---|---|
Event data, as JSON | 64 KiB (65 536 bytes); null not allowed |
State value, as JSON | 64 KiB (65 536 bytes); null not allowed |
| Ops per WebSocket message | 100 |
| WebSocket frame from a client | 100 × (64 KiB + 1 KiB); larger closes with 1009 |
REST listing limit | default 100, maximum 1000 (larger is capped) |
Tokens#
| Setting | Value |
|---|---|
| Token TTL of an App Key | 1–86 400 seconds; default 30 |
| Token type | Bearer (JWT), always expiring |
| Checked | every REST request; WebSocket handshake only |
Retention defaults#
Applied to a Main Topic's family when it has no config of its own.
| Broker | Count | Age |
|---|---|---|
| Event Broker | newest 1000 events | 1 hour |
| State Broker | unbounded | never expire |
Expired data is removed by a sweep that runs about once a minute; it never notifies subscribers. Configs are set per Main Topic: Event Broker, State Broker.
WebSocket timing#
| Setting | Value |
|---|---|
| Server ping interval | 30 seconds |
| Idle timeout | 60 seconds without any frame from the client (pongs count) |
| Permissions | snapshot at connect, for the connection's life |
Claims#
| Field | Values |
|---|---|
| Domain Claim protocol flags | 0, 1 (R), 4 (W), 5 (W R) |
Broker claim topic_flags | 0, 1, 4, 5 |
| Broker claim data flags | 0–15 (P 8, W 4, S 2, R 1) |
| Claims per key | at most one of each kind |
| Keys per claim | unlimited |