Skip to content
MrJev

Jev for Chrome

Manifest V3 port of jev-ultrafast that drives the tab you are already looking at, keeping the same observation format and execution rules.

View on GitHub →

Hands-on review

An MV3 port of jev-ultrafast that drives your current tab. Password values stay out of the snapshot, and Enter is a choice the model has to make.

Good for

  • Driving a page you are already signed in to, without a second browser
  • A snapshot that leaves password and hidden field values out
  • Stepping one decision at a time and exporting the trace

Watch out for

  • It needs `debugger` and `<all_urls>`, which is most of your browser
  • Visible form values and 6,000 characters of page text go out each step
  • Community port; thirteen stars, one author

Tested Sep 21, 2026 at a6ddd3a60810 · Chromium in Docker with the built extension loaded, on a login page we wrote; its 86 tests

How we reviewed this: we built the extension, loaded it into Chromium in a container, pointed it at a sign-in page we wrote with a password, a hidden field and a pre-filled email, and read the snapshot its content script produces. We ran its test suite. We did not point it at anyone else’s site.

What it does

A Manifest V3 extension that drives the tab you are already looking at: you type a goal in the popup, and each step the model picks the next click, keystroke or dropdown value from what is on the page. It is a port of jev-ultrafast — same observation format, same questions, same execution rules — with the README saying so in the first paragraph.

Using the tab you already have is the point. No second browser, no separate profile, no re-authentication: if you are signed in, so is it.

What the snapshot contains

We gave it a login form with three inputs and read what its content script produced:

on the page in the snapshot
<input type="password" value="CANARY_PASSWORD_9"> not present
<input type="hidden" value="CANARY_HIDDEN_7"> not present
<input type="email" value="ada@example.com"> present, value included
page text "Sign in\nEmail\nPassword\nSign in\nForgot your password?…"

Password and hidden values never leave; the field is still in the action space as something to fill, it just does not carry its contents. That is the correct division, and it is the exact failure we found in jev-voice-browser, where a filled password was sent as its element’s label.

Visible values do go out, along with up to 6,000 characters of page text and the last ten actions. On a page where you have already typed something private into an ordinary text box, that is the thing to remember.

Enter is a decision, not a side effect

This is the detail we most wanted to check. In jev-browser we found that typing always pressed Enter, which submitted a form the task had said not to submit. Here the README says Enter is never implicit, and the action space bears it out. With the email field focused and holding text, a new control appears next to the others:

fill:Email
click:Sign in
click:Reset it
key: Press Enter in the focused field "Email" to submit it
wait:Wait for the page to update

The model has to choose that control. Typing alone does nothing further. It is one line in an action space and it is the difference between filling a form and sending it.

The permissions are the price

"permissions": ["storage", "activeTab", "scripting", "tabs", "debugger"],
"host_permissions": ["<all_urls>"],
"content_scripts": [{"matches": ["<all_urls>"]}]

debugger is there so input is dispatched through Chrome’s DevTools protocol — a real click or keystroke rather than a synthetic event, which is how nanobrowser, Taxy and browser-use do it too. The README explains that Chrome does not allow debugger to be optional, and that you can switch it off in Options and fall back to synthetic events. Chrome shows an info bar on the tab while it is attached.

It is an honest trade and it is written down, but it is still an extension that can attach a debugger to any tab you have open. Install it deliberately, and keep the Options page’s kill switch in mind.

Engineering

Eighty-six tests across seven files, all passing. Thirty commits, MIT, created 18 September, one author, and a comparison table in the README that names its differences against jev-ultrafast, jev-browser and browser-use rather than claiming to beat them. The extension builds with Vite in under a minute.

Verdict

The most careful of the browser extensions in this batch: the risky values are excluded at the source, the one action that sends a form is a separate decision, and the permission it cannot avoid is explained rather than buried.

If you want an agent in the browser you already use, this is the one to read first. Just be clear-eyed about what <all_urls> plus debugger means, and prefer the Step button over Run the first few times.

For the upstream it ports see jev-ultrafast; for an agent with its own browser and cited answers, fastbrowse.

See how it compares with other tools in Best Jev tools, tested hands-on.

Review updated Sep 21, 2026. Numbers quoted from the project are its author's own; we don't publish our own measurements of Jev.

More in Browser & Computer Use

jev-ultrafast

★ 24k▲ 400

browser-use/jev-ultrafast

Fast browser agent from Browser Use. Jev decides each step and which element to act on; a small model is called only when text needs to be typed. The authors report a full Google Flights search in about 7.1 seconds.

PythonReviewed

agent-desktop

★ 8.5k▲ 6.6k

vercel-labs/agent-desktop

macOS desktop automation over accessibility trees. Since v0.9.2, its jev-desktop scripts let Jev choose which control to operate and which action to take.

RustReviewed

typesafe-computer-use

★ 1.3k▲ 16

awlevin/typesafe-computer-use

macOS computer use without sending screenshots to a large model. The screen is read deterministically and Jev picks the next action.

PythonReviewed

Get new Jev projects every week

New Jev releases, pricing changes, and the best new projects, once a week. No spam; unsubscribe anytime.

Powered by Buttondown. See our privacy policy.