HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
browser-use
browser-harness
Python2026–2026
browser-use / browser-harness

browser-harness

Let Claude Code, Codex or Cursor use your real Chrome, logged in as you. One prompt to set up. Open source, MIT.

2Distinct people
3Mentions
0Explicit recommenders
19.1KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Let Claude Code, Codex or Cursor use your real Chrome, logged in as you. One prompt to set up. Open source, MIT.

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 1:49:46 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by 6-hour interval3 dated mentions

Observed mentions: 2026-04-20 01:05:25 UTC to 2026-04-24 22:23:29 UTC.

012026-04-20 00:00:00 UTC to 2026-04-20 06:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 commentsApr 20, 00:002026-04-20 06:00:00 UTC to 2026-04-20 12:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-04-20 12:00:00 UTC to 2026-04-20 18:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-04-20 18:00:00 UTC to 2026-04-21 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-04-21 00:00:00 UTC to 2026-04-21 06:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-04-21 06:00:00 UTC to 2026-04-21 12:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-04-21 12:00:00 UTC to 2026-04-21 18:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-04-21 18:00:00 UTC to 2026-04-22 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-04-22 00:00:00 UTC to 2026-04-22 06:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-04-22 06:00:00 UTC to 2026-04-22 12:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsApr 22, 06:002026-04-22 12:00:00 UTC to 2026-04-22 18:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-04-22 18:00:00 UTC to 2026-04-23 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-04-23 00:00:00 UTC to 2026-04-23 06:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-04-23 06:00:00 UTC to 2026-04-23 12:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-04-23 12:00:00 UTC to 2026-04-23 18:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-04-23 18:00:00 UTC to 2026-04-24 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-04-24 00:00:00 UTC to 2026-04-24 06:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-04-24 06:00:00 UTC to 2026-04-24 12:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-04-24 12:00:00 UTC to 2026-04-24 18:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments2026-04-24 18:00:00 UTC to 2026-04-25 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsApr 24, 18:00

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Apr 20, 00:002026-04-20 00:00:00 UTC2026-04-20 06:00:00 UTC110
Apr 20, 06:002026-04-20 06:00:00 UTC2026-04-20 12:00:00 UTC000
Apr 20, 12:002026-04-20 12:00:00 UTC2026-04-20 18:00:00 UTC000
Apr 20, 18:002026-04-20 18:00:00 UTC2026-04-21 00:00:00 UTC000
Apr 21, 00:002026-04-21 00:00:00 UTC2026-04-21 06:00:00 UTC000
Apr 21, 06:002026-04-21 06:00:00 UTC2026-04-21 12:00:00 UTC000
Apr 21, 12:002026-04-21 12:00:00 UTC2026-04-21 18:00:00 UTC000
Apr 21, 18:002026-04-21 18:00:00 UTC2026-04-22 00:00:00 UTC000
Apr 22, 00:002026-04-22 00:00:00 UTC2026-04-22 06:00:00 UTC000
Apr 22, 06:002026-04-22 06:00:00 UTC2026-04-22 12:00:00 UTC000
Apr 22, 12:002026-04-22 12:00:00 UTC2026-04-22 18:00:00 UTC000
Apr 22, 18:002026-04-22 18:00:00 UTC2026-04-23 00:00:00 UTC000
Apr 23, 00:002026-04-23 00:00:00 UTC2026-04-23 06:00:00 UTC000
Apr 23, 06:002026-04-23 06:00:00 UTC2026-04-23 12:00:00 UTC000
Apr 23, 12:002026-04-23 12:00:00 UTC2026-04-23 18:00:00 UTC000
Apr 23, 18:002026-04-23 18:00:00 UTC2026-04-24 00:00:00 UTC000
Apr 24, 00:002026-04-24 00:00:00 UTC2026-04-24 06:00:00 UTC000
Apr 24, 06:002026-04-24 06:00:00 UTC2026-04-24 12:00:00 UTC000
Apr 24, 12:002026-04-24 12:00:00 UTC2026-04-24 18:00:00 UTC110
Apr 24, 18:002026-04-24 18:00:00 UTC2026-04-25 00:00:00 UTC101

What Hacker News says

