by Omodaka9375
Servo-based headless browser engine for AI agents. An auditable alternative to embedding Chromium.
Available after the catalog security scan passes.
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
# Add to your Claude Code skills
git clone https://github.com/Omodaka9375/browserrGuides for using ai agents skills like browserr.
See how browserr compares with popular alternatives.
A Servo-based browser engine built for AI agents: headless by default, with an optional native interactive window for human handoff.
Browserr is an alternative to embedding Chromium in an agent stack: a single
engine binary (Rust + Servo) that renders pages, blocks ads, and exposes a
small loopback protocol. It is built around three commitments: block when
unsure, hand the page to a human when a human is needed, and leave evidence
for everything it did.
Rendering is CPU by default; --gpu opts into hardware rendering.
--headed opens a real interactive native window and requires a desktop
with graphics support. It runs on Windows, Linux (x64/ARM64) and macOS.
Agents drive it through a Python SDK or through any MCP-capable client. The automation surface is deliberately small: the entire protocol is auditable in an afternoon, unlike CDP.
Most agent browsers embed Chromium and speak CDP behind the scenes. Browserr is a purpose-built engine for the job instead, with the product decisions that follow from owning the whole stack:
detect_handoff()
spots CAPTCHAs, one-time codes and payment fields. pause() hands the
page to a person while the agent keeps watching; wait_for_user returns
the moment control can come back. Annotated screenshots number every
element, so a human and an agent can point at the same e7.--gpu opts into hardware GL with automatic CPU fallbackrequestIdleCallback and crypto.subtle digests
(SHA-1/256/384/512) via built-in shims where servo omits themread_page(): token-cheap prose extractionread_structure(): every interactive element with its rect, selector and
a stable ref (e7); fields carry label, constraints, state and validity;
shadow DOM included. Refs are scoped to each read_structure() snapshot;
after navigation or a refresh, read again. MCP reports stale refs as errorsclick_element, set_value (React/Vue-safe),
wait_for_selectorclick_ref, set_field, fill_form - stable refs,
no selector fragility; a whole form in one round trip, with type-aware
writes that fire input/change/blur once so page validators runsubmit_form runs the page's own validation, then
read_outcome reports the url, alert texts and invalid fieldsfetch/XHR recorded in a ring buffer, in every framedetect_handoff(): spots CAPTCHAs, one-time codes, empty passwords,
payment fields and consent wallspause() / resume(): mutating actions fail loudly while a human has
control; reads keep working. MCP browser_wait_for_user completes only
on navigation or an observed handoff clearing, never on a clean first scanbrowser_start({headed: true}) shows the native
window; mouse and keyboard input still work while MCP actions are pausedping health check; fast failure when the engine dies--driver-port,
optional token authenticationDownload the archive for your platform from releases and unpack it anywhere (no admin rights, no installer). You get:
engine(.exe) the headless browser engine
libEGL.dll ANGLE GL for WebGL (Windows archives only)
libGLESv2.dll must stay next to engine.exe
driver.py Python SDK (stdlib only)
browserr_mcp.py MCP server (stdlib only)
mcp_wrap.cmd Windows MCP launcher (cmd wrapper)
README.md, LICENSE
Requirements: Python 3.10+ on PATH. driver.py finds the engine binary
next to itself; override with BROWSERR_ENGINE=/path/to/engine.
Add the Browserr server in your client's MCP settings:
{
"mcpServers": {
"browserr": {
"command": "python",
"args": ["C:/path/to/browserr/browserr_mcp.py"],
"cwd": "C:/path/to/browserr"
}
}
}
On Windows, you can also point the command at the bundled wrapper:
{
"mcpServers": {
"browserr": {
"command": "C:/path/to/browserr/mcp_wrap.cmd",
"cwd": "C:/path/to/browserr"
}
}
}
The server spawns its own engine (ephemeral profile) on first tool use;
browser_stop shuts it down. To share one engine across sessions, start
it yourself with a driver port and attach instead:
engine --ephemeral --driver-port=7412 --driver-token=secret
{ "mcpServers": { "browserr": {
"command": "python",
"args": ["C:/path/to/browserr/browserr_mcp.py", "--port", "7412", "--token", "secret"]
} } }
import sys; sys.path.insert(0, "tools")
from driver import Driver, save_png
d = Driver(ephemeral=True) # spawns the engine, throwaway profile
try:
d.navigate("https://example.com"); d.wait_load(); d.wait_ready()
print(d.eval_js("document.title")) # results returned as JSON
title, text = d.read_page() # token-cheap prose
structure = d.read_structure() # headings/buttons/inputs/...
d.set_value("#q", "search terms") # React/Vue-safe
d.click_element("#go") # scrolls into view, real pointer
w, h, bgra = d.screenshot(); save_png("shot.png", w, h, bgra)
print(d.ping()) # {'tabs': 1, 'active': 0}
finally:
d.close() # socket close = engine exit
python tools\browserr_mcp.py # headless, ephemeral profile, MCP on stdio
python tools\browserr_mcp.py --port 7412 # attach to an engine started with --driver-port
cargo build --release --manifest-path engine\Cargo.toml
Package a distributable (builds into dist\ and zips it):
powershell -File scripts\package.ps1
engine/ Servo webviews (one per tab), CPU-default rendering (--gpu for
hardware GL), request interception (adblock), automation
protocol, driver port.
tools/ driver.py (Python SDK), browserr_mcp.py (MCP server), tests.
scripts/ dist/package/ci for Windows (ps1) and Linux (sh).
Commands are newline-delimited JSON, tab-addressed, over a
browserr is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by Omodaka9375. Servo-based headless browser engine for AI agents. An auditable alternative to embedding Chromium. It has 53 GitHub stars.
browserr's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/Omodaka9375/browserr" and add it to your Claude Code skills directory (see the Installation section above).
browserr is primarily written in Python. It is open-source under Omodaka9375 on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh browserr against similar tools.
No comments yet. Be the first to share your thoughts!