Browser automation with time-travel debugging for AI agents.
RCE provides live browser control, frame-by-frame DOM recording, and session persistence - built specifically for AI-driven web automation with full debugging capabilities.
- Live Browser Control - Navigate, click, type, interact with web apps in real-time
- RRWeb Time-Travel - Frame-by-frame DOM recording with visual replay
- Session Persistence - Login state persists across restarts (OAuth, cookies, localStorage)
- MCP Integration - First-class support for Cursor and other MCP clients
- Fast Actions - 300-500ms per action with optimized IPC
- Multi-Tab Support - Automatic detection and per-tab recording
- Console & Network Logs - Complete debugging context with millisecond timestamps
- Stealth Mode - Bypasses basic bot detection for OAuth flows
| Feature | RCE | Playwright MCP |
|---|---|---|
| Time-Travel Debugging | ✅ RRWeb frame-by-frame replay | ❌ Screenshots only |
| Session Persistence | ✅ Auth state persists across restarts | ❌ Fresh session each time |
| DOM Mutations | ✅ Every keystroke/click captured | ❌ State-based snapshots |
| Performance | ⚡ 300-500ms actions | ~1-2s actions |
| Multi-Session | ✅ Fixed socket, rapid restarts | ❌ Slower restarts |
| Use Case | AI agents, long-running automation | Testing, one-off scripts |
RCE is built for AI agents that need:
- Persistent sessions across many interactions
- Complete debugging context for every action
- Time-travel to understand what went wrong
- Fast, repeated browser control
This monorepo contains:
- @refresh-dev/rce - CLI tool for browser recording and automation
- @refresh-dev/rce-mcp - Model Context Protocol server for Cursor integration
1. Install the CLI:
npm install -g @refresh-dev/rce2. Add to Cursor MCP config (~/.cursor/mcp.json):
{
"mcpServers": {
"rce": {
"command": "npx",
"args": ["-y", "@refresh-dev/rce-mcp"],
"env": {
"RCE_WORK_DIR": "/path/to/your/project" // Required!
}
}
}
}Note: RCE_WORK_DIR is required for MCP integration to locate your RCE session.
3. Start RCE in your project:
cd your-project
rce dev --url http://localhost:3000 --serverCmd "npm run dev"4. Use from Cursor:
Agent: "Navigate to /login and sign in with test credentials"
The MCP tools handle browser automation while RCE records everything!
npm install -g @refresh-dev/rce
# Start recording
rce dev --url http://localhost:3000
# In another terminal - execute actions
rce action browser_navigate --json '{"url":"http://localhost:3000/app"}'
rce action browser_click --json '{"selector":"button.submit"}'
# Time-travel screenshots
rce frames # List captured frames
rce shot --index 50 # Screenshot at frame 50
rce diff --from 10 --to 50 # DOM diffCursor AI Agent
↓
MCP Server (@refresh-dev/rce-mcp)
↓
RCE CLI (rce dev - long-running)
↓
Playwright/Chromium Browser
↓
Your Web App
Everything recorded:
• RRWeb: DOM mutations
• CDP: Screenshots every frame
• Console: All logs
• Network: All requests
• Actions: Every interaction
Storage:
.rce/
├── control.sock ← IPC for live control
├── storage-state.json ← Auth persistence
└── data/<session-id>/
├── rrweb/ ← Frame-by-frame DOM
├── screenshots/ ← Time-travel images
├── logs/ ← Console + network
└── actions/ ← Action timeline
Optional config file (rce.config.json in your project):
{
"url": "http://localhost:3000",
"serverCmd": "npm run dev",
"bootWaitMs": 1500,
"viewport": { "width": 1280, "height": 800 },
"ui": {
"port": 43210
}
}CLI Flags:
rce dev --url URL # App URL to open
--serverCmd "cmd" # Dev server to start
--headless # Run browser invisibly
--clear-state # Clear saved login/cookies
--port N # UI server portWhen using with Cursor:
Navigation & Interaction:
rce_action_navigate- Go to URLrce_action_click- Click elementsrce_action_type- Type into inputsrce_action_press-key- Press keyboard keysrce_action_hover- Hover over elements
Time-Travel:
rce_frames- List all captured framesrce_shot- Screenshot at specific framerce_diff- DOM diff between framesrce_screenshot-latest- Current screenshot
Tab Management:
rce_tabs- List all browser tabs
"Test the checkout flow: add product to cart, go to checkout, fill form, submit"
RCE records every step, you can replay failures frame-by-frame.
User reports bug → You have complete recording with console logs, network requests, and DOM state at every moment.
Log in once → Session persists → Agent can test authenticated features across many runs.
Compare screenshots at frame N across different builds.
- Storage state contains auth tokens - Add
.rce/storage-state.jsonto.gitignore - Browser profile at
.rce/browser-profile/- Contains cookies, don't commit - Recordings may contain sensitive data - Review before sharing
This is an open-source project under MIT license. Contributions welcome!
MIT License - see LICENSE file
Built on:
- Playwright - Browser automation
- RRWeb - Session recording
- Model Context Protocol - AI integration
Made by Refresh - Building the first AI app builder that integrates with your internal software.