A persistent Puppeteer-controlled Chrome browser running on your Windows desktop (port 8851). Claude uses it to visually verify web output — taking screenshots, checking for JavaScript errors, and evaluating expressions in real-time. The browser stays open between commands so 3D tiles, maps, and animations remain loaded.
The visible browser window on your desktop is the Pup Debug instance. It's never headless by default — you can see exactly what Claude sees.
1. Launch — Claude opens a visible Chrome browser on your desktop via Puppeteer
2. Navigate — Points the browser at a development URL (e.g., your local server)
3. Debug Loop — Claude edits code, reloads the page, takes screenshots, checks for JS errors, and iterates
4. Evaluate — Runs JS expressions in the page context for state inspection
5. Stay Open — Browser persists between commands; 3D tiles and state stay loaded
Server: localhost:8851
Status: Ready — events log pup API traffic
Browser: —
Page: —
This widget receives events in real-time as Claude interacts with the Puppeteer browser. Screenshots appear with dimension badges showing they've been resized for Claude's vision (max 1568px). JS errors, page reloads, and navigation events are all logged to the Timeline tab.
All commands are sent via HTTP to the Puppeteer server on localhost:8851. Claude sends these automatically during debug loops via Desktop Conduit. The pup-debug skill triggers this automatically when Claude works on visual projects.
?since=timestamp filter.
1. Edit the source code
2. Reload — POST /reload
3. Wait — GET /wait?ms=5000 (for 3D tiles to settle)
4. Screenshot — GET /screenshot, then Read the resized image
5. Check errors — GET /errors
6. Analyze screenshot + errors
7. If issues found, go to step 1