Jev Browser Bridge
Enables browser automation for Google Chrome, allowing agents to control existing tabs, open new task-related tabs in the signed-in Chrome profile, and perform actions such as clicking, typing, selecting, scrolling, waiting, and verifying page state.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Jev Browser BridgeOpen a new tab to Google Flights and find flights from New York to London"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Jev Browser Bridge — Browser Automation for Windows
A Windows adaptation of Jev Ultrafast for Chrome and Edge, with extension-based browser access and MCP integration for Codex, Grok, and other agents.
The Browser Use Cloud waitlist is open. Get early access to ultrafast browser agents in the cloud. Join the waitlist →
A browser agent with a dynamic, indexed action space.
Give it one goal. TypeSafe's Jev picks an operation and an element. A small LLM writes text only when the operation is TYPE_TEXT.
Zürich → London on Google Flights in 7.1 seconds. One natural-language goal, actual text generation, and loading waits included.
This KofanLabs fork adds a Windows MCP server and a Chrome extension bridge for controlling existing tabs and opening task-related tabs in your signed-in Chrome. It does not use Chrome remote debugging, copy browser profiles, or launch a separate browser.
Windows quick start
Requirements: Windows 10/11, Google Chrome, Python 3.12+, and a TypeSafe Jev API key (or a Vercel AI Gateway key with access to Jev).
Download or clone this repository.
Double-click
Install-Windows.cmd.Double-click
Settings.cmd, choose Save/change API key, and paste the key into the hidden prompt.Open
chrome://extensions, enable Developer mode, choose Load unpacked, and select this repository'sextensionfolder.Add the generated
mcp-config.jsonto Codex, Grok, Claude Desktop, or another MCP host, then restart that host.
The API key is encrypted with Windows DPAPI and is only readable by the Windows
account that saved it. The extension connects to an authenticated loopback bridge
on 127.0.0.1. See WINDOWS.md for complete Windows instructions and
SECURITY.md for the trust boundary.
Watch the MP4 · Measurements · Read the loop
Related MCP server: Real Browser MCP
The action space
Every observation produces a new element table:
[1] button Change ticket type · Round trip
[2] combobox Where from? · San Francisco
[3] combobox Where to? · empty
[4] textbox Departure · empty
...The operations are CLICK, TYPE_TEXT, SELECT, SCROLL_UP, SCROLL_DOWN, WAIT, DONE, and BLOCKED. Only supported operations and targets are offered.
one TypeSafe request
┌───────────────────────────┐
page → element table → operation │
│ click_target │
│ type_text_target │
│ select_target, if present │
└─────────────┬─────────────┘
use the matching target
│
CLICK [7] ─────┤──→ browser
TYPE_TEXT [3] ─────┘
↓
small LLM → text → browserTarget questions are speculative. If the operation is CLICK, only click_target can execute. Two decisions, one network round trip. Each target head contains only compatible elements. Native dropdown choices carry an observed element/option index.
There are no site-specific action scripts or prepared field strings in the policy. The Flights example supplies a goal and independently verifies the outcome. The screenshot renderer adds labels afterward; it does not drive the browser.
Try it
git clone https://github.com/kofanlabs/jev-browser-chrome.git
cd jev-browser-chrome
uv sync
cp .env.example .env
# Add TYPESAFE_API_KEY and TEXT_MODEL_API_KEY.
uv run jevOpen http://127.0.0.1:8766 and click Start demo → Run automatically. The inspector shows numbered elements, operation probabilities, target probabilities, and executed actions. Choose next pauses before execution.
The Windows MCP integration connects through the included Jev Browser Bridge
Chrome extension. It controls HTTP(S) tabs and can open new ones in the connected
profile without Chrome remote debugging. Use jev_browser_open_tab(url, active=true)
with extension 1.0.2 or newer, then list tabs after loading before starting a run.
The upstream demo can still use
Browser Harness.
TEXT_MODEL_API_KEY is an OpenRouter key in the example configuration. The current demo uses inception/mercury-2.5 with reasoning disabled. Gemini, GLM, and DeepSeek can also use the OpenAI-compatible text helper; configure the appropriate model, endpoint, and reasoning setting.
Use the library
from jev_ultrafast import Agent
with Agent(
"https://www.google.com/travel/flights?hl=en",
"Find one-way flights from Zurich to London on September 20, 2026, "
"for one adult in economy. Stop when matching flight options are visible.",
) as agent:
for state in agent.run():
print(state["elapsed_ms"], state["status"])Run with uv run --env-file .env python your_script.py. The same policy can run a different task:
uv run --env-file .env python examples/run.py \
--url https://en.wikipedia.org/wiki/Main_Page \
--goal 'Find and open the Wikipedia article about Gödel’s incompleteness theorems.'uv run --env-file .env python examples/flights.py --keep-open performs the flight search, checks the actual route/date/results, and saves its trace. It does not select or book a flight.
Why it moves
One request per decision cycle. Operation and target heads share the same observed state.
No screenshots in the default agent loop. Jev consumes structured state. The inspector opts into screenshots; the video uses a separate continuous screencast.
One browser call per snapshot. Read visible controls, their names, values, and text atomically. Keep references to the actual DOM nodes.
Validate the selected target. Clicks check the document, form values, target, and nearby context. Animation alone does not force another prediction. Resolve current geometry and reject covered controls before input.
Wait for useful state. After typing into a combobox, wait for visible suggestions, capped at 200 ms. Other interactions get at most two animation frames or 50 ms. These reads happen after execution is logged.
Keep hidden tabs rendering. Focus emulation prevents background animation throttling without switching Chrome's visible tab.
Send visible text. Offscreen article bodies and footers do not fill the model context.
Reuse an interrupted text request. A generated value survives a stale-page retry only if the entire text-helper input is unchanged.
Every executed target is resolved from an observed node. The executor rechecks page freshness and click occlusion. Model output never becomes selectors, coordinates, shell commands, or executable JavaScript. Text-helper output must parse as a small JSON object before typing.
Small enough to read
File | Job |
The complete loop and text-helper handoff | |
Atomic DOM snapshot, indexed controls, freshness guards | |
Browser connection, current geometry, execution | |
Dynamic operation/target heads and text generation | |
Model instructions | |
Local inspector |
Evidence and limits
The current video is a 7,073 ms Google Flights run. Timing starts after initial page observation and includes model calls, generated text, browser work, stale decisions, and loading waits. A fresh independent check verifies the one-way setting, Zürich, London, September 20, 2026, and visible flight options. The video plays at 1×, with no opening hold and a 0.5-second final hold.
In six alternating runs with identical models and settings, both versions passed 3/3. Median task time went from 9.450 s → 7.092 s, a 25% reduction; median browser protocol calls went from 1,092 → 101. This is three repeats of one task on one browser profile, not a general reliability benchmark.
The same policy opened the requested Wikipedia article in 2.798 s and passed a local hotel search/filter task in 1.896 s. Runs, failures, source hashes, and measurement boundaries are in performance.md.
A DONE choice still requires independent outcome verification. The DOM reader handles common HTML and ARIA controls, not the full accessible-name specification. Shadow roots, frames, canvas, uploads, pop-up tabs, nested scrolling, and arbitrary keyboard widgets remain outside this MVP. Owned tabs share the existing Chrome profile.
Development
uv run ruff check .
uv run pytest
node --check jev_ultrafast/static/app.js
node --check jev_ultrafast/snapshot.js
node --test tests/test_extension_tabs.cjs
uv buildTests are offline. uv run python scripts/check_guards.py checks real controls in a local browser without model calls. Live examples and recording scripts make paid API calls. scripts/record_flights.py <new-folder> captures original browser timestamps; scripts/render_demo.py <recording-folder> renders that verified run at 1× and crops out the Google account strip. Credentials and raw traces stay ignored.
Browser Use · Browser Harness · TypeSafe speculative fan-out
This fork is based on
browser-use/jev-ultrafast at
commit 1231850a0bf1a0c0341fe408ef1668dbbfdfac46 and remains available under
the original MIT license.
This server cannot be deployed
Maintenance
Related MCP Connectors
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
Hosted real Google Chrome MCP with per-user persistent state. Navigate, click, type, screenshot.
- TabfleetOAuthcom.tabfleet
Launch, inspect, control, and share isolated cloud browsers for your agents.
Stealth web browser for agents: search, fetch, click, download and type in persistent MCP sessions.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables MCP clients to drive a real, logged-in Chrome browser for web automation tasks like navigation, clicking, typing, and screenshotting.4 npm1MIT
- AlicenseNot gradedqualityDmaintenanceEnables browser automation over MCP using a real Chrome browser with existing profile, supporting real tabs, downloads, cookies, and RPA workflows.83 npmMIT
- FlicenseNot gradedqualityDmaintenanceDrive your real, signed-in Chrome browser from any MCP client, enabling browser automation such as navigation, clicking, typing, and screenshots through standard MCP tools.1-
- AlicenseNot gradedqualityBmaintenanceEnables MCP-compatible agents to securely control the user's already authenticated Chrome browser via explicit tab authorization and DOM-based actions.1Apache 2.0