Browser control for Claude and Codex
Your browser, one decision every half second.
Claude plans. Jev, TypeSafe's decision model, clicks, types and scrolls in a real Chrome window that stays signed in to your sites. Each step takes about half a second and costs a fraction of a cent.
5 to 40 times cheaper than letting Claude's or Codex's own model do the clicking (measured). Prepaid credits with one key: no other accounts to set up.
Goal: Search Wikipedia for “Ristretto” and open the Ristretto article.
A fraction of what Claude Code or Codex spends on the same clicks
Claude and Codex are great at deciding what to do. Clicking through a page doesn't need a frontier model. We ran three live tasks through the same browser loop and changed only who picks each step: a Wikipedia search, a 7-field order form, and opening a Hacker News thread.
| Who picks each step | Total cost for the three tasks | Time |
|---|---|---|
| Jev Browser Control | $0.028 | 17.8 s |
| GPT-5.3 Codex | $0.153 5× Jev | 38.9 s |
| Claude Sonnet 5 | $0.249 9× Jev | 43.3 s |
| Claude Opus 5 | $0.795 28× Jev | 45.4 s |
| GPT-6 Astra | $1.129 40× Jev | 38.3 s |
Every model finished all three tasks; Jev was more than twice as fast. The models ran the way Claude Code and Codex run them: tool definitions in the prompt, the whole conversation resent at every step, reasoning on and prompt caching on. On a Claude or Codex subscription, each step Jev takes is one your plan doesn't spend. Measured September 19, 2026 at OpenRouter prices; raw results and the script are on GitHub.
Jev picks. It never writes code.
Jev Browser Control turns the page into a numbered list of what you can click or type into. Jev answers one question: which option, with a probability for each. Code maps the number back to the real element, so a model's answer never becomes a selector or a script.
Read the page
Visible buttons, links and fields become numbered rows, with their current values and checked states. Password fields are never listed.
in the page · ~20 msOne Jev call
Which operation, which element for each operation, and is the goal already met? One request answers all three.
Jev · ~0.5 sCheck before acting
Stop gates run in code: done, blocked, over budget, or a click that buys, sends or deletes. If the page moved while Jev decided, nothing is clicked and it looks again.
codeAct like a person
A trusted mouse click or keystroke on that exact element. Only typing needs words, and a small model writes them from your goal.
Chrome · ~50 ms
What Claude gets
Claude Code and Claude Desktop see these tools through a small MCP server on your computer. Claude can drive the browser itself, or hand a whole sub-task to Jev and check the result.
| Tool | What it does |
|---|---|
| jev_task | Runs a multi-step task (search, filters, forms) with Jev and returns every step, the cost and the final page. |
| jev_find | Finds the element that matches a description, with probabilities. Clicks nothing. |
| jev_check | How likely is a statement about the page true? A cheap way to verify a result. |
| browser_snapshot | The page as numbered elements plus its visible text. |
| browser_click · browser_type · browser_select | Act on element [n] with real input. |
| browser_navigate · browser_tabs · browser_back | Open URLs and move between tabs. Tabs Claude opens join an orange “Jev” group. |
| browser_read · browser_screenshot · browser_wait | The whole page as markdown, a screenshot, or wait for text to appear. |
Also works with OpenAI Codex (ready-made agent files in the repo), and with Grok Bot, ChatGPT and other cloud apps through remote control, which is off until you switch it on.
It asks instead of inventing
Another recorded run, on httpbin's test form. The goal named a customer and a phone number but no email. Jev filled everything it was given, then stopped and asked.
- 1TYPECustomer name ← “Ada Lovelace”
- 2TYPETelephone ← “555-0100”
- 3CLICKLarge
- 4TYPEPreferred delivery time ← “19:30”
- 5CLICKBacon
- 6CLICKOnion
- 7TYPEE-mail address: no value in the goal, skipped
- ■STOPneeds_input: “E-mail address” needs a value the goal doesn't give. Nothing invented, nothing submitted.
- Asks before it's hard to undoClicks that buy, pay, send, post or delete stop and wait for you. From the side panel you get an Allow button; Claude gets the pending click and asks you.
- Never sees your passwordsPassword and file-upload fields are left out of the element list, so neither Jev nor Claude can type into them.
- Treats pages as dataEvery request tells Jev that page text is untrusted. Jev can only choose from options the code offered.
- Stays on your computerThe MCP server runs on your computer and listens on 127.0.0.1 only. Block any site, such as your bank, in the settings.
- Has limitsEvery task stops at a number of actions, seconds and dollars you choose.
Pay only for what Jev does
One key runs Claude Code, Codex, the extension, Grok Bot and your own code. No subscription and no other accounts: add credits and each step comes off your balance.
Credits
- A typical task costs about a cent
- Credits don't expire
- Every call listed in your dashboard
What a task costs
| Recorded task | Time | Cost |
|---|---|---|
| Search Wikipedia and open an article | 4.9 s | $0.0092 |
| Fill a 6-field order form | 7.3 s | $0.0058 |
$10 covers about 1,000 to 1,700 tasks like these. Pages with many links cost more per step, because Jev is priced per token read.
Set up in three steps
Get a key
Create an account in your dashboard and add credits. Put the key in ~/.jev-browser-control/config.env:
JBC_API_KEY=jbc_…your key…
Add it to Claude
Claude Code (Codex: codex mcp add, same command after it). Needs Node.js 18+ and Google Chrome.
claude mcp add -s user jev-browser -- npx -y https://jevbrowsercontrol.com/downloads/jev-browser-control-mcp-0.3.0.tgz
Claude Desktop and other clients: see the docs.
Ask Claude
“Use the browser to …”. A Chrome window opens and you watch Jev work. Sign in to your sites there once; the logins are kept.
Rather use your everyday Chrome, or Grok Bot? Get the extension.