Skip to content
Console
Console
New · Support agent

Espejo

A user hits a bug. They click one button. You get the network, the console, the clicks and the video, not a blurry description.
Network (with bodies), console, clicks, navigation 18 KB gzip
<script src="https://app.espejo.dev/sdk/espejo.js" data-key="pk_live_..."></script>

By default nothing is uploaded until you call report().

Espejo is a session recorder that installs with one <script> tag. By default it records nothing to a server: it keeps a capped, in-memory ring buffer of network requests (with bodies), console output, clicks and navigation, and only uploads that buffer when someone calls espejo.report(...) — the “report a problem” button. Add data-capture="dom" and it also keeps an rrweb DOM replay; call startVideo() from a click and it records the screen too.

Ships nothing by default

mode: 'ring' (the default) never uploads a byte until someone reports a problem. That is the difference between something you can leave running in production and something that burns your bucket and your users’ privacy in a week.

Multi-tenant from the ground up

Every recording belongs to a project, every project to a tenant. The console API, the storage keys and the MCP server all scope through that relationship — never through a list of ids resolved ahead of time.

Redacted before it's written

Authorization headers, cookies, anything that looks like a secret, and every value typed into an input are stripped before the bundle ever reaches the bucket — not after.

Readable by an agent

A built-in MCP server (OAuth 2.1 + PKCE, per-account consent) gives Claude Code or claude.ai five read-only tools to list and inspect recordings — scoped to exactly the projects a person authorized.

Support agent

A support agent that reads the page your visitor is on and can point at things or act for them, with your own chat or with our widget. Read the support agent guide.