jev-browser
Browser automation where an LLM plans and Jev decides.
# jev-browser
Browser automation where an LLM plans and **Jev** decides.
> Unofficial project, not affiliated with TypeSafe. It calls the TypeSafe System One API
> with your own API key.
The calling LLM (Claude, via MCP) says what outcome it wants, one step at a time, and hands
over any text to type. For each round of a step, code describes the page. Then one ~300 ms
[Typesafe System One](https://docs.typesafe.ai) request asks Jev several questions at once:
which element, which action, which value, and is the step done / blocked / showing an error /
about to do something irreversible. Playwright performs the action. The LLM never reads page
snapshots unless it chooses to take over.
```
Claude ── browser_do("Log in", {email, password}) ──▶ jev-browser
│ loop until done / stuck / needs confirmation
│ 1. settle (network + DOM quiet)
│ 2. describe (elements, labels, state, visible text, diff, counts)
│ 3. Jev (done? error? irreversible? tool? target? value?)
│ 4. act (Playwright)
Claude ◀── { status: "done", url, actions[], done_score } ─┘
```
https://github.com/user-attachments/assets/2e688df9-4985-4854-8ebe-ba97c9d13d68
Jev only answers with probability distributions: yes/no (`noul`), pick one option (`choice`)
or a rating (`score`). It never writes text. So everything free-form comes from the caller as
candidates, and code turns disagreement or low confidence into a status the LLM can act on.
## Results
42 tasks in 16 categories on live sites (see [RESULTS.md](RESULTS.md))