This is an early release preview. You may encounter bugs.
Dev Browser logo
Unclaimed

Tool interface

Dev Browser

A Claude Skill to give your agent the ability to use a web browser

B 71/100 GitHub score ? This grade is derived from GitHub signals, not user votes. Open for the full breakdown.
Discussion

01 / Summary

About Dev Browser.

Dev Browser is a command-line tool that gives coding agents control of Chrome through short JavaScript snippets. A background daemon keeps the browser and its pages alive between calls, so an agent can open a page once and then inspect it, act on it, and check the result across several separate commands.

Scripts run against real Puppeteer Page objects with a few added helpers. page.snapshot() returns an accessibility tree with stable element references such as e12, and those references work as selectors in Puppeteer methods in the form ref/e12. Other helpers cover screenshots, waiting for navigation and network activity to settle, and filling form fields. Top-level await works, and the last expression becomes the command result.

It can launch an isolated Chrome profile or attach to a browser that is already running, found by auto-discovery or addressed by port, HTTP URL, WebSocket URL, or raw CDP Unix socket. An attached browser belongs to the user: only the tabs a script asks for are extended, and idle cleanup never closes it. A launched browser closes after 30 minutes without a script by default, adjustable per command, by environment variable, or in a config file.

Agents reach it in three ways. The command line carries a built-in guide under dev-browser --help covering the API and a look, act, verify workflow. install-skill writes a bundled skill into the Claude Code, Codex, and shared agents skill directories. An MCP server started with dev-browser mcp exposes devbrowserrun, devbrowserpages, devbrowserbrowsers, devbrowserstop, and devbrowserhelp over the same warm daemon.

Published timings, measured on Linux with a headless browser and a warm daemon as medians of nine runs, report about 13 ms for an empty script, 14 ms to fetch a page title, 18 ms for a snapshot of a search-results-like page, 36 ms for a screenshot, and about 280 ms for a cold daemon plus Chrome launch. Version 1.0 replaced the earlier Playwright and QuickJS implementation with a Puppeteer and Bun one, and keeps its state in a separate directory.

  • Persistent named pages: named tabs carry state across scripts, so a later command resumes on the page an earlier one opened
  • Accessibility snapshots: page.snapshot() returns a compact tree with stable refs that double as Puppeteer selectors
  • Puppeteer API: scripts use real Puppeteer Page objects plus helpers for screenshots, load waiting, and form filling
  • Launch or attach: start an isolated Chrome profile, or connect to an existing browser by auto-discovery, port, HTTP URL, WebSocket URL, or CDP socket
  • Idle cleanup: launched browsers close after a configurable idle period, while attached browsers are left open
  • Script isolation: each command runs in a fresh node:vm context whose pages, locators, and browser contexts are closed when it ends, which separates globals without acting as a security sandbox
  • Skill install: install-skill writes the bundled skill into the Claude Code, Codex, and shared agents skill directories
  • MCP server: run, pages, browsers, stop, and help tools served over the same daemon as the command line
  • Restricted file I/O: saveFile and readFile are confined to a temporary directory under the tool’s own state folder
  • Platform support: macOS and glibc Linux, with the release binary bundling Bun and Puppeteer so Node is not needed after install

02 / Discussion CREDIBILITY-GATED

Discussion

Reading is open to everyone. Posting and voting need a verified identity or a GitHub grade of B or higher.

  • No discussions yet.

04 / Build

Build with Dev Browser.

Browse the catalog for frameworks, tools, and harnesses, each scored on real GitHub credibility.

Get Dev Browser →

Browse the catalog