Skip to content
Work

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

Next.js
TypeScript
rrweb
SQLite
Docker

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.