Sizing and retention
Storage
Section titled “Storage”These figures are the object store. The app servers do not hold recordings. A bundled or single-virtual-machine install starts with a 500 GB SSD for MinIO, separate from the Postgres and ClickHouse volumes. An external install sizes the bucket you bring.
Rule of thumb: about 0.8 MB per stored session without canvas, 3–6 MB with canvas at the default level.
WebRTC call observability adds roughly 3 to 5 KB per minute per call at the default five-second sampling cadence, which is not material next to the DOM stream: a one-hour call is a few hundred kilobytes. Plan storage from sessions and canvas, not from calls.
| Stored sessions / month | Retention | Replay storage held |
|---|---|---|
| 100 K | 30 days | ~80 GB |
| 1 M | 30 days | ~0.8 TB |
| 1 M | 90 days | ~2.4 TB |
| 5 M | 90 days | ~12 TB |
| 50 M | 30 days | ~40 TB |
MinIO in erasure-coded mode needs roughly 1.5× the raw figure in physical disk. ClickHouse holds flattened events, typically 5–10% of replay volume.
Memory (bundled profile, 32 GB node)
Section titled “Memory (bundled profile, 32 GB node)”| Component | Limit |
|---|---|
| ClickHouse | 12 GB |
| Postgres | 4 GB |
| MinIO | 2 GB |
| Valkey | 1 GB |
| LiveKit (audio only) | 0.5 GB |
| Our five services | 4 GB total |
| Operators and add-ons | 2 GB |
| Headroom | 6.5 GB |
The chart refuses to install the bundled profile on a node smaller than 16 GB.
Retention
Section titled “Retention”Per project, in days:
| Data | Range | Enforcement |
|---|---|---|
| Replay chunks, canvas, transcripts | 1–400 | Amazon and MinIO: tag lifecycle plus a daily cleanup. Google Cloud and Azure: the daily cleanup |
| Flattened events | 1–400 | ClickHouse TTL |
| Aggregates | 30–800 | ClickHouse TTL on materialized views |
| Audit log | 6 years | Never shortened |
Retention classes are 7, 14, 30, 60, 90, 180, 365, 400 days, and pinned. Changing a project’s retention applies to new objects immediately. On Amazon and MinIO, existing objects are re-tagged in the background. Legal holds use Object Lock, which MinIO supports with the same API.