3 sources
> Paste into Claude Code or Codex: > Set up https://github.com/browser-use/browser-harness for me. > Read `install.md` first to install and connect this repo to my real browser. Then read `SKILL.md` for normal usage. Always read `helpers.py` because that is where the functions are. When you open a setup or verification tab, activate it so I can see the active browser tab. After it is installed, open this repository in my browser and, if I am logged in to GitHub, ask me whether you should star it for me as a quick demo that the interaction works — only click the star if I say yes. If I am not logged in, just go to browser-use.com. Is the the new "curl {url} | sh"?
In Show HN: Browser Harness – Gives LLM freedom to complete any browser task
gregpr07·Apr 24, 2026Submission

Show HN: Browser Harness – Gives LLM freedom to complete any browser task

Hey HN, We got tired of browser frameworks restricting the LLM, so we removed the framework and gave the LLM maximum freedom to do whatever it's trained on. We gave the harness the ability to self correct and add new tools if the LLM wants (is pre-trained on) that. Our Browser Use library is tens of thousands of lines of deterministic heuristics wrapping Chrome (CDP websocket). Element extractors, click helpers, target managemenet (SUPER painful), watchdogs (crash handling, file downloads, alerts), cross origin iframes (if you want to click on an element you have to switch the target first, very anoying), etc. Watchdogs specifically are extremely painful but required. If Chrome triggers for example a native file popup the agent is just completely stuck. So the two solutions are to: 1. code those heuristics and edge cases away 1 by 1 and p
Read the rest
revent them 2. give LLM a tool to handle the edge case As you can imagine - there are crazy amounts of heuristics like this so you eventually end up with A LOT of tools if you try to go for #2. So you have to make compromises and just code those heuristics away. BUT if the LLM just "knows" CDP well enough to switch the targets when it encounters a cross origin iframe, dismiss the alert when it appears, write its own click helpers, or upload function, you suddenly don't have to worry about any of those edge cases. Turns out LLMs know CDP pretty well these days. So we bitter pilled the harness. The concepts that should survive are: - something that holds and keeps CDP websocket alive (deamon) - extremely basic tools (helpers.py) - skill.md that explains how to use it The new paradigm? SKILL.md + a few python helpers that need to have the ability to change on the fly. One cool example: We forgot to implement upload_file function. Then mid-task the agent wants to upload a file so it grepped helpers.py, saw nothing, wrote the function itself using raw DOM.setFileInputFiles (which we only noticed that later in a git diff). This was a relly magical moment of how powerful LLMs have become. Compared to other approaches (Playwright MCP, browser use CLI, agent-browser, chrome devtools MCP): all of them wrap Chrome in a set of predefined functions for the LLM. The worst failure mode is silent. The LLM's click() returns fine so the LLM thinks it clicked, but on this particular site nothing actually happened. It moves on with a broken model of the world. Browser Harness gives the LLM maximum freedom and perfect context for HOW the tools actually work. Here are a few crazy examples of what browser harness can do: - plays stockfish https://x.com/shawn_pana/status/2046457374467379347 - sets a world record in tetris https://x.com/shawn_pana/status/2047120626994012442 - figures out how to draw a heart with js https://x.com/mamagnus00/status/2046486159992480198?s=20 You can super easily install it by telling claude code: `Set up https://github.com/browser-use/browser-harness for me.` Repo: https://github.com/browser-use/browser-harness What would you call this new paradigm? A dialect?
134 points · Open discussion
gregpr07·Apr 20, 2026Submission

Show HN: Self-healing browser harness via direct CDP

Creator of browser-use library here. At Browser Use we spend a lot of time thinking about the bitter lesson of agentic frameworks. A few days we did an experiment that combines replacing Playwright with CDP and giving the LLM complete freedom (building with autoresearch from ground up) to do whatever it knows from pretraining. I think this is the simplest way to give an AI control of a real browser: raw CDP, and let the agent write its own tools. ~600 lines total. Example: I forgot to implement upload_file(). Mid-task, the agent noticed, wrote the function, and uploaded the file. I found out when I read the git diff. I haven't found a task that doesn't work yet - but extremely happy to be proven wrong. Give it a shot. Open to criticism on CDP, agent frameworks, browser use, or whatever.
3 points · Open discussion

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.