jev-browser (vinilana)
Hybrid TypeScript browser harness: an LLM plans verifiable subgoals, Jev picks each action and DOM field, Playwright acts.
Overview
Jev Browser by vinilana is a hybrid browser harness in TypeScript that divides work three ways. An OpenRouter LLM turns a goal into a short plan of sequential, verifiable subgoals without selectors or invented fields; Jev chooses each action and DOM field; OpenRouter generates text whenever a field needs filling; and Playwright executes the actions. Documentation is in English and Brazilian Portuguese.
It can be run with a high-level goal and supplied values (for example registering a user on a site with name, email and password), with a direct task on a start URL, or with an explicit batch of commands. Direct tasks and batches only use OpenRouter when filling a field. It requires Node 22+, a TypeSafe key for Jev and an OpenRouter key for planning and text, defaulting to OpenRouter's free routing model but accepting any model that supports structured output.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | Which action should be taken next? | — |
| Choice | Which DOM field is the target? | — |
How it works
- LLM plans verifiable subgoals (goal mode)
- For each step, Jev picks action and DOM field
- LLM writes text for fields that need it
- Playwright executes and the harness checks the subgoal
Strengths
- Clear division between planning, deciding and acting
- Works with free OpenRouter models for text
- Several modes from goals to explicit commands
Caveats
- Needs both TypeSafe and OpenRouter keys
- Planner quality depends on the chosen LLM
Getting started
`npm install && npm run browser:install`, set TYPESAFE_API_KEY and OPENROUTER_API_KEY, then `npm start -- --url https://www.wikipedia.org 'Search for Alan Turing and open the matching article' --headed`.At a glance
- Type
- Project
- Status
- prototype
- Language
- TypeScript
- Runtime
- Node CLI (Playwright)
- Has code
- yes
Use cases and integrations
How curated lists describe it
Hybrid browser harness: an LLM turns goals into verifiable subgoals, Jev chooses each action and DOM field, Playwright acts.
hellogumbo/awesome-jev
Frequently asked questions
What does Jev decide?
Each action and which DOM field it targets.
What does the LLM do?
Plans subgoals and writes text for fields.
Which OpenRouter model is used?
openrouter/free by default; any structured-output model works.
Related projects
RAM-efficient Rust coding-agent harness, listed as using Jev decisions for memory pruning, browser navigation and voice routing.
ServiceproductionRustMCP server and libraries that drive Chrome over CDP and hand a decision model like Jev a bounded menu of page actions.
ProjectproductionTypeScript- Jev Browser★ 335
Headless browser automation via MCP server, CLI or library: Jev picks one action per step and scores goal-met and stuck probabilities.
MCP serverbetaTypeScript Local browser agent that picks each step's operation and element with a Jev-shaped model such as a fine-tuned Laya, no cloud needed.
MCP serverbetaPythonClaude Desktop MCP extension that drives Brave or Chrome with Jev choosing on-page actions and a guard freezing irreversible clicks.
MCP serverbetaTypeScriptBrowser-agent benchmark with five timed events from one prompt, plus a ~200-line DevTools agent where Jev picks each action.
ProjectbetaJavaScript