文件历史

提交图

30 次代码提交

作者 SHA1 备注 提交日期
Magnus Müller 7b5357190e Update section title from 'Remote browsers' to 'Free remote browsers' (#64) 2026-04-18 14:50:00 -07:00
Saurav Panda e8454571c2 readme: promote free remote browser tier
Call out the free tier (3 concurrent browsers, no card) in the Remote
browsers section so users know they can try it without setup friction.
2026-04-18 11:59:15 -07:00
Magnus Müller dd95b5c459 [codex] Clarify README code size section (#56)
* Clarify README code size section

* Rename README setup heading
2026-04-18 11:13:33 -07:00
Gregor Žunič f713331aee readme: remove extra spacing (#59) 2026-04-18 10:56:38 -07:00
Gregor Žunič 026666d4cd better readme (#58) 2026-04-18 10:55:33 -07:00
Magnus Müller 0f32cbdb55 Add more spacing between README sections (#44) 2026-04-18 00:32:48 -07:00
Magnus Müller de1c3a4948 Refine README structure section (#31) 2026-04-17 21:59:56 -07:00
Magnus Müller 2c81cc99c5 [codex] Refresh remote debugging screenshot (#30)
* Trim README setup copy

* Refresh remote debugging screenshot
2026-04-17 21:55:58 -07:00
Magnus Müller 6fd06fbe80 Trim README setup copy (#29) 2026-04-17 21:53:35 -07:00
Magnus Müller 7d53eaaa9f Add remote debugging setup image (#28) 2026-04-17 21:50:30 -07:00
Magnus Müller acda8c72a0 Simplify helper surface (#23)
* Simplify helper surface

* Trim common module and restore dispatch key
2026-04-17 21:37:58 -07:00
Magnus Müller 1a083d14df Compress README setup prompt (#21) 2026-04-17 21:00:40 -07:00
Magnus Müller 3193531a28 Split install and runtime docs (#20)
* Split install and runtime docs

* Refine install skill prompts
2026-04-17 20:57:29 -07:00
Gregor Žunič 29c4dfa8e7 changed name 2026-04-17 20:50:33 -07:00
Magnus Müller e7d43ddf37 Tighten README setup prompt (#19) 2026-04-17 19:39:50 -07:00
Magnus Müller a412960746 add spacing between README sections (#16) 2026-04-17 18:23:35 -07:00
Magnus Müller feb7b66557 defer README setup to skill (#15) 2026-04-17 18:21:54 -07:00
Magnus Müller 76cff3b573 update README tagline (#13) 2026-04-17 18:06:09 -07:00
MagMueller b189d0dcf3 tighten README how-it-works bullets 2026-04-17 18:00:38 -07:00
MagMueller 532e2c4c7d tighten README line count wording 2026-04-17 18:00:13 -07:00
MagMueller 444ea762e7 clarify README how-it-works section 2026-04-17 17:59:10 -07:00
MagMueller dc027a5180 reduce README to one example task 2026-04-17 17:56:32 -07:00
MagMueller 4383f7079c refine README setup and examples 2026-04-17 17:55:39 -07:00
MagMueller c20a7d0847 refine setup prompt in README 2026-04-17 17:53:12 -07:00
MagMueller bb40aba44f tighten README to prompt-first flow 2026-04-17 17:49:39 -07:00
MagMueller 94c8ab5aec expand README: setup prompt, features, line counts
- rename "example prompt" → "setup prompt"; coding agent handles clone,
  uv sync, opens chrome://inspect on macOS, walks user through the
  allow-debugging checkbox, verifies connection, navigates to the repo,
  then offers the first task (star the repo)
- setup prompt explicitly tells the agent to read SKILL.md end-to-end first
- add Features section: raw CDP + editable helpers, Browser Use cloud
  for parallel sub-agents (each gets its own live URL), iframe/shadow
  passthrough, http_get bulk fallback
- how-it-works now shows line counts (~580 total) to show how small it is

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 17:41:01 -07:00
MagMueller 751591eaa6 rewrite README for human setup flow 2026-04-17 17:30:15 -07:00
MagMueller 552aed7087 merge AGENTS into SKILL 2026-04-17 17:16:01 -07:00
Gregor Žunič 5ab5a958bb add remote browser support (Browser Use cloud) + multi-daemon + rename to bu (#1)
* add remote browser support via Browser Use cloud + multi-daemon

HARNESLESS_NAME suffixes socket/pid/log — daemons are independent, no
supervisor. start_remote_daemon() creates a Browser Use cloud browser and
launches a daemon attached to it; kill_daemon() stops both. Local Chrome
path is unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* rename env vars to BU_ prefix (shorter, less noisy in tool calls)

HARNESLESS_NAME → BU_NAME
HARNESLESS_CDP_WS → BU_CDP_WS
HARNESLESS_REMOTE_BROWSER_ID → BU_BROWSER_ID

Socket/pid/log files keep the harnesless- prefix on disk so they're
recognizable in /tmp. BROWSER_USE_API_KEY unchanged (external convention).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* rename project from harnesless to bu

Socket/pid/log paths now /tmp/bu-<name>.{sock,pid,log}. pyproject package
name updated, uv.lock regenerated. Slash command now /bu.

Note: the repo directory itself is still named harnesless on disk. Rename
manually (mv harnesless bu) so the absolute paths in docs line up.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 00:28:02 -07:00
Gregor Žunič 2b8be642e0 initial commit: harnesless — LLM-first browser control via CDP
Three-process architecture: daemon.py holds one persistent CDP WebSocket
to the user's running Chrome (via chrome://inspect), short-lived run.py
processes talk to it over a Unix socket, helpers.py is the transparent
layer the LLM reads and edits at will.

Philosophy: no CLI, no fixed API surface. The LLM writes Python blocks
against ~13 tiny helpers (cdp, click, type_text, screenshot, get_dom,
etc.) and edits helpers.py on the fly when a pattern repeats. Coordinate
clicks default because they pass through iframes/shadow DOM/cross-origin
at the compositor level.

Uses cdp-use internally for send_raw only (ignores its 36k lines of
typed wrappers — raw CDP strings tokenize better than typed calls).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-16 17:51:31 -07:00