Extended fork of browser-harness — adds per-user shadow cache (autotrace+replay), auto-codification of skills, bh-policy.toml trust layer, EU-friendly local-only mode, multi-Chromium fan-out, and a community skill registry pipeline. Drop-in compatible with browser-harness v0.3 + much more.
Project description
Browser Harness ♞
Connect an LLM directly to your real browser with a thin, editable CDP harness. For browser tasks where you need complete freedom.
One websocket to Chrome, nothing between. The agent writes what's missing during execution. The harness improves itself every run.
● agent: wants to upload a file
│
● agent-workspace/agent_helpers.py → helper missing
│
● agent writes it agent_helpers.py
│ + custom helper
✓ file uploaded
You will never use the browser again.
Install (v0.5.1+)
This fork is published to PyPI as browser-harness-extended — the original
browser-harness name is reserved on PyPI. The Python import name is unchanged
(import browser_harness still works).
pip install browser-harness-extended
# or via the GitHub tag (no PyPI required):
pip install "git+https://github.com/Abhishekchhetri020/browser-harness@v0.5.1"
What's new in v0.4.0 — per-user shadow cache (
autotracerecords,replay_skilldeterministically replays at zero LLM cost), auto-codification of recurring flows into committable.pyskills after 3 successful replays,bh-policy.tomltrust layer with per-host glob allowlists, secret-scanned skill registry pipeline (publish_skilldry-run +gh-CLI live), multi-Chromium fan-out (launch_browserfor Brave/Edge/Arc/Chromium variants), and an EU-friendlyBH_LOCAL_ONLY=1mode that asserts no harness-initiated network egress. Full notes in CHANGELOG.md. Public data-flow contract in docs/data-flow.md. Trust-layer schema in bh-policy.toml.example.
Setup prompt
Paste into Claude Code or Codex:
Set up https://github.com/browser-use/browser-harness for me.
Read `install.md` and follow the steps to install browser-harness and connect it to my browser.
The agent will open chrome://inspect/#remote-debugging. Tick the checkbox so the agent can connect to your browser:
Click Allow when the per-attach popup appears (Chrome 144+):
See agent-workspace/domain-skills/ for example tasks.
Free Browser Use Cloud browsers
Stealth, sub-agents, or headless deployment.
Browser Use Cloud free tier: 3 concurrent browsers, proxies, captcha solving, and more. No card required.
- Grab a key at cloud.browser-use.com/new-api-key
- Or let the agent sign up itself via docs.browser-use.com/llms.txt (setup flow + challenge context included).
Architecture (v0.4.0 — ~3.5k lines across the core package)
| File | Purpose |
|---|---|
src/browser_harness/helpers.py |
Primitive surface auto-imported into -c scripts |
src/browser_harness/daemon.py |
Long-lived CDP holder + 500-event ring buffer, one per BU_NAME |
src/browser_harness/admin.py |
Daemon lifecycle, doctor, Browser-Use Cloud session admin |
src/browser_harness/snapshot.py |
AX-tree snapshot → r1/r2/... refs |
src/browser_harness/observation.py |
Network + console event drain |
src/browser_harness/_audit.py |
NDJSON audit log at ~/.browser-harness/audit.log |
src/browser_harness/_trace.py |
Per-user shadow cache: autotrace, replay_skill, list_traces |
src/browser_harness/_codify.py |
Auto-promote N-times-replayed traces → committable .py skills |
src/browser_harness/_policy.py |
bh-policy.toml trust layer; per-host glob allowlists |
src/browser_harness/_skills.py |
Skill registry: list / validate / package / publish |
src/browser_harness/_browsers.py |
Multi-Chromium detect / find_free_port / launch_browser |
src/browser_harness/_egress.py |
BH_LOCAL_ONLY egress gate (EU-friendly mode) |
src/browser_harness/mcp_server.py |
MCP tool surface for clients that prefer JSON-RPC over -c |
src/browser_harness/run.py |
The browser-harness CLI |
src/browser_harness/_ipc.py |
Token-authed unix socket / TCP loopback |
agent-workspace/agent_helpers.py |
Helper code the agent edits |
agent-workspace/domain-skills/<host>/ |
Per-host skill folders (markdown + auto-codified .py) |
bh-policy.toml.example |
Trust-layer schema you can copy and edit |
docs/data-flow.md |
Public data-flow contract — what the harness reads, where it goes |
docs/registry-template/ |
Drop-in template for standing up a community skill registry repo |
179 unit tests. MIT (inherited from upstream browser-use/browser-harness).
Contributing
PRs and improvements welcome. The best way to help: contribute a new domain skill under agent-workspace/domain-skills/ for a site or task you use often (LinkedIn outreach, ordering on Amazon, filing expenses, etc.). Each skill teaches the agent the selectors, flows, and edge cases it would otherwise have to rediscover.
- Skills are written by the harness, not by you. Just run your task with the agent — when it figures something non-obvious out, it files the skill itself (see SKILL.md). Please don't hand-author skill files; agent-generated ones reflect what actually works in the browser.
- Open a PR with the generated
agent-workspace/domain-skills/<site>/folder — small and focused is great. - Bug fixes, docs tweaks, and helper improvements are equally welcome.
- Browse existing skills (
github/,linkedin/,amazon/, ...) to see the shape.
If you're not sure where to start, open an issue and we'll point you somewhere useful.
Domain skills
Set BH_DOMAIN_SKILLS=1 to enable agent-workspace/domain-skills/ — community-contributed per-site playbooks goto_url surfaces by domain. Contribute via PR.
The Bitter Lesson of Agent Harnesses · Web Agents That Actually Learn
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file browser_harness_extended-0.5.5.tar.gz.
File metadata
- Download URL: browser_harness_extended-0.5.5.tar.gz
- Upload date:
- Size: 68.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
65dc79be49f28778edf5fb3d214bed7229660f3161a469806dda0e0d8902bea6
|
|
| MD5 |
db4952088754a61311641e15b26b1c04
|
|
| BLAKE2b-256 |
ec3b25888f4d0994a38e41132dc1b6cc014c68c16b511f7a0be9b9b0ee617ffb
|
File details
Details for the file browser_harness_extended-0.5.5-py3-none-any.whl.
File metadata
- Download URL: browser_harness_extended-0.5.5-py3-none-any.whl
- Upload date:
- Size: 74.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d88bde769d5561ee9628044cde82f49b5ab0d0bdaf8258dc8f38fa056bd6bdb6
|
|
| MD5 |
8988d9db3d478d6abcf7fe4f9f62eb86
|
|
| BLAKE2b-256 |
8cfcd85a6b308c61c8a74b88e2341a3d13af036ecb2c3f3e0a58e5d31efa1d66
|