Model or dataset
browser-use/browser-harness avatar
browser-use/browser-harness

Browser Harness: A CDP Bridge That Lets Your LLM Write Its Own Browser Helpers

Browser Harness | Self-healing harness that enables LLMs to complete any task.

17,569 stars1,720 forksPythonMIT

At a glance

What is it?
Browser Harness connects an LLM to a real browser through a single editable CDP websocket, and the agent writes missing helpers as it works. The core idea is sound for personal automation, but it carries real setup and maintenance trade-offs.
Who is it for?
Adopt Browser Harness if you are an individual developer who wants a coding agent to drive your real, logged-in browser for personal tasks, and you are comfortable with the agent writing Python helpers in your workspace. Do not adopt it if you need parallel, managed browser sessions or if you cannot tolerate the agent modifying local files.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 4 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What Browser Harness Actually Solves

Browser Harness attacks a specific problem: the gap between an LLM's ability to reason about a browser task and its ability to execute that task reliably. Most agents rely on pre-built browser automation libraries that break when a page changes or when a task requires an unusual interaction. Browser Harness takes a different route. It connects the LLM directly to your real browser through a single editable CDP websocket. The agent does not just use existing helpers; it writes new ones when it finds a gap. The README's example is a file upload: the agent wants to upload a file, discovers the helper is missing, writes it, and completes the task. This is aimed at developers who use coding agents like Claude Code or Codex and want those agents to handle personal, logged-in browser work. It is not for teams that need a fleet of managed browsers out of the box.

The Self-Healing Mechanism: How the Harness Learns

The mechanism is visible in the README's diagram. The agent starts with a task, like wanting to upload a file. It looks in its workspace, specifically in agent-workspace/agent_helpers.py, for a helper that can perform that action. If the helper is missing, the agent writes it. That new helper becomes part of the agent's workspace and is available for future tasks. The source code in src/browser_harness/ stays protected, meaning the core harness is not modified by the agent. Only the user's local helper file grows. This is the self-healing part: the harness improves with every task because the agent accumulates custom helpers. The README claims the agent writes missing helpers as it works, so the harness improves with every task. That is a concrete feedback loop, not a vague promise. The design keeps the core stable while letting the agent extend its own capabilities.

Getting It Running: The Setup Prompt and CDP Connection

Setup is not a pip install and go. The README provides a setup prompt designed to be pasted into Claude Code or Codex. The prompt instructs the agent to install or upgrade browser-harness to the latest stable version with uv using Python 3.12, register the skill from browser-harness skill, and connect it to the browser. It also asks about local browser recordings, defaulting to no and preserving the existing preference on upgrades. The agent then opens chrome://inspect/#remote-debugging, and on first setup the user must tick a checkbox so the agent can connect. That checkbox is a manual step, likely Chrome's remote debugging approval. The actual installation is delegated to the coding agent, which is a deliberate choice: the agent sets up its own tool. The README points to install.md and SKILL.md for details, but those files are not included in the provided material, so the exact commands beyond the prompt are not visible here. What is clear is that the connection goes through a CDP websocket, and the browser must be running with remote debugging enabled.

The MCP Server: A Second Way to Drive the Browser

Beyond the direct CDP connection, the repository includes mcp_server.py, which exposes the browser control helpers as MCP tools over stdio. This means any MCP client, such as Claude Code, Devin, or Cursor, can drive the browser without writing a second CDP layer. The README points to docs/MCP.md for setup and client configuration, but that file is not in the provided material. The existence of this server is significant because it decouples the harness from a single agent. You can use the same helper set from different tools, as long as they speak MCP. This is a pragmatic move: it makes the harness a reusable browser backend rather than a one-off script. However, it also adds a second integration surface. You now have two ways to connect, and each has its own configuration and failure modes. The MCP path is likely more stable for clients that already support MCP, but it is an extra layer of complexity.

Where It Falls Short: Limitations and Wrong Use Cases

The most obvious limitation is that the harness is tied to your local, real browser. That means it is not designed for parallel work. The README explicitly says to scale with Browser Use Cloud when you want many browsers in parallel, with live previews, proxies, stealth, and CAPTCHA solving. So if your task requires dozens of sessions at once, Browser Harness is the wrong tool. Another limitation is the dependency on a coding agent. The setup prompt is written for Claude Code or Codex, and the whole workflow assumes you have one of those agents installed and configured. If you do not use those tools, you have to reverse-engineer the setup. The README also mentions that the agent writes helpers in its local workspace, which means the agent can modify files in your project. That is a security consideration: you are giving the agent write access to your codebase. The README says the core source stays protected, but the workspace is not. Finally, the project is young. The latest release is v0.1.10, and the last push was August 2026, so it is under active development, but early versions often have breaking changes.

Alternatives: Browser Use Cloud and Traditional Automation

The README itself points to the most direct alternative: Browser Use Cloud. That is a hosted service that provides many browsers in parallel, with features like live previews, proxies, stealth, and CAPTCHA solving. The difference in approach is fundamental. Browser Harness uses your local browser and your local agent, and it learns by writing helpers. Browser Use Cloud is a managed service where you send tasks and get results, without maintaining a local browser connection. You trade control and privacy for scale and convenience. Another alternative is traditional browser automation frameworks like Playwright or Selenium, which do not involve an LLM at all. Those tools require you to write scripts manually, and they do not self-heal. Browser Harness is unique in that it combines an LLM with a real browser and lets the agent extend its own toolkit. If you need deterministic, repeatable automation, a traditional framework is more reliable. If you need parallel execution, Cloud is the path. Browser Harness sits in the middle: personal, logged-in, and adaptive.

Maintenance, License, and Upgrade Cost

The project is licensed under MIT, which means you can use, modify, and distribute it freely, as long as you preserve the copyright notice. That is a permissive license, so there are no copyleft obligations. The maintenance cost is tied to the project's release cadence. The repository shows releases every few weeks: v0.1.8 in July 2026, v0.1.9 in August, and v0.1.10 later in August. That is a fast pace, which means you will likely want to upgrade often to get bug fixes and new features. However, the setup prompt includes a line about preserving your existing preference on upgrades, which suggests the project cares about upgrade smoothness. Still, with a young project, breaking changes are possible. The README mentions that the skill is registered from browser-harness skill, and that install.md exists for troubleshooting, so you have a documented path for recovery. The real maintenance burden is not the code but the helpers. As your agent writes more helpers, you need to review them for correctness and security, because they run in your browser with your credentials. That is a cost that grows with usage.

Editorial conclusion

Adopt Browser Harness if you are an individual developer who wants a coding agent to drive your real, logged-in browser for personal tasks, and you are comfortable with the agent writing Python helpers in your workspace. Do not adopt it if you need parallel, managed browser sessions or if you cannot tolerate the agent modifying local files. Before adopting, verify the CDP connection flow in install.md, confirm that your Python 3.12 setup matches the recommended uv command, and review SKILL.md to understand exactly what the agent is allowed to do with your browser. The project is young, with v0.1.10 as the latest release, so check the changelog for breaking changes before each upgrade.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community notes

Community notes