peek
Let your AI coding agent debug what already happened in your real browser — peek turns your locally-recorded sessions (DOM history, console & network errors, the action right before a failure) into a runnable Playwright repro it can re-run to verify its own fix.
peek records your real, authenticated browser session locally, then turns it into a runnable Playwright repro your AI coding agent can replay. Instead of guessing from a description of what broke, the agent re-runs the actual failure and checks whether its fix worked. It also queries the session's console, network, and DOM over MCP — so it's a Chrome extension + a stdio MCP server + a small CLI, for clients like Claude Code, Cursor, Cline, and Windsurf.
Everything stays on your machine, redacted by default: auth
and cookie headers are deny-listed, and form values + PII are masked in the
page before anything leaves the tab. No telemetry, no remote endpoints, no
third-party SDKs — the browser talks to the local host over Chrome
native messaging (stdio), and the database lives at ~/.peek/sessions.db.
What it does
What happened before the error
get_user_action_before_error assembles the causal chain — the clicks, DOM mutations, and network/console errors right before a failure — into one timeline with a narrative. With query_dom_history, get_session_console_errors, and get_session_network_errors, your agent debugs what already happened instead of guessing from a description.
Forensic read tools for agents
list_recent_sessions / get_session_summary to orient, get_dom_snapshot / query_dom_history to inspect the DOM as it was at any moment, and get_page_view / get_element_detail for the live page. All over standard MCP — works with any MCP-aware client.
Replayable Playwright repro
generate_playwright_repro turns a recorded session — the actual clicks, console, and network — into a runnable Playwright test. The agent re-runs it to verify a fix actually worked, and can seed a console-error-absence assertion so the bug can't silently come back.
Per-site, opt-in capture
No <all_urls> permission. You enable peek per origin in the side panel; it records nothing until you do.
Five-level permission model
From Level 1 (read-only, default) to Level 4 (Auto) — per origin. Destructive actions always prompt, even at Auto.
Local SQLite store
Sessions, console events, and network metadata live in ~/.peek/sessions.db; the tamper-evident audit log is stored separately at ~/.peek/audit.log. Delete or export with the peek CLI.
Redacted by default
Auth and cookie headers are deny-listed; form values and PII (cards, SSNs, JWTs, emails) are masked in the page before anything leaves the tab. Response bodies aren't captured unless you opt a single origin into Deep capture (off by default) — and even then they're masked and capped at 256 KB. Apache-2.0, so you can audit the masking yourself.
Level-3 write tools (opt-in)
execute_action and request_authorization let an agent take one-shot UI actions — gated by per-action user confirmation in the side panel.
Packages
@peekdev/mcp— the native host + stdio MCP server. npm@peekdev/cli—peek init,peek status, sessions list/show/export/delete, audit log. npm@peekdev/extension— the Chrome MV3 extension, available on the Chrome Web Store.
Privacy
peek is local-first by design. Nothing leaves your machine. The full data-handling policy is on the privacy page — it is also the canonical policy used for the Chrome Web Store listing.
Repository: github.com/Cubenest/rrweb-stack.