mrkeyoor.com_
Thu 12 Nov 10:47 UTC
AI Toolsevaluationupdated 25 Oct 2026

BrowserKitten review

BrowserKitten, identified in the README as PawWork_ZhuaZhua, is an unpacked Chrome MV3 extension for controlling the current browser tab through a side-panel agent. The README describes browser actions, guest JavaScript execution, and session artifacts such as sheets, Univer documents, and site HTML. It requires your own OpenAI-compatible model key.

+9stars / 7d
Verdict

BrowserKitten is a candidate for a supervised trial when operating inside an already logged-in Chrome session is the requirement. Its documented permissions and crash-recovery limits deserve attention before page-changing work. Our September 25, 2026 run at commit 1951ed0 did not load Chrome or verify browser actions: it recorded Python harness steps and a pytest invocation that ran no tests. It establishes neither a successful extension installation nor a product test failure.

We ran it

Lab card: what happened when we ran BrowserKittenScreenshot of BrowserKitten (github.com/Player-YN/BrowserKitten)
Install✓ · 6s35 packages · 37 MB
Build✓ · 1s
Tests✗ · 1s0 passed · 0 failed of 0 (pytest)
Known vulns0(pip-audit)
Repo189 files~72,506 lines of source · 2.8 MB · 1 CI workflows · tests dir

Answers from our run

Does BrowserKitten build from source?

Dependencies installed in 6 seconds (35 packages), and the build succeeded in 1 seconds. We cloned commit 1951ed0 into a clean Debian container with 3 CPUs and no project-specific setup.

Do BrowserKitten's tests pass?

No. The project's own test command finished in 1 seconds and reported 0 passed, 0 failed (pytest).

Does BrowserKitten have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use BrowserKitten?

Readers who require a Chrome Web Store installation: the README explicitly says the extension is not on the store.

What are the alternatives to BrowserKitten?

browser-use, Stagehand. BrowserKitten is a candidate for a supervised trial when operating inside an already logged-in Chrome session is the requirement.

Setup3/5Under the visible evidence rubric, the README provides a loading path without an application build, but requires Chrome developer mode, BYOK, and version-specific permissions. Our run did not verify loading.
Docs4/5The supplied README and architecture guide provide actionable setup instructions, test commands, process boundaries, and recovery limits. Deeper documentation is mainly Chinese; documented checks were not executed in our run.
Community1/5The supplied primary-source extracts do not establish contributor participation or support responsiveness. Under the visible rubric, this indicates insufficient evidence, not measured poor support.
Maturity2/5The architecture guide documents missing durable call journaling and manual browser smoke testing. The recorded Python harness run provides no extension-runtime validation.

Who it’s for

Chrome users who want to give an agent selected page content and inspect its work.
Developers comfortable loading an unpacked extension and supplying a model API key.
Readers willing to consult the mainly Chinese architecture guide for persistence, execution, and browser-control limits.

Who it’s NOT for

Readers who require a Chrome Web Store installation: the README explicitly says the extension is not on the store.
Users outside the documented Chrome 135+ setup.
Workflows that require exactly-once browser actions across crashes.
Organizations whose policies prohibit the requested browser permissions or model-key storage in chrome.storage.local.

Setup reality

In our recorded run on September 25, 2026, at commit 1951ed05128b4cb3512cb67859f6fea331b7c23b, the Python-oriented harness reported a successful install step in 6 seconds, 35 dependencies totaling 37 MB, and a successful step labeled build in 1 second. The install tail identifies a Python 3.12.12 environment; the build tail is empty. These records do not establish that Chrome loaded the extension or that an extension build occurred.

The pytest step exited 5 after a rounded 1 second, reporting no tests ran in 0.02s. Its summary recorded 0 passed, 0 failed, and 0 total tests. Neither the documented Node checks nor the Playwright extension smoke test was run.

The README says there is no package.json and no build step. Setup means loading the repository or release folder through Chrome's developer mode, opening the side panel, and adding an OpenAI-compatible API key. Chrome 138+ requires Allow User Scripts for sys.eval or page-identity fetch.

Browser control inside your existing session

BrowserKitten's README describes an unpacked Chrome MV3 extension that treats the already logged-in browser as the agent's working environment. The side panel accepts tasks, the content script handles page selection and actions, and the offscreen runtime runs the agent. Sessions can contain sheets, Univer documents, and site HTML artifacts.

The useful distinction is where the work happens: the agent can act in a browser session that already has access to your accounts. That makes permission review and supervision part of evaluating the product. The supplied sources describe these capabilities; our recorded run did not exercise them.

What our recorded run establishes

Our run took place on September 25, 2026 at 12:30:20.007 UTC against commit 1951ed05128b4cb3512cb67859f6fea331b7c23b, dated September 17, 2026 at 13:29:39 +08:00. The recorded configuration was 3 CPUs, 8 GB of memory, and image ghcr.io/astral-sh/uv:python3.12-bookworm.

The Python-oriented harness marked its install step successful in 6 seconds and recorded 35 dependencies occupying 37 MB. Its install tail identifies Python 3.12.12. A step labeled build returned exit 0 in a rounded 1 second, with an empty recorded tail. Neither result proves that the extension was loaded, packaged, or exercised in Chrome. Dependency download details are not established by the supplied tails.

