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.
At a glance
- What is it?
- Browser Harness connects an LLM to a real browser over the Chrome DevTools Protocol (CDP), 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 1 day 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 November 13, 2026, and from our analysis. They are not legal advice.
Star history
- browser-use/browser-harness19,067 ★ · +2,756
| Repository | 2026-07-28 | 2026-11-13 |
|---|---|---|
| browser-use/browser-harness | 16.3k | 19.1k |
2,756 Stars in the last 108 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial 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 over the Chrome DevTools Protocol (CDP). 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. 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 package ships a `browser-harness-mcp` command, backed by an `mcp_server` module and an optional `mcp` extra in pyproject.toml. The README lists any MCP client as able to drive the browser through it, and points Cursor users to an MCP config instead of the setup prompt. 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 offers Browser Use Cloud as a hosted way to try the harness, and `.env.example` notes that an API key is only needed for remote browsers. 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, with an MCP config for Cursor, 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.13, and the last push was November 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 Browser Use's hosted service. 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. The README's own comparison table lists other tools that let an agent drive your real Chrome (Playwright MCP, Chrome DevTools MCP, agent-browser, Claude in Chrome); what sets Browser Harness apart is that the agent extends its own toolkit by writing helpers. 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 frequent releases: v0.1.11 on 2026-09-03, then v0.1.12 and v0.1.13 on 2026-09-04. 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.13 as the latest release, so check the release notes for breaking changes before each upgrade.
Frequently asked questions
what is browser harness
browser-harness is a small MIT licensed Python package that connects an LLM to your real browser over the Chrome DevTools Protocol (CDP). The agent writes missing helpers as it works, so the tooling improves with every task.
What does a browser harness do?
It gives a coding agent direct control of the browser you already run, so tasks like opening a profile, finding the latest posts and downloading files can run without you touching the UI. The package, which sits at version 0.1.13 with an Alpha development status, keeps its own source protected while the agent authors helpers in a local workspace.
What are the skills in the browser Harness?
Two files carry the knowledge: `install.md` connects the agent to your browser, and `SKILL.md` teaches the browser workflow. The agent registers the skill through the `browser-harness skill` command, and the tree also holds `skills/`, `interaction-skills/` and a `.claude-plugin/` directory alongside an `AGENTS.md`.
how to use browser harness
Paste the setup prompt into Claude Code or Codex. The agent installs the latest stable version with uv, registers the skill, opens `chrome://inspect/#remote-debugging` and asks you to tick the checkbox on first setup. If setup or connection fails, the prompt points the agent at install.md.
Which LLM is best for browser automation?
The project does not recommend a model. Its README benchmark ran every tool with the same agent, Codex CLI 0.144.6 with GPT-6 Luna, and the setup prompt is written for Claude Code or Codex. Over MCP, any MCP client can use the harness through `browser-harness-mcp`.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/browser-use-browser-harness)Star history chart for your README
[](https://hysenlabs.com/projects/browser-use-browser-harness)Was this useful?