01 / DECISION DEMO
One browser decision cycle
Give Jev the current page and your goal. It suggests the next browser action for you to inspect. This page is simulated; nothing is clicked automatically.
Your browser decisions will appear here.
Run Jev to see the next suggested action.
How it works
- 1Observe the page
Use the page elements shown here.
- 2Jev suggests an action
Inspect what it proposes.
- 3Your browser code decides whether to act
No action runs in this demo.
Implementation
04 / THE LOOP
Decisions sit inside a deterministic loop
Across these implementations, browser code owns observation, execution, recovery, and stop policy. The exact action set and browser connection vary by project.
- 01Goal
A natural-language instruction.
- 02Observe
Browser code reads the current page.
- 03Index actions
Controls become a bounded action space.
- 04Jev decides
One request returns typed decisions.
- 05Validate
Code checks freshness and policy.
- 06Execute
Browser code performs one allowed action.
- 07Verify
The host checks the resulting page and outcome.
00 / CHOOSE A PATH
Which Jev browser setup should I use?
Start with what you already have. The four paths below share a decision idea, but they are separate products with different runtimes and responsibilities.
Browser Decision Demo
Inspect a real Jev operation, click target, sensitivity decision, and probability distribution without installing a browser runtime.
Try the simulated decisionBrowser Use Jev Ultrafast
Run a purpose-built local browser agent with a dynamic indexed action space and a separate small model for text.
See standalone setup Source repository (opens in a new tab)Jev Browser
Give a Node package a task and URL. Use it from an MCP client, invoke its CLI, or import its navigation library.
See MCP and CLI setup Source repository (opens in a new tab)Jev Browser Use
Add a Skill or plugin to an existing Codex Computer Use connection so Jev can handle repeated control choices while Codex keeps the broader task.
See Codex setup Source repository (opens in a new tab)| Path | Use it when | Real browser | Host required | Interface |
|---|---|---|---|---|
| Playground demo | You want to inspect one decision | No — simulated observation | Web page | Interactive demo |
| Jev Ultrafast | You want a standalone local agent | Yes | Python, uv, Chrome | Local UI or Python |
| Jev Browser | You want a reusable browser tool | Yes | Node.js 20+ | MCP, CLI, library |
| Jev Browser Use | You already use Codex Computer Use | Yes, through that connection | Node.js 22+, Codex | Skill or plugin |
02 / REAL BROWSER SETUP
Run Jev in a real browser
Each project below is maintained independently. Read its current README before installing, keep API keys in local configuration, and begin with a low-risk task you can verify.
Browser Use Jev Ultrafast
This Python project observes Chrome controls as a fresh, indexed action space. Jev selects an operation and the compatible target. A separately configured small text model writes text only for TYPE_TEXT.
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 locally.
uv run jevOpen http://127.0.0.1:8766. Its Browser Harness connects to Chrome and is installed by uv sync; run uv run browser-harness --doctor if the browser connection needs attention.
Jev Browser
The @jkudish/jev-browser package drives its own Playwright Chromium browser. It requires Node.js 20+ and a TypeSafe API key; text entry can optionally use a configured typing provider.
Codex MCP · ~/.codex/config.toml
[mcp_servers.jev-browser]
command = "npx"
args = ["-y", "@jkudish/jev-browser"]Claude Code MCP
claude mcp add jev-browser -- npx -y @jkudish/jev-browserDirect CLI
npx -y @jkudish/jev-browser run "Find the newest release and stop on it" https://github.com/jkudish/jev-browser/releasesThe same package exports navigate for JavaScript and TypeScript callers.
Jev Browser Use
This community Skill bridges Jev into Codex Computer Use. It needs Node.js 22+, Codex, and an existing Computer Use connection to Chrome or the in-app browser. It does not install a separate browser driver.
npx skills add wy-coliney/jev-browser-use -g -a codex -yOr install the repository’s native Codex plugin:
codex plugin marketplace add wy-coliney/jev-browser-use
codex plugin add jev-browser-use@jev-browser-useChoose the Skill or the plugin so Codex does not receive duplicate instructions. Restart Codex after plugin installation.
Read the Jev Browser Use README (opens in a new tab)03 / RESPONSIBILITY SPLIT
Codex + Jev: who does what?
Jev handles repeated control decisions
- Read the current accessibility text and offered controls.
- Choose navigation, click, toggle, or scroll actions.
- Return control when the loop finishes or needs help.
Codex keeps the task and verifies it
- Interpret the user’s broader goal and constraints.
- Enter text, inspect images, and handle unsupported controls.
- Check the result and manage approvals or sensitive steps.
Jev Browser Use does not replace Codex. It keeps repetitive, mechanical control choices inside a focused loop while Codex retains the goal, context, visual judgment, and final verification.
05 / WHAT JEV DECIDES
Jev chooses among bounded actions
Jev returns typed decisions with probabilities rather than selectors, coordinates, JavaScript, or prose. The surrounding project defines the action space and decides which answer can be executed.
What to do next
A bounded action such as click, type, select, scroll, wait, done, or blocked, depending on the implementation.
Which observed control
An identifier from the compatible elements in the current observation, consumed only for the selected operation.
Whether execution may proceed
Freshness, permissions, confirmation, and completion checks remain deterministic application responsibilities.
Text entry differs by project. Jev itself makes the typed decision; Jev Ultrafast delegates free-text generation to a separate small text model, Jev Browser can use an optional typing provider, and Jev Browser Use leaves text entry to Codex.
06 / REAL JEV BROWSER OPTIONS
Three projects, three integration boundaries
Browser Use Jev Ultrafast
A standalone Python agent and local inspector. It owns its browser loop and connects to Chrome through Browser Harness.
Jev Browser
A Node package that owns a Playwright browser loop and exposes it through MCP, a CLI, or a callable library.
Jev Browser Use
A Skill/plugin that uses an already connected Codex Computer Use browser and hands control back to Codex for text, visual work, and verification.
These are independent open-source projects. Jev Playground does not maintain them, and their interfaces may change.
07 / BUILD IT YOURSELF
Build the decision layer yourself
This site’s demo sends one structured browser state plus operation, click_target, and sensitive questions in a single experimental_evaluate call. It illustrates the decision contract without providing browser observation or execution.
import { createGateway, experimental_evaluate as evaluate } from "ai";
const gateway = createGateway({ apiKey: process.env.AI_GATEWAY_API_KEY });
const state = [
"USER GOAL",
"Open the Browser Use Jev Ultrafast GitHub repository.",
"",
"CURRENT PAGE",
"URL: https://www.example-search.test/search?q=jev+browser+agent",
'Title: Search results for "jev browser agent"',
"",
"OBSERVED ELEMENTS",
'e1 · textbox · Search = "jev browser agent"',
"e2 · link · Introducing System One Models and Jev — TypeSafe AI",
"e3 · link · browser-use/jev-ultrafast — GitHub",
"e4 · link · Jev on Vercel AI Gateway",
"e5 · button · Sign in",
].join("\n");
const { answers } = await evaluate({
model: gateway.evaluationModel("typesafe-ai/jev"),
state,
questions: {
operation: {
type: "choice",
instructions: "What operation should the browser agent take next?",
criteria: {
CLICK: "Activate an observed link, button, or control.",
TYPE_TEXT: "Enter or replace text in an editable field.",
SCROLL_DOWN: "Scroll down to reveal more of the page.",
SCROLL_UP: "Scroll up toward earlier content.",
WAIT: "Wait for the page to load or update.",
DONE: "The user's goal is already satisfied on this page.",
BLOCKED: "No supported operation can advance the goal.",
},
},
click_target: {
type: "choice",
instructions: "If the next operation is CLICK, which element is the best target?",
criteria: {
e1: "textbox — Search",
e2: "link — Introducing System One Models and Jev — TypeSafe AI",
e3: "link — browser-use/jev-ultrafast — GitHub",
e4: "link — Jev on Vercel AI Gateway",
e5: "button — Sign in",
},
},
sensitive: {
type: "boolean",
instructions:
"Does the requested action involve a destructive or sensitive side effect?",
},
},
});
// Application code consumes the decision — Jev never executes anything.
const operation = answers.operation.choice;
if (operation === "CLICK") {
const target = answers.click_target.choice;
// Re-check page freshness, resolve the observed element, apply policy,
// then perform the click with your own browser executor.
} else {
// Handle TYPE_TEXT / SCROLL / WAIT / DONE / BLOCKED in your own code.
}The application consumes click_target only when operation is CLICK. Every other operation ignores that speculative head.
This demo proposes bounded browser actions; the host must validate, authorize, and execute them.
Limits & privacy
08 / PRODUCTION GUARDS
What real deployments still need
- Stale page and DOM checksRe-observe before acting when the page can change.
- Only execute offered actionsResolve targets from the current action space, never from free model text.
- Operation-specific targetsIgnore target heads whose operation was not selected.
- Separate confirmation policyGate destructive or sensitive actions outside the model.
- Deterministic permissionsUse allowlists and scoped credentials for irreversible actions.
- Independent completion checksTreat DONE as a proposal until the host verifies the outcome.
09 / LIMITATIONS & SAFETY
Know what each layer can prove
- This page’s demo uses a simulated observation and does not drive a browser.
- Jev probabilities are model outputs, not guarantees of correctness or safety.
- Dynamic pages can invalidate an observation before an action executes.
- Real browser coverage varies for frames, canvas, uploads, pop-ups, and custom controls.
- Browser content sent to a provider can contain private data; delegate only authorized data.
- Text generation and visual interpretation depend on the chosen project and host.
- Keep a human confirmation boundary around irreversible effects.
Sources
10 / SOURCES & VERIFICATION
Based on current primary sources
Project architecture, requirements, and commands were checked against the maintainers’ repositories on September 21, 2026. Recheck the linked README before installing.
- Browser Use Jev Ultrafast (opens in a new tab) — standalone Python agent, dynamic indexed action space, and separate text model.
- Jev Browser (opens in a new tab) — MCP server, CLI, and JavaScript library.
- Jev Browser Use (opens in a new tab) — Codex Computer Use Skill and plugin.
- TypeSafe Jev launch article (opens in a new tab) — System One Model positioning and decision types.
Jev Playground is independent and is not affiliated with TypeSafe AI or the maintainers of these browser projects.