Browser Harness

πŸš€ Description

browser-use/browser-harness β€” minimal editable CDP harness. One websocket to Chrome, nothing between. The agent writes what’s missing during execution and the harness improves itself every run.

Same org as Browser Use and Video Use. Where Browser Use is a full framework, Browser Harness goes the opposite direction: a thin shell where the agent writes its own helpers. Embodies the β€œbitter lesson of agent harnesses” β€” stop over-engineering, let the agent fill in gaps as it works.

🧩 Features

  • ~1k lines across 4 core files
  • install.md β€” first-time install and browser bootstrap
  • SKILL.md β€” day-to-day usage
  • src/browser_harness/ β€” protected core
  • agent-workspace/agent_helpers.py β€” helper code the agent edits
  • agent-workspace/domain-skills/ β€” reusable per-site playbooks the agent builds (LinkedIn, Amazon, GitHub…)
  • Set BH_DOMAIN_SKILLS=1 to enable surfacing of community-contributed per-domain skills
  • Works with Claude Code, Codex, any agent with shell access
  • Connects via chrome://inspect/#remote-debugging (Chrome 144+ allow popup)

🎨 Self-healing pattern

agent: wants to upload a file
agent-workspace/agent_helpers.py β†’ helper missing
agent writes it β†’ + custom helper
βœ“ file uploaded

Skills are written by the harness, not by you. When the agent figures something non-obvious out, it files the skill itself. Don’t hand-author skill files β€” agent-generated ones reflect what actually works in the browser.

Reasoning for

For browser tasks where you need complete freedom β€” no opinionated framework boxing you in. Lets a competent coding agent build a per-site automation library on the fly. Pair with Browser Use Cloud for stealth/proxies when needed.

Alternatives considered

  • Browser Use β€” fuller framework, opinionated agent loop
  • Playwright with custom selectors β€” no learning, no self-improvement
  • Stagehand / Skyvern β€” agentic browser frameworks with more structure

πŸ“– Further reading


Template: tool