Give any AI agent your real Chrome: text perception, visible cursor, ~4x fewer tokens.
Give any AI agent a real browser and watch everything it does.
Built and maintained by Davarion.
No API key. No extra bill. agentic-browser is a tool, not a model: it runs on your computer and uses whatever brain your agent already has. That can be your Claude Pro/Max plan in Claude Code, your ChatGPT plan in Codex, Cursor, or a local model. Nothing to sign up for and no per-token charges from us.
Humans browse the web with browsers. Agents usually need APIs. agentic-browser lets any agent use your installed Google Chrome the way a person does. It perceives pages as compact text with pixel coordinates instead of screenshots, and a visible cursor shows every move and click.
Español · Use cases · Chat watcher · Architecture · Security · Disclaimer
| Problem with today's browser agents | agentic-browser |
|---|---|
| Screenshots cost ~1,000–1,500 tokens per look | Text snapshot: ~15 tokens per element. diff: true returns only what changed |
| Agents guess coordinates from images | Every element comes with its exact center @x,y. browser_element_at(x, y) tells what is at any pixel, with no image |
| You can't see what the agent is doing | A red cursor travels to each target, ripples on click and labels the action |
| Locked into one agent framework | MCP server and a plain HTTP/JSON API: Claude, GPT, Gemini, Hermes, OpenClaw, LangChain, n8n, curl… |
| Stripped-down Chromium builds | Your real Chrome: extensions, codecs, PDF, WebGPU, auto-updates |
| Yet another API key and bill | None. Works with the subscription your agent already uses; even the optional chat watcher can run on your Claude plan |
One line (Claude Code):
claude mcp add agentic-browser -- npx -y agentic-browser-mcp
Any other MCP client: use "command": "npx", "args": ["-y", "agentic-browser-mcp"]. Requirements: Node ≥ 18 and Chrome (or Edge).
Requirements: Node ≥ 18 and Google Chrome.
git clone https://github.com/davarion-tech/agentic-browser.git
cd agentic-browser && npm install
npm run doctor
npm test
Claude Code:
claude mcp add agentic-browser -- node /absolute/path/to/agentic-browser/src/mcp.js
Claude Desktop, Cursor, Codex, Hermes, OpenClaw or any MCP client: see examples/mcp-config.json.
Claude Code slash command (optional): copy skills/agentic-browser into ~/.claude/skills/. Then /agentic-browser <task> always uses this browser instead of any other built-in browser tool.
Then ask your agent something like:
Use only the browser_* tools from agentic-browser. Open es.wikipedia.org, search for "Chrome DevTools Protocol", open the first result and summarize the first paragraph. Don't take screenshots.
npm run http
curl -s -X POST http://127.0.0.1:8787/tools/browser_navigate -d "{\"url\":\"example.com\",\"snapshot\":true}"
GET /tools returns the JSON Schema of every tool, ready to pass as function definitions to any LLM API. A dependency-free Python client is in examples/python_client.py.
Off by default. Installing agentic-browser only lets your agent use the browser when you ask it to. The watcher is a separate process that you turn on.
The watcher keeps the agent's own messaging tabs open (WhatsApp Web, Telegram, Messenger…). Waiting costs zero tokens; when a message arrives, it wakes Claude to read it and propose a reply. A code-enforced policy controls what happens next:
npm run setup
npm run watcher
It runs on your Claude subscription (claude setup-token) or an API key. Read docs/WATCHER.md and the Disclaimer first: many platforms forbid unofficial bots.
# Test bench
url: http://localhost:3000/
viewport 1280x800 scroll=0,0 docH=2090
[3] textbox "Search" ph="type something" @191,124
[4] button "Search" @339,124
[5] select "color" value="Red" opts=[*Red|Green|Blue] @429,124
[6] checkbox "I agree" {checked} @492,124
[10] button "Button in shadow DOM" @652,316
[f1:1] button "Button inside iframe" @214,217
| Tool | Purpose |
|---|---|
browser_snapshot | Main perception. Visible elements with ref, role, name, state and center @x,y. diff: true returns only changes |
browser_find | Find elements by text anywhere on the page, including off-screen |
browser_element_at | Pixel → element (role, text, clickable, DOM path), with no image |
browser_cursor | Where the agent's cursor is and what is under it |
browser_click / browser_move | Visible click or hover by ref or x,y (buttons, double click, modifiers) |
browser_type / browser_press | Real keyboard input: clear, submit, shortcuts like Control+L |
browser_scroll / browser_drag | Mouse wheel; drag and drop |
browser_select / browser_upload | <select> options; file inputs |
browser_navigate / browser_history / browser_tabs | Navigation and tabs |
browser_read / browser_eval | Readable text (wrapped as untrusted content); arbitrary JS |
browser_wait / browser_watch | Wait for time, text or selector. browser_watch sleeps at zero tokens until the page changes (new message, title "(3) Inbox"…) |
browser_request_human | Hand control to the person watching (login, 2FA, CAPTCHA, a decision) through an on-page banner |
browser_console / browser_events / browser_trace | JS console and errors; dialogs, downloads and new tabs; audit trail of every action |
browser_cursor_style | Show or hide the cursor or its trail |
browser_record_start / browser_record_stop | Record the active tab as a video, red cursor included, for demo clips without OBS. MP4 (H.264) when ffmpeg is on the PATH, otherwise WebM. Returns path, duration and size |
browser_screenshot | Last resort: JPEG of the page or of a single ref |
Most actions accept snapshot: true and return the new page state in the same response, which saves one agent turn per step.
Reliability features: refs survive re-renders when the element can be uniquely re-identified. Clicks warn when a modal covers the target (occluded). Open shadow DOM and iframes are traversed. New tabs, dialogs and downloads are reported in the action result. Repeating the same call three times triggers a loop warning.
| Variable | Default | |
|---|---|---|
AGENT_HEADLESS | 0 | 1 = no window (servers, CI) |
AGENT_CDP_URL | — | Attach to a running Chrome started with --remote-debugging-port=9222 --user-data-dir=… |
AGENT_PROFILE | ~/.agentic-browser/profile | Persistent agent profile (cookies and logins survive restarts) |
AGENT_DOWNLOADS | ~/.agentic-browser/downloads | Download folder |
AGENT_CURSOR_SPEED | 120 | ms per 100 px of cursor travel; 0 = instant |
AGENT_TOOLS | all | core (12 essential tools) or a comma-separated list. Fewer tools means fewer prompt tokens |
AGENT_READONLY | 0 | 1 disables every tool that changes a page |
AGENT_ALLOWED_ORIGINS | — | Domain allowlist, e.g. wikipedia.org,localhost (subdomains included) |
AGENT_DIALOGS | accept | alert/confirm/prompt: accept or dismiss |
AGENT_TRACE | ~/.agentic-browser/trace.jsonl | Audit log of every tool call |
AGENT_CHROME | auto-detected | Path to the browser. Any Chromium browser works: Chrome, Edge (falls back to it automatically), Brave, Chromium |
AGENT_HTTP_PORT / AGENT_TOKEN | 8787 / — | HTTP port and optional Bearer token |
AGENT_RECORDINGS | ~/.agentic-browser/recordings | Where browser_record_stop saves videos |
AGENT_FFMPEG | ffmpeg | Path to ffmpeg for MP4 recordings; none forces the WebM fallback |
browser_screenshot with a ref to pay only for that area.browser_navigate, browser_tabs and the environment variables instead.browser_request_human.Based on the most common complaints about browser agents (stale refs, token bloat, popups, multi-agent conflicts, prompt injection, observability):
browser_batch: several actions in one call.Released under the MIT License. Provided as is, without warranty. You are solely responsible for how you and your agents use this software. That includes compliance with the law and with the terms of service of the sites you automate. Read the full Disclaimer.
Made by Davarion. Not affiliated with Google. "Google Chrome" is a trademark of Google LLC.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y agentic-browser-mcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-davarion-tech-agentic-browser": {
"command": "npx",
"args": [
"-y",
"agentic-browser-mcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referenceagentic-browser-mcpnpmio.github.davarion-tech/agentic-browser works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.