Pytest exited 5 after a rounded 1 second. The tail says no tests ran in 0.02s, and the recorded summary contains 0 passed, 0 failed, and 0 total tests. This invocation provides no result for the project's documented JavaScript checks. No new execution or complete-log reconciliation was performed, and the parser summary does not establish exhaustive test coverage.

The checkout summary recorded 189 files, approximately 72,506 source lines, 2.8 MB, a tests directory, and 1 CI workflow. These are recorded repository metrics, not measures of reliability or browser performance.

The pip-audit summary recorded an advisory total of 0. Audit coverage is unknown. That result does not establish the security of the extension, its vendored JavaScript, its browser permissions, or a selected model endpoint.

Loading the extension is a separate check

The README explicitly says there is no package.json and no build step. Clone the repository or unpack a release archive, open chrome://extensions, enable developer mode, and choose Load unpacked with the folder containing manifest.json. Open the side panel and supply an OpenAI-compatible API key, which the README says is stored in chrome.storage.local. The project supplies no hosted model.

Chrome 135+ is required. On Chrome 138+, enable Allow User Scripts for sys.eval or page-identity fetch. The README says to close DevTools on the target tab before using sys.cdp, otherwise it returns CDP_BUSY. Restricted pages such as chrome:// and the Web Store return NEED_PAGE.

The README documents these checks:

node --test tests/runtime-regression.test.mjs
node tests/browser-smoke.cjs <path-to-playwright>

The architecture guide gives the broader logic-test command used by CI:

node --test tests/*.test.mjs

It says CI runs those Node checks and release-package shape assertions without installing a browser. The Playwright smoke command is manual and uses a separate Chromium instance with a disposable profile. Our harness ran neither command, so their outcomes remain unverified here.

Release packaging is documented separately:

python scripts/pack_extension.py --zip dist/pawwork.zip

For a practical evaluation, load the extension in a separate profile and run the documented browser smoke check before assigning it account-changing tasks. This is a recommended next step, not work completed in our run.

Permissions and recovery limits

The manifest requests <all_urls> host access plus sidePanel, activeTab, tabs, scripting, storage, alarms, downloads, offscreen, tabGroups, webNavigation, userScripts, and debugger permissions. Guest JavaScript runs in QuickJS without direct chrome.* access, but can request browser operations through sys. The sandbox does not remove the authority of those host operations.

The v1.1.0 release notes describe sys.waitFor, with code, selector, or text conditions and a maximum timeout of 120 seconds, plus guest sleep(ms). These are documented release capabilities, not measured workload results.

The architecture guide states that call registration and tab leases live in service-worker memory. There is no durable call journal or exactly-once execution across crashes. Sessions and artifact blobs use IndexedDB and OPFS, while optional durable tasks store progress and scheduling information. A normal conversation turn does not automatically create a durable task.

If a page-changing call has an unknown outcome after interruption, the guide advises reading the resulting page state before deciding whether to retry. It also documents that screenshots are not atomic snapshots, tab IDs do not identify a document across navigation, a session cannot run concurrent turns, and ordinary and durable-task turns have no hop limit.

Those limits make supervised research and drafting a more suitable starting point than unattended payments or irreversible account changes. This is an editorial recommendation based on the documented boundaries, not a finding that a security flaw or transaction failure occurred.

How to read the ratings

These are editorial evidence ratings on a 1-5 scale: 1 means the supplied evidence is insufficient to establish the criterion, 2 means documented limitations materially constrain it, 3 means the documented path is usable with explicit requirements, 4 means the supplied documentation gives substantial actionable detail, and 5 would require broader corroboration than is available here. They are not benchmark scores. In particular, the community rating reflects missing evidence, not a finding of poor community support.

Setup receives 3 because the documented path avoids an application build but requires developer mode, a model key, and version-specific permissions. Documentation receives 4 for the concrete loading instructions, commands, and architecture boundaries, with deeper material mainly in Chinese. Community receives 1 because the supplied extracts do not establish contributor participation or support responsiveness. Maturity receives 2 because the documentation identifies crash-recovery limits and keeps real-browser smoke testing manual; our run adds no browser validation.

Alternatives

ProjectWhat it isPick it when
browser-use gh↗A browser-agent project with a Python library, CLI, and hosted options.Choose its Python library when you want to run a browser agent from your own application with your choice of model and a local or cloud browser. This compares development approaches; our run did not test either product's browser behavior.
Stagehand gh↗A browser-agent SDK with natural-language actions and browser APIs.Choose it when you want browser automation expressed in application code using browser methods and natural-language actions. The supplied README documents TypeScript, Python, and Go; this is an SDK alternative, not an equivalent unpacked-extension installation.

What people are saying

  1. [velocity-scout] Player-YN/PawWork_ZhuaZhua

Sources

  1. BrowserKitten README
  2. BrowserKitten architecture guide
  3. BrowserKitten v1.1.0 release
  4. BrowserKitten manifest

More ai tools reviews

pocketpal-ai · ohmygame · ooosplat · dexter · oh-my-ppt · Agentero · the whole board →