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.
Works with:
scripts/verify_witness_bundle.py — which imports nothing from this project, so a recipient need not run or trust this controller to check it.docs/audits/2026-08-execution-audit.md documents 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.text observation 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. Set PERCEPTION_PRESET_DEFAULT=text to make it a deployment-wide default.browser.find_elements now takes a query (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./chat/completions endpoint. New providers: openrouter (one key → ~every frontier model), xai (Grok), deepseek, minimax, and openai_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 ignore tool_choice.browser://audit/events MCP resource. List and read recent audit events across sessions directly over MCP.pip install auto-browser-client for the SDK, pip install auto-browser-langchain for the LangChain/LangGraph/CrewAI adapters, and uvx auto-browser-mcp to run the MCP stdio bridge with zero setup. Releases publish via PyPI trusted publishing (OIDC) on tag push.browser_manager.py is now a pure facade + composition root (1,284 → 769 lines), with domain logic extracted into app/browser/services/.See CHANGELOG.md for the full release history.
Good Fits| Browser Control | Operator Safety | Deployment and Integration |
|---|---|---|
| Playwright-backed sessions with screenshots, DOM summaries, OCR excerpts, tab controls, downloads, and network inspection | approval gates, operator identity headers, audit events, PII scrubbing, Witness receipts, and protection profiles | MCP over HTTP, bundled stdio bridge, REST API, Docker Compose, Codespaces, auth profiles, and optional per-session isolation |
git clone https://github.com/LvcidPsyche/auto-browser.git
cd auto-browser
docker compose up --buildThat is enough for local development with the default settings.
Optional:
cp .env.example .env make doctor
Run make doctor from a normal terminal with local Docker access and permission to open localhost sockets.
Open:
http://127.0.0.1:8000/docshttp://127.0.0.1:8000/dashboardhttp://127.0.0.1:6080/vnc.html?autoconnect=true&resize=scaleAll published ports bind to 127.0.0.1 by default.
Codespaces provisions the stack automatically. The dashboard and noVNC tabs are usually ready in about 90 seconds.
First Useful DemoThe highest-signal flow in this repo is:
Start here:
Minimal session creation:
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
Minimal observation:
curl -s http://127.0.0.1:8000/sessions/<session-id>/observe | jq
Auto Browser exposes:
http://127.0.0.1:8000/mcphttp://127.0.0.1:8000/mcp/tools and http://127.0.0.1:8000/mcp/tools/calluvx auto-browser-mcp from PyPI, or scripts/mcp_stdio_bridge.py in a repo checkoutThe default MCP tool profile is curated, which keeps the browser surface compact for better tool selection. If you want the full internal tool surface, set:
Raw tool-call example:
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
Client setup guides:
docs/mcp-clients.mdexamples/claude-desktop-setup.mdexamples/cursor-mcp-setup.mdexamples/claude_desktop_config.jsonFor resource listing, resource reads, and subscription-style update examples,
see docs/mcp-clients.md#resources-and-subscriptions.
Auto Browser ships a Stage 0 convergence harness for Agent Skill Induction. It runs a structured task contract, records tamper-checked traces, verifies completion, and writes a staged skill candidate carrying provenance. With a mesh identity configured that provenance is signed, and the registry verifies the signature before serving a candidate — a candidate that fails the check, or that was dropped into the staging directory unsigned, is refused. Candidates induced from a mock run are marked simulated so they cannot pass as converged. Generated skills are staged only — promotion stays explicit and reviewed.
Read-only inspection tools (harness.list_runs, harness.get_status, harness.get_trace) are exposed in the default curated MCP tool profile so agents can introspect harness state without elevated access. Convergence runs, drift checks, candidate management, and graduation require MCP_TOOL_PROFILE=full, or can be invoked directly over REST.
Start with docs/convergence-harness.md. A deterministic local smoke is:
python -m controller.harness.run --contract evals/contracts/example_read.json --mock-final-url https://example.com --mock-final-text "Example Domain"For MCP clients, set MCP_TOOL_PROFILE=full to expose the harness.* tools.
For a real private deployment, set at least:
APP_ENV=production API_BIND_SCOPE=exposed API_BEARER_TOKEN=<strong-random-secret> REQUIRE_OPERATOR_ID=true AUTH_STATE_ENCRYPTION_KEY=<44-char-fernet-key> REQUIRE_AUTH_STATE_ENCRYPTION=true REQUEST_RATE_LIMIT_ENABLED=true METRICS_ENABLED=true STEALTH_ENABLED=false
COMPLIANCE_TEMPLATE can apply a preconfigured posture at startup:
| Preset | Auth Encryption | Operator ID | PII Scrub | Isolation | Max Session Age |
|---|---|---|---|---|---|
strict |
required | required | all layers | docker_ephemeral |
4h |
balanced |
- | required | network + text | shared | 24h |
Both presets require upload approvals and enable Witness receipts. Startup writes the applied policy to /data/compliance-manifest.json. The legacy names (HIPAA, SOC2, GDPR, PCI-DSS) still work as deprecated aliases and emit a warning at startup.
Example:
COMPLIANCE_TEMPLATE=strict docker compose up
For deployment details, hosted Witness notes, CLI auth modes, and reverse-SSH guidance, see:
Architecture at a Glanceflowchart LR
User[Human operator] -->|watch / takeover| noVNC[noVNC]
LLM[Any model: OpenAI / Claude / Gemini / OpenRouter / Grok / DeepSeek / MiniMax / local] -->|shared tools| Controller[Controller API]
Controller -->|Playwright protocol| Browser[Browser node]
noVNC --> Browser
Browser --> Artifacts[(screenshots / traces / auth state)]
Controller --> Artifacts
Controller --> Policy[Allowlist + approval gates]
First-class adapters for OpenAI, Claude, and Gemini (API or CLI). Beyond those,
a single generic OpenAI-compatible adapter drives any model reachable over an OpenAI
/chat/completions endpoint — set an API key to enable it:
| Provider | Reaches |
|---|---|
openrouter |
one key → ~every frontier model (Claude, GPT, Gemini, Grok, DeepSeek, Llama, Mistral, Qwen, …) |
xai |
Grok |
deepseek |
DeepSeek (text-only; driven from the DOM/accessibility outline) |
minimax |
MiniMax |
openai_compatible |
any custom base URL — self-hosted Ollama / vLLM / LM Studio, Azure OpenAI, Together, Groq, Fireworks, … |
Vision (screenshots) is used for every provider except text-only ones. See .env.example for
the *_API_KEY / *_BASE_URL / *_MODEL settings.
Core components:
browser-node/ runs Chromium, Xvfb, x11vnc, and noVNCcontroller/ exposes the FastAPI controller, MCP transport, policy rails, and orchestration endpointsdata/ holds runtime artifacts, auth state, approvals, audit logs, and optional CLI cachesscripts/ contains local helpers for doctor, smoke tests, bridges, and release checks| Path | What It Contains |
|---|---|
controller/ |
controller API, MCP transport, tests, and packaging |
browser-node/ |
browser runtime and Playwright connection layer |
examples/ |
copy-paste flows and MCP client setup |
integrations/langchain/ |
LangChain, LangGraph, and CrewAI adapters |
docs/ |
architecture, deployment, hardening, and launch docs |
scripts/ |
doctor, smoke harnesses, stdio bridge, and auth helpers |
ops/ |
supporting service templates and operational assets |
| Command | Purpose |
|---|---|
make help |
list available repo commands |
make lint |
run Ruff checks on app, tests, and helper scripts |
make test |
run controller tests in Docker |
make test-local |
run controller tests on host Python 3.10+ |
make eval |
run deterministic provider/profile eval scoring |
make doctor |
run the local readiness smoke |
make release-audit |
run the fuller release-validation pass |
make smoke-isolation |
verify per-session Docker isolation |
make smoke-reverse-ssh |
verify reverse-SSH remote access |
| If You Want To... | Start Here |
|---|---|
| understand the system shape | docs/architecture.md |
| connect Claude Desktop or Cursor | docs/mcp-clients.md |
| run the curl-first examples | examples/README.md |
| deploy on a trusted host | docs/deployment.md |
| review production constraints | docs/production-hardening.md |
| run the convergence harness | docs/convergence-harness.md |
| inspect release history | CHANGELOG.md |
| see where the project is headed | ROADMAP.md |
If you want to help, start with:
If Auto Browser is useful, a star helps other people find it. Sponsorship and tip options live in TIPS.md.
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | stealth-browser-mcp - bypasses anti-bot system | 0 | 50 | 19-07-2026 |
| 2 | Running Gemma 4 in the Browser with Transformers.js and WebGPU | 0 | 20 | 02-08-2026 |
| 3 | pyagentbrowser 0.32.3 | 0 | 5 | 20-07-2026 |
| 4 | turnstone - orchestration for tool-using AI agents | 0 | 24.29 | 19-07-2026 |
| 5 | django-crawl - An in-process site crawler using Django’s test client | 0 | 28.18 | 28-07-2026 |
| 6 | spoof: A Simple HTTP Server for Test Environments | 0 | 10 | 11-06-2026 |
| 7 | Write a coding agent from first principles: better tools | 0 | 10 | 12-07-2026 |
| 8 | userharbor: Framework Agnostic User Management | 0 | 10 | 27-07-2026 |
| 9 | wifi-webview-debugger 0.1.1 | 0 | 5 | 20-07-2026 |
| 10 | Проксирование в UI автотестах с mitmproxy | 0 | 10.4 | 24-03-2026 |