Jev Browser Agent (Playwright + TypeSafe System One)
Rules for a browser agent where Jev picks the action and target from an indexed element table, Noul checks goal and stuck, and a small LLM types only text.
- Formats
- 4 files
- AGENTS.md
- 44 lines
- CLAUDE.md
- 15 lines
- Languages
- TypeScript, Python
- Updated
- Oct 2026
- Used by
- 4 projects
Writes .claude/skills/jev-browser-agent/SKILL.md
$ curl -s --create-dirs -o .claude/skills/jev-browser-agent/SKILL.md https://stackitfast.com/rules/jev-browser-agent/SKILL.mdRule files
Works with Claude Code · Cursor · Windsurf · AGY
Architecture notes
Architecture Overview
A browser agent that chooses instead of generating. Code snapshots the page into a numbered table of controls. Jev, TypeSafe’s System One model, answers one request per step: which operation to perform, which element each operation would target, and whether the goal is done or the run is stuck. Code validates and executes the chosen action against the observed node, and a small LLM writes text only when something must be typed.
Why it suits AI coding agents
- The action space is data. Operations and element indexes are enumerated in code, so an agent changing the policy edits typed question builders, not prompt prose.
- Failures are inspectable. Every step logs probabilities for the operation and targets, so a bad click can be traced to a question or a snapshot.
- Safety lives outside the model. Budgets, allow-lists and “fill but do not submit” gates are ordinary code with tests.
In the directory
jev-ultrafast by Browser Use is the reference implementation of the speculative operation/target pattern. fast-jev-compaction applies Jev inside a coding agent, and TypeSafe’s official agent skill covers the API. For a non-browser Python service see FastAPI + Jev decision service. Background: Jev for developers.
Frequently asked questions
How does a Jev browser agent work?
Each step, code reads the page into an indexed table of visible controls and sends it to Jev with typed questions: which operation to perform, which element to target for each operation, and whether the goal is reached or the run is stuck. Code executes the chosen action on the observed element; a small LLM is called only when text must be typed.
Why is a Jev browser agent faster than an LLM agent?
Jev returns a constrained choice instead of generating a JSON action, and one request can carry the operation and every candidate target at once, so each step is a single short round trip. browser-use/jev-ultrafast reports a full Google Flights search in about 7 seconds with that design.
Is it safe to let Jev click on real websites?
Only with guardrails in code: the model can only pick indexes from the observed page, never selectors or scripts; destructive actions need an explicit allow-list and a high-confidence check; runs have step, time and domain budgets; and the browser runs in an isolated profile or container.
Should the agent expose an MCP server?
It is a good default if coding agents will use it. About one in six open-source Jev repositories in our audit ships an MCP server or client, and jkudish/jev-browser exposes its browser agent through MCP, a CLI and a library.
Used in production
Explore all stacksGrafana
6Grafana splits its backend into a growing set of independently versioned Go modules under apps/, tied together by a go.work workspace and modeled with Kubernetes-style APIs (pkg/apiserver, CUE-defined kinds), so individual product areas like alerting or dashboards can evolve without one monolithic backend module.
Orca
1Agent CLIs stay the user's own. Orca adds the orchestration layer around them: isolated git worktrees, a PTY daemon that outlives the UI, and a relay for mobile steering. It can support new agents without bundling them.
Jev Ultrafast
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.
Fast Jev Compaction
Two Jev Noul questions per tool call, gated by a threshold in code, prune a transcript without rewriting it, and a thin hook adapter falls back to Claude Code's built-in summary whenever Jev fails or saves too little.