peek
This server lets you query recorded browser sessions, debug errors, reconstruct DOM states, generate Playwright test scripts, and—with explicit user consent—control the live browser.
Session Discovery & Overview
List recent sessions: Browse recorded sessions (newest-first), filtered by origin or limit, to get session IDs for further queries.
Summarize a session: Get a narrative summary including pages visited, interaction counts, and error tallies.
Error & Network Debugging
List console errors: Retrieve error messages and stack traces from a session.
List failed network requests: Find failed HTTP requests (4xx/5xx or transport errors) within a session.
Trace actions before an error: Reconstruct the sequence of user actions (clicks, typing, navigation) that preceded a specific console error.
DOM Inspection & History
Reconstruct DOM snapshots: Replay the page DOM as it existed at any recorded timestamp, optionally scoped to a CSS selector.
Track DOM changes over time: Get a timeline of attribute/text changes for a specific element across a session.
Test Generation
Generate a Playwright repro: Produce a runnable TypeScript Playwright test reproducing user actions from a session, optionally within a time window.
Live Browser Control (Consent-Gated)
Request authorization: Ask the user to approve a browser action via a side-panel banner, returning a one-shot token on approval.
Execute browser actions: Perform clicks, typing, navigation, scrolling, screenshots, and more in the live browser, subject to a per-origin permission model (read-only → suggest-only → confirm-required → auto-allow). Destructive actions always prompt the user regardless of permission level.
rrweb-stack
Two OSS products on one rrweb-based substrate. Both ship as npm packages today.
Product | One line | Install |
The recorder for your WebdriverIO and Playwright tests — Cypress on the roadmap. Self-contained HTML for every run — replay failures, audit successes, attach to any bug tracker. No SaaS, no dashboard, no signup. |
| |
Your real browser, exposed to your AI coding agent over MCP — the agent reads recorded sessions and, with your explicit consent, drives the live page. Never leaves your machine. |
|

Above: npx @tracelane/cli init in a real WebdriverIO project — detect runner, install, edit wdio.conf.ts, ignore reports dir.

Above: peek sessions list then peek sessions show ... --format markdown — a recorded browser session as queryable structured output, AI-ready.
What's where
tracelane
Package | Status | What it does |
alpha | WebdriverIO Service — capture + write HTML report | |
alpha | Playwright Reporter + auto-fixture — capture + write HTML report | |
planned | JSON-output adapter (no Test Replay overlap) | |
alpha | Framework-agnostic capture engine — depended on by the adapters | |
alpha | Self-contained HTML report builder |
Docs: tracelane.cubenest.in (source under apps/tracelane-docs/). The tracelane-wdio README is the right starting point.
peek
Package | Status | What it does |
alpha |
| |
alpha | stdio MCP server — exposes captured sessions, plus consent-gated live read + act tools, to Claude Code, Cursor, Cline, Windsurf | |
alpha · on the Chrome Web Store | Chrome MV3 extension — the real browser, recorded |
Docs: peek.cubenest.in (source under apps/peek-docs/).
peek requires Node.js ≥ 22. Its native
better-sqlite3dependency only ships prebuilt binaries for Node 22+; on older Node (notably Windows, which has no C/C++ toolchain by default) the install falls back to compiling from source and fails.
Related MCP server: AgentWatch
Shared substrate
@cubenest/rrweb-core — vendored PostHog rrweb fork, PII masking primitives, large-DOM throttling, screenshot fallback, network/console capture abstractions, compression helpers. Used by both products. The fork is pinned by SHA + the substrate's NOTICE attributes both PostHog's plugin lineage and the upstream rrweb roots.
Why two products, one repo
Same recording engine, same trust model, two different consumer surfaces:
tracelane ships test-time captures into a self-contained HTML artifact your team and AI agents can read offline.
peek ships live-browser captures into an MCP server your AI coding agent can query — and, with your explicit per-origin consent, drive the live page through.
peek's live read + act tools are gated by a five-level per-origin permission model (0 Off → 1 Read-only → 2 Suggest-only → 3 Act-with-confirm → 4 YOLO, the default is Level 1) with a destructive-action blocklist that always prompts. No telemetry, no cloud — everything stays in ~/.peek.
Shared upstream means one fork to track, one masking surface to harden, one license + DCO + security policy.
Pre-launch state
Pre-1.0. Alpha packages live on npm. Branch protection is on main (PR + CI + DCO + linear history). All workflows use Trusted Publishing OIDC + SLSA provenance. Renovate runs with a 7-day cooldown (21 days for the @posthog/rrweb lineage) and config:best-practices. tracelane has publicly launched (npm alpha + a live demo report); peek is alpha on npm and its Chrome MV3 extension is available on the Chrome Web Store.
Security
Report a vulnerability via SECURITY.md. The shared threat model for both products lives in docs/SECURITY-NOTES.md.
License
Apache-2.0. See LICENSE.
Contributing
Apache 2.0. DCO sign-off required on all contributions. See CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md.
Sponsor / support
GitHub Sponsors — github.com/sponsors/harry-harish (opening for launch)
The work is open-source and sustainable; sponsorship keeps it that way. See
docs/SUSTAINABILITY.mdfor the maintenance cadence.
Maintenance
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Cubenest/rrweb-stack'
If you have feedback or need assistance with the MCP directory API, please join our Discord server