Skip to content
STACK IT FAST

Jev Ultrafast

Curated OSSClassicBrowser Agent2-5 people

Audited from github.com/browser-use/jev-ultrafast

Jev Ultrafast is Browser Use's open-source browser agent that drives a real Chrome by letting TypeSafe's Jev choose an operation and an element from an indexed page snapshot, with a small LLM used only to type text.

Language
Python
License
MIT
Running for
1 month
Team
2-5 people

Why this architecture

Asking Jev for the operation and speculative per-operation targets in one request turns each browser step into a single constrained choice, while code validates the observed node and a small LLM writes only typed text.

Tech stack by layer

7 technologies · audited Oct 2, 2026
Frontend & UI
  • JavaScriptsnapshot.js runs in the page to read visible controls into an indexed table; static/app.js drives the local inspector UI.
Backend & APIs
  • PythonAgent loop, model calls and browser execution in the jev_ultrafast package (Python 3.12 or newer).
  • httpxHTTP/2 client used to call TypeSafe and the text model directly; no TypeSafe SDK is declared.
Infrastructure & Deploy
  • Browser HarnessConnects to a real Chrome over remote debugging; installed as a pinned dependency.
  • uvDependency management and runner (uv sync, uv run jev) with a committed uv.lock.
  • pytestOffline tests in tests/test_agent.py; live scripts that make paid API calls are kept separate in scripts/.
Tooling, Testing & Ops
  • JevTypeSafe System One model that picks the operation and the target element for every step in one request.
  • Text LLMA small OpenAI-compatible model (configured via OpenRouter in the example) that writes text only for TYPE_TEXT steps.
  • AGENTS.mdInstructions for coding agents working on the repository.

Jev Ultrafast architecture diagram

Open SVG
Jev Ultrafast architecture diagramGoal and start URL → Agent loop (goal); Agent loop → Page snapshot (observe); Page snapshot → Chrome; Agent loop → Jev (op + targets); Agent loop → Text model (TYPE_TEXT only); Agent loop → Chrome (execute)CLIENTSSERVICESEXTERNALGoal and start URLlibrary · CLI · inspectorAgent loopPythonPage snapshotsnapshot.jsChromeBrowser HarnessJevTypeSafe System OneText modelOpenAI-compatibleobservegoalop + targetsTYPE_TEXT onlyexecute
How the main components of Jev Ultrafast connect, drawn from the audited repository.
Diagram as text
  • Goal and start URL (library · CLI · inspector) → Agent loop (Python): goal
  • Agent loop (Python) → Page snapshot (snapshot.js): observe
  • Page snapshot (snapshot.js) → Chrome (Browser Harness)
  • Agent loop (Python) → Jev (TypeSafe System One): op + targets
  • Agent loop (Python) → Text model (OpenAI-compatible): TYPE_TEXT only
  • Agent loop (Python) → Chrome (Browser Harness): execute

Key architectural decisions

5 decisions
  1. 01

    Choose, do not generate: an indexed action space

    Every observation becomes a numbered table of visible controls (snapshot.js). Jev picks one of the operations CLICK, TYPE_TEXT, SELECT, SCROLL_UP, SCROLL_DOWN, WAIT, DONE or BLOCKED, and a target index from that table, so model output never becomes selectors, coordinates or JavaScript.

  2. 02

    Speculative target questions in one round trip

    model.py asks the operation and a target question per compatible operation (click_target, type_text_target, select_target) in the same TypeSafe request. Code uses only the target that matches the chosen operation, which the README describes as two decisions in one network round trip.

  3. 03

    A small LLM only for typed text

    When the chosen operation is TYPE_TEXT, a separate small model writes the value through an OpenAI-compatible helper; the README states its output must parse as a small JSON object before it is typed, and a generated value is reused on a stale-page retry only if the helper input is unchanged.

  4. 04

    Structured state instead of screenshots

    The default loop sends no screenshots: one browser call reads visible controls, names, values and visible text atomically, and offscreen article bodies and footers are left out so they do not fill the model context. Screenshots are used only by the opt-in inspector.

  5. 05

    Code owns validation and execution

    browser.py resolves each selected index to the observed DOM node, rechecks page freshness and click occlusion before acting, and caps post-action waits (for example 200 ms for combobox suggestions), so a wrong or stale decision is caught in code rather than trusted.

