Skip to main content
BVDNET
Arnhem · websites & automationBVDNET
Tools & Frameworks

Agent Browser Protocol (ABP)

The Agent Browser Protocol (ABP) is a modified Chrome browser for AI agents that pauses the web page after every step, so the agent never acts on a moving page.

Also known as: ABP, agent-browser-protocol

The Agent Browser Protocol (ABP) is a modified version of the Chrome browser for AI agents that carry out tasks on websites, such as looking up an order in a supplier's portal. After every click or keystroke, ABP waits until the page has stopped changing, takes a screenshot and then pauses the page. The agent always decides its next step from a page that holds still.

What exactly is ABP?

ABP is an open-source project by developer Han Wang, on GitHub since January 2026 under a BSD licence, with about 490 stars in September 2026 (repository). The software is a build of Chromium, the open-source base of Google Chrome, with an MCP server and a REST API built into the browser engine. MCP (Model Context Protocol) is the standard through which AI agents call tools, and the README shows how to connect ABP to Claude Code, Codex CLI and OpenCode. The REST API lets other software send the same actions as plain web requests. What ABP defines is a contract between agent and browser: one request, one completed step.

How does it work?

The README starts from a mismatch: web browsing is "continuous and asynchronous", while language-model agents "reason step-by-step". Most automation stacks, it says, let agents race a live browser and "patch over the mismatch with waits and retries". ABP turns each request into one step:

  1. The agent sends an action, such as a click at a position on the screen or text to type.
  2. ABP injects it as real input through Chromium's own input system.
  3. It waits until the engine considers the page settled.
  4. It returns a screenshot with the cursor visible and a log of events such as a new tab, a dialog or a download.
  5. It pauses JavaScript and the page's clock until the next request, so timers stop and even Date.now() stands still.

The author puts the overhead at about 100 ms per action, screenshots included. In the README's own comparison, Playwright and Selenium do not pause JavaScript between actions and send synthetic input events. On request, ABP draws boxes around clickable or typeable elements in the screenshot, and it records every action with before and after screenshots in a SQLite database, which the README offers as training data for vision models.

Illustration: a lantern-lit maze of blocks where one figure takes notes and another inspects a tile with a magnifying glass
With ABP the agent inspects a page that holds still between two steps.

How well does it work?

ABP's headline figure is 90.53% on Online Mind2Web, a benchmark of 300 real tasks on 136 live websites (Xue et al., 2025). The author's results repository (3 March 2026) shows the conditions. With Claude Opus 4.6 as the model, ABP passed 258 of 285 tasks, after 15 tasks that human evaluators judged impossible were left out. On all 300 tasks the score is 86.00%. The author writes that this would top the public leaderboard, where the previous leader stood at 78.7%. These results are self-reported, and the per-task results and the test harness are public, so others can rerun them.

What are the limits?

  • You run a separate browser next to your agent. The README advises switching off a Playwright MCP server first, because the tool names clash.
  • ABP's answers are built around screenshots, and the OpenCode instructions ask for a model with vision.
  • ABP is meant to run on your own machine. The API listens on localhost, and ABP blocks real mouse and keyboard input by default.

Two other approaches to the same problem, Lumen and WebMCP, are compared with ABP in the post What is deterministic agent web automation?

Example

Suppose a travel agency lets an agent check a hotel's availability on a booking site every morning. The agent asks ABP to open the page and gets a screenshot only once the page has settled, with the loading spinner frozen where it was. It clicks the date field. ABP injects the click, waits, pauses the page again and returns the next screenshot, plus an event if a dialog opened. While the model works out its next step, nothing on the page moves.