Session replay
Open source
TinyReplay
A browser SDK, validated ingest API, SQLite store, and replay dashboard packaged for self-hosting with Docker and GHCR.
Role
Creator · Full-stack engineering
Status
Open source
Stack
Links
Stable IDs
Idempotent batches
In browser
Input masking
WAL
SQLite mode
Pipeline
One path from browser events to replay
TinyReplay connects an rrweb-based browser SDK to a validated ingest API, SQLite storage, and a custom Next.js replay dashboard. It is packaged with Docker and published through GHCR.
Ingestion
Retries do not create duplicate sessions
Stable batch IDs make ingestion idempotent. Recorder lifecycle ordering, bounded buffers, and unload-time sendBeacon handling protect event ordering and delivery when a page closes.
Privacy and operations
Sensitive input is masked before it leaves the browser
Input masking happens at capture time. The storage layer uses versioned SQLite migrations and WAL, with retention sweeps, rate limits, CORS and token controls, plus CI that includes a container smoke test.
Next project
Koguko
Live anonymous chat with an ephemeral-by-default data boundary.