browser-use/jev-ultrafast
jev-ultrafast is an open-source browser automation agent (from Browser Use) that represents each page as an indexed element table and uses a 'TypeSafe' policy to speculatively predict both the next operation (CLICK, TYPE_TEXT, SELECT, SCROLL, WAIT, DONE, BLOCKED) and its target in a single network round trip, only invoking a small LLM (e.g. inception/mercury-2.5 via OpenRouter) to generate text when the operation is TYPE_TEXT. The repo includes a local inspector UI, Chrome automation via a 'Browser Harness' tool, offline tests, and published before/after benchmarks showing a Google Flights search dropping from a median 9.45s to 7.09s and browser protocol calls from 1,092 to 101 across repeated runs.
What it claims
Jev is a browser agent whose action space is rebuilt on every observation as a numbered table of visible controls (role, name, value). A single TypeSafe request returns an operation plus speculative targets for every operation type. Only the target matching the chosen operation executes. A small LLM is called only to write the text for TYPE_TEXT. The headline result is a Zürich → London one-way search on Google Flights in 7,073 ms. Timing starts after the initial page observation and includes model calls, text generation, stale decisions and loading waits. The policy contains no site-specific scripts or prepared field strings.
How it works
flowchart LR
P[Page snapshot] --> T[Element table]
T --> R[One TypeSafe request]
R --> O{Operation}
O -->|CLICK| C[use click_target]
O -->|TYPE_TEXT| Y[use type_text_target]
Y --> L[Small LLM writes JSON text]
O -->|SELECT| S[use select_target]
C --> V[Executor revalidates node]
L --> V
S --> V
V --> B[Browser]
B --> PEach target head lists only elements compatible with its operation. The unused heads are discarded. The engineering choices the README credits for the speed:
- Structured state only. The default loop takes no screenshots. Only visible text is sent, so offscreen article bodies and footers stay out of the context.
- One browser call per snapshot. Controls, names, values and text are read atomically, and the agent keeps references to the real DOM nodes.
- Capped waits. After typing into a combobox it waits for suggestions for up to 200 ms. Other actions wait at most two animation frames or 50 ms.
- Focus emulation. Hidden tabs keep rendering without switching Chrome's visible tab.
- Text reuse. A generated value is reused on a stale-page retry only if the text-helper input is unchanged.
Safety boundary: model output never becomes selectors, coordinates, shell commands or JavaScript. Every target resolves to an observed node. The executor rechecks page freshness and click occlusion, and rejects covered controls. Text-helper output must parse as a small JSON object before it is typed.
Evidence
- Before/after comparison. Six alternating runs used identical models and settings. Both versions passed 3/3. The median task time fell from 9.450 s to 7.092 s (−25%), and median browser protocol calls fell from 1,092 to 101. The authors state this is "three repeats of one task on one browser profile, not a general reliability benchmark."
- Other tasks. The same policy opened a requested Wikipedia article in 2.798 s and passed a local hotel search/filter task in 1.896 s.
- Details. Failures, source hashes and measurement boundaries are in
performance.md.
How to use it
Running it requires a TYPESAFE_API_KEY and a TEXT_MODEL_API_KEY. The example configuration uses an OpenRouter key with inception/mercury-2.5, reasoning disabled. Gemini, GLM and DeepSeek can be used through the OpenAI-compatible text helper.
git clone https://github.com/browser-use/jev-ultrafast.git
cd jev-ultrafast
uv sync
cp .env.example .env
# Add TYPESAFE_API_KEY and TEXT_MODEL_API_KEY.
uv run jevThe inspector runs at http://127.0.0.1:8766 and shows operation and target probabilities. "Choose next" pauses before each action executes. Chrome connects via Browser Harness, and you must allow remote debugging when prompted. If the connection fails, run:
uv run browser-harness --doctorPython API:
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 it with uv run --env-file .env python your_script.py.
Tests and costs:
- The test suite is offline (
uv run pytest). scripts/check_guards.pychecks real controls in a local browser without model calls.- Live examples and recording scripts make paid API calls.
Limits
- DONE is not proof of success. A DONE choice still needs independent outcome verification. The Flights example verifies the result itself, but it does not select or book a flight.
- Partial DOM coverage. The DOM reader handles common HTML and ARIA controls, not the full accessible-name specification.
- Unsupported in this MVP: shadow roots, frames, canvas, uploads, pop-up tabs, nested scrolling and arbitrary keyboard widgets.
- Shared browser profile. Agent-owned tabs share your existing Chrome profile.
- Thin evidence. The speed numbers cover one task, three repeats and one profile.
- Hosted dependency. The policy depends on the TypeSafe API (a separate key). The page does not say how that model is hosted, what it costs, or what licence applies.
Organisations named here
- Browser Use
- OpenRouter
- Inception
- Jev
- TypeSafe
Technologies named here
- mercury-2.5
- Jev
- TypeSafe
- Gemini
- GLM
- Browser Harness
- DeepSeek
- Browser Use Cloud
- uv
- ruff
- pytest
- OpenRouter
- JevBench
- Python
Techniques named here
- Speculative fan-out
- Dynamic indexed action space
- Target validation before execution
- Capped post-action waits
- Focus emulation for hidden tabs
- Stale text-request reuse
- Atomic single browser-call snapshot
Related in agents