How Jev Ultrafast is built

How Jev Ultrafast is structured

Jev Ultrafast is a small Python package, which its README describes as "small enough to read":

File Job
jev_ultrafast/agent.py The full loop and the hand-off to the text helper
jev_ultrafast/snapshot.js Atomic DOM snapshot with indexed controls and freshness guards
jev_ultrafast/browser.py Browser connection, current geometry and execution
jev_ultrafast/model.py Operation and target questions, plus text generation
jev_ultrafast/questions.py Model instructions
jev_ultrafast/demo.py Local inspector served on port 8766 (uv run jev)

examples/ holds a general run.py and a flights.py task that independently verifies its outcome. scripts/ holds measurement, recording and guard-check tools, and docs/ holds the design notes and performance data.

Backend & APIs

The agent is Python 3.12 with two runtime dependencies in pyproject.toml: browser-harness, pinned to an exact version, which connects to Chrome, and httpx with HTTP/2. There is no TypeSafe SDK. The agent calls Jev and the text model directly over HTTP. The text model is any OpenAI-compatible endpoint; the example configuration uses an OpenRouter key.

Each step asks one TypeSafe request for the operation plus speculative target questions, one per compatible operation. The README points to TypeSafe's speculative fan-out pattern for this. Only supported operations and compatible elements are offered, and native dropdown options carry an observed index.

Data & persistence

There is no database. Each run keeps its state in memory: the goal, the current element table and the executed steps. Measurement files (docs/measurement.json, docs/flights-measurement.json) and recordings are written by scripts. Credentials and raw traces are git-ignored.

Build, test & deploy

  • Development commands from the README: uv run ruff check ., uv run pytest, node --check on the two JavaScript files, and uv build.
  • Tests are offline. scripts/check_guards.py exercises real controls in a local browser without model calls, while live examples and recording scripts make paid API calls.
  • There are no CI workflows in the repository.

What to copy (and what not to)

Copy:

  • Enumerate the action space in code and let the model pick an index. Then model output can never become a selector or a script.
  • Speculative questions in one request. Ask for every possible target up front and use only the one that matches the chosen operation.
  • Use an LLM only where generation is unavoidable (typed text), and validate its output.
  • Report measurements honestly. The README states sample sizes and limits next to the headline numbers.

Don't copy blindly:

  • The README lists what the DOM reader does not handle yet: shadow roots, frames, canvas, uploads, pop-up tabs, nested scrolling and arbitrary keyboard widgets.
  • Owned tabs share the existing Chrome profile. Production agents should run in an isolated profile or container.

Rules for building your own: Jev browser agent. Data on 648 open-source Jev repos: Jev for developers.

Sources & repo audit

Audited
Oct 2, 2026
Commit
1231850
License
MIT

Independent analysis of repository at github.com/browser-use/jev-ultrafast. Spotted an inaccuracy? Use the claim form to request a correction.

Maintainer? Add the architecture badge to your README
architecture: stackitfast
[![Architecture on STACK IT FAST](https://stackitfast.com/badge/jev-ultrafast.svg)](https://stackitfast.com/project/jev-ultrafast)
Use this stack

Scaffold it with your agent

Paste this prompt into Claude Code, Cursor, Windsurf or AGY to start a project with Jev Ultrafast's architecture.

  1. 1Copy the promptThe full markdown spec, with every layer and decision.
  2. 2Open your AI toolClaude Code, Cursor, Windsurf or Copilot, in a new repo.
  3. 3Paste and scaffoldUse it as the first instruction; review before you ship.
use-this-stack.md · 59 lines · 6.7 KB
# MISSION: Scaffold "Jev Ultrafast" Production Architecture
You are an expert Senior Staff Software Architect and Full-Stack Engineer. Your mission is to scaffold and implement a production-grade, highly reliable, and modular codebase following the proven architecture of **Jev Ultrafast**.
---
## 1. PROJECT SPECIFICATIONS & BENCHMARK
- **Reference Architecture**: Jev Ultrafast
- **What It Does**: Jev Ultrafast is Browser Use's open-source browser agent that drives a real Chrome by letting TypeSafe's Jev choose an operation and an element from an indexed page snapshot, with a small LLM used only to type text.
- **Domain & Category**: Browser Agent
- **Production Scale**: 2-5 people
- **Development Mode**: CLASSIC
- **Architectural Rationale**: Asking Jev for the operation and speculative per-operation targets in one request turns each browser step into a single constrained choice, while code validates the observed node and a small LLM writes only typed text.
- **Live Website Reference**: https://browser-use.com/ultrafast
- **Source Repository**: https://github.com/browser-use/jev-ultrafast
---
## 2. PRODUCTION TECH STACK
- **Full Stack Array**: Python, Jev, JavaScript, Chrome, uv, pytest, Ruff
- **Primary Language(s)**: Python, HTML, JavaScript, CSS
- **License of the reference repo**: MIT
- **Frontend**: JavaScript — snapshot.js runs in the page to read visible controls into an indexed table; static/app.js drives the local inspector UI.
- **Backend & APIs**: Python — Agent loop, model calls and browser execution in the jev_ultrafast package (Python 3.12 or newer).; httpx — HTTP/2 client used to call TypeSafe and the text model directly; no TypeSafe SDK is declared.
- **Infrastructure & deploy**: Browser Harness — Connects to a real Chrome over remote debugging; installed as a pinned dependency.; uv — Dependency management and runner (uv sync, uv run jev) with a committed uv.lock.; pytest — Offline tests in tests/test_agent.py; live scripts that make paid API calls are kept separate in scripts/.
- **Tooling, testing & ops**: Jev — TypeSafe System One model that picks the operation and the target element for every step in one request.; Text LLM — A small OpenAI-compatible model (configured via OpenRouter in the example) that writes text only for TYPE_TEXT steps.; AGENTS.md — Instructions for coding agents working on the repository.
---
## 3. KEY ARCHITECTURAL DECISIONS (audited from https://github.com/browser-use/jev-ultrafast @ 1231850)
1. **Choose, do not generate: an indexed action space**: Every observation becomes a numbered table of visible controls (snapshot.js). Jev picks one of the operations CLICK, TYPE_TEXT, SELECT, SCROLL_UP, SCROLL_DOWN, WAIT, DONE or BLOCKED, and a target index from that table, so model output never becomes selectors, coordinates or JavaScript.
2. **Speculative target questions in one round trip**: model.py asks the operation and a target question per compatible operation (click_target, type_text_target, select_target) in the same TypeSafe request. Code uses only the target that matches the chosen operation, which the README describes as two decisions in one network round trip.
3. **A small LLM only for typed text**: When the chosen operation is TYPE_TEXT, a separate small model writes the value through an OpenAI-compatible helper; the README states its output must parse as a small JSON object before it is typed, and a generated value is reused on a stale-page retry only if the helper input is unchanged.
4. **Structured state instead of screenshots**: The default loop sends no screenshots: one browser call reads visible controls, names, values and visible text atomically, and offscreen article bodies and footers are left out so they do not fill the model context. Screenshots are used only by the opt-in inspector.
5. **Code owns validation and execution**: browser.py resolves each selected index to the observed DOM node, rechecks page freshness and click occlusion before acting, and caps post-action waits (for example 200 ms for combobox suggestions), so a wrong or stale decision is caught in code rather than trusted.
---
## 4. NON-NEGOTIABLE ARCHITECTURAL GUARDRAILS
1. **Monorepo & Modular Separation**:
   - Structure as a Turborepo monorepo with strict package boundaries:
     - `apps/web`: Application UI, routing, layouts, and server endpoints.
     - `packages/ui`: Shared design tokens, CSS variables, and Radix UI primitive components.
     - `packages/db`: Database schemas, client singleton, declarative migrations, and seed scripts.
     - `packages/config`: Shared TypeScript, ESLint, and build configurations.
2. **Strict Type Safety & Zero `any` Policy**:
   - Enable `strict: true`, `noImplicitAny: true`, and `strictNullChecks: true`.
   - Validate ALL external inputs, API request bodies, and query parameters with **Zod** schemas before execution.
3. **Frontend & Rendering Guidelines**:
   - Isolate interactive UI state to leaf components. Keep core pages lightweight and performant.
4. **Design System & Aesthetics**:
   - Keep every color, radius, shadow and font in a single token file (CSS variables) and consume tokens everywhere; never hardcode hex values in components.
   - Prefer crisp 1px borders and one subtle shadow scale over blurry default shadows. Pair one sans-serif for body/headings with one monospace for tags, badges, metrics, and code.
5. **Data Layer & Reliability**:
   - Write declarative schema definitions with foreign keys, composite indexes on queried filters, and automated timestamp triggers.
   - Use connection pooling and prepared statements for serverless database execution.
---
## 5. STEP-BY-STEP SCAFFOLDING ROADMAP
- **Phase 1: Workspace & Root Config**: Initialize package manager, monorepo configuration (`turbo.json`, `tsconfig.base.json`, `package.json`).
- **Phase 2: Database Schema & Client**: Set up the data layer: client, connection pool, models, and migration scripts.
- **Phase 3: Design Tokens & UI Primitives**: Build accessible `Button`, `Input`, `Card`, `Badge`, and layout wrappers inside `packages/ui`.
- **Phase 4: Core Application Routes & Handlers**: Implement primary authentication, user session handling, and application routes.
- **Phase 5: Quality Assurance & Build Verification**: Run `tsc --noEmit`, ESLint, Prettier, and smoke test suites to ensure zero compilation or runtime errors.
---
## 6. EXECUTION INSTRUCTIONS
1. Review all specifications, architectural guardrails, and stack choices above.
2. Present the full monorepo directory tree structure.
3. Systematically generate the complete, production-ready codebase according to the 5-phase roadmap above — starting with the root workspace setup, followed by the database schema, UI design system package, and full-stack application routes until the repository is fully scaffolded and ready to run.
Scaffolded something with this prompt?
Would you pick this stack for a browser agent project?

Frequently asked about Jev Ultrafast

What is Jev Ultrafast built with?

Jev Ultrafast is a Python 3.12 package that calls TypeSafe's Jev model and a small text model over httpx, reads pages with an in-browser snapshot.js script, and drives a real Chrome through Browser Harness. It uses uv, pytest and Ruff, and declares no TypeSafe SDK.

How does Jev Ultrafast decide what to click?

Each step turns the page into a numbered table of visible controls. One TypeSafe request asks Jev for the operation (CLICK, TYPE_TEXT, SELECT, SCROLL, WAIT, DONE or BLOCKED) and, speculatively, a target index for each compatible operation; code then uses the target that matches the chosen operation.

How fast is Jev Ultrafast?

The README reports a 7,073 ms Google Flights search from Zurich to London, a Wikipedia task in 2.798 s and a local hotel search in 1.896 s, and states these are a few repeats on one browser profile rather than a general reliability benchmark.

Does Jev Ultrafast use an LLM?

Only for typing. A small OpenAI-compatible model writes text when the chosen operation is TYPE_TEXT; every other decision comes from Jev, which returns typed choices rather than generated text.

One email a month: new deep dives and stack trends

New source-audited architectures, head-to-head comparisons and the monthly stack report. No spam, unsubscribe anytime.

use-this-stack.md