Auto-Browser

by lvcidpsyche

Not rated
GitHub

About

Browser automation framework with savable auth profiles and compliance options viable to enterprise developments.

Details

Author
lvcidpsyche
Categories
Productivity, Security

Setup

Install Auto-Browser in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/lvcidpsyche/auto-browser

Follow the installation instructions in the repository README, then restart your MCP client.

Give your AI agent a real browser, with a human in the loop.

Auto Browser is an MCP-native browser control plane for authorized workflows. It gives MCP clients, LLM agents, and operators a shared Playwright browser with human takeover, reusable auth profiles, approvals, audit trails, and local-first deployment.

- Claude Desktop
- Cursor
- any MCP client that can talk HTTP or stdio
- direct REST callers when you want curl-first control

- MCP-native from day one.The browser surface is already packaged as an MCP server instead of bolted on after the fact.
- Human takeover when the web gets brittle.noVNC keeps the same live session available when a person needs to step in.
- Login once, reuse later.Save named auth profiles and reopen fresh sessions that are already signed in.
- Local-first by default.Run the full stack on your own box with Docker Compose, or use Codespaces for a quick hosted demo.
- Safety rails built in.Approvals, operator identity, PII scrubbing, Witness receipts, and policy presets are all part of the product surface.
- Evidence you can hand to someone else.Witness receipt chains are Ed25519-signed, and an exported bundle verifies withscripts/verify_witness_bundle.py— which imports nothing from this project, so a recipient need not run or trust this controller to check it.
- We audit ourselves in public.
docs/audits/2026-08-execution-audit.mddocuments an adversarial audit of this repo that found safety controls which reported success while doing nothing, with reproductions, the fixes, and the gates that close the class.
- Governed skill induction.Verified browser traces can become staged skill candidates with provenance that is signed when a mesh identity is configured — and checked on read, not just produced — plus verifier adapters and review-only graduation — agents that prove they can repeat themselves correctly, not just act once.

- Read a page without paying for pixels.The newtextobservation preset returns the accessibility outline, extracted text, and interactables with no screenshot and no OCR — the cheapest way for an agent to read a page. SetPERCEPTION_PRESET_DEFAULT=textto make it a deployment-wide default.
- Find a string on the page in one call.browser.find_elementsnow takes aquery(plain text or regex, case-insensitive) instead of a CSS selector and returns each match with surrounding context — no full observe needed to check one value.
- Errors agents can act on.Invalid tool arguments report field-level details, handler messages pass through instead of a generic failure, and the MCP bridge's cold-start error now says exactly how to start the controller.
- Any OpenAI-compatible model can drive the browser.A single generic adapter serves every model reachable over an OpenAI/chat/completionsendpoint. New providers:openrouter(one key → ~every frontier model),xai(Grok),deepseek,minimax, andopenai_compatible(custom base URL for self-hosted Ollama / vLLM / LM Studio, Azure, Together, Groq, Fireworks, …). Vision + function-calling with a content-parse fallback for endpoints that ignoretool_choice.
- browser://audit/eventsMCP resource.List and read recent audit events across sessions directly over MCP.
- Playwright pin parity enforced in CI.The controller (pip) and browser-node (npm) Playwright versions must match exactly — a single-side bump can no longer merge and crash-loop compose deployments.
- On PyPI.pip install auto-browser-clientfor the SDK,pip install auto-browser-langchainfor the LangChain/LangGraph/CrewAI adapters, anduvx auto-browser-mcpto run the MCP stdio bridge with zero setup. Releases publish via PyPI trusted publishing (OIDC) on tag push.

- browser_manager.pyis now a pure facade + composition root(1,284 → 769 lines), with domain logic extracted intoapp/browser/services/.
- Fork state exports are encrypted at restand shadow-browse state never touches disk.
- Download capture tasks can no longer be garbage-collected mid-flight, shadow-browse failures roll back cleanly, and page listeners survive object-id reuse.
- Release gates in CIenforce dependency audits, fixture evals, client tests, Python wheel builds, and the 80% controller coverage gate on Python 3.11 and 3.14.

SeeCHANGELOG.mdfor the full release history.

- internal dashboards and admin tools
- operator-assisted QA and browser debugging
- login-once, reuse-later account workflows
- brittle sites where a human may need to recover the flow
- MCP-powered agent workflows that need a real browser, not just HTML fetches

- CAPTCHA solving
- unauthorized scraping or account automation
- deceptive identity shaping or bypass tooling

git clone https://github.com/LvcidPsyche/auto-browser.git cd auto-browser docker compose up --build

That is enough for local development with the default settings.

Runmake doctorfrom a normal terminal with local Docker access and permission to open localhost sockets.

- API docs:http://127.0.0.1:8000/docs
- Operator dashboard:http://127.0.0.1:8000/dashboard
- Visual takeover:http://127.0.0.1:6080/vnc.html?autoconnect=true&resize=scale

All published ports bind to127.0.0.1by default.

Codespaces provisions the stack automatically. The dashboard and noVNC tabs are usually ready in about 90 seconds.

The highest-signal flow in this repo is:
- create a session
- log in manually if the site needs a human
- save the session as a named auth profile
- open a new session from that auth profile
- continue work without reauthing

- examples/login-and-save-profile.md
-
examples/README.md

curl -s http://127.0.0.1:8000/sessions \ -X POST \ -H 'content-type: application/json' \ -d '{"name":"demo","start_url":"https://example.com"}' | jq
curl -s http://127.0.0.1:8000/sessions/<session-id>/observe | jq

- an HTTP MCP endpoint athttp://127.0.0.1:8000/mcp
- convenience endpoints athttp://127.0.0.1:8000/mcp/toolsandhttp://127.0.0.1:8000/mcp/tools/call
- a stdio bridge:uvx auto-browser-mcpfrom PyPI, or
scripts/mcp_stdio_bridge.pyin a repo checkout

The default MCP tool profile iscurated, which keeps the browser surface compact for better tool selection. If you want the full internal tool surface, set:

curl -s http://127.0.0.1:8000/mcp/tools/call \ -X POST \ -H 'content-type: application/json' \ -d '{ "name":"browser.create_session", "arguments":{ "name":"demo", "start_url":"https://example.com" } }' | jq

- docs/mcp-clients.md
-
examples/claude-desktop-setup.md
-
examples/cursor-mcp-setup.md
-
examples/claude_desktop_config.json

For resource listing, resource reads, and subscription-style update examples, see[docs/mcp-clients.md#resources-and-subscriptions.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.