See what's there.
Visible controls become an indexed action space. The model works with the page in front of it.
SMALL DECISIONS. REAL PROGRESS.
A little intention. A clear next move.
Give Jev a goal, and
watch it find its way through the web.
Find a Design stay in Lisbon with free cancellation. Open Casa Flora.
01 — THE IDEA
A page is a set of possibilities. Jev gives each one a name, chooses an action, and checks what actually happened.
Visible controls become an indexed action space. The model works with the page in front of it.
One typed decision pairs an operation with a compatible target. Every choice has a place to go.
The browser clicks, types, selects and scrolls. The inspector makes the journey visible as it unfolds.
Observed evidence must satisfy the checklist. A final review checks the original goal before completion.
02 — A WINDOW INTO THE WORK
The useful part of an agent isn't just where it ends up. It's being able to follow how it got there.
Explore the inspectorIllustrative trace from the walkthrough above.
Run automatically or go step by step. Pause, inspect a decision, and follow the pages visited.
Connect a System One decision model and an OpenAI-compatible chat helper. Switch connections as you work.
A Bun-native TypeScript library with a browser inspector and CLI. Open it up. Make it yours.
03 — BUILT FOR BUILDERS
Bring a goal and your model connections.
Jev brings the loop.
Bun 1.4.3+ · Chromium · Two model connections
# Add Jev to your project
bun add @usex/jev-browser-agent
# Give it a browser
bunx --bun --no-install playwright install chromium
Your next browser agent starts here.
# .env — a System One decision model
TYPESAFE_BASE_URL=http://127.0.0.1:1234/v1
TYPESAFE_MODEL=your-decision-model
TYPESAFE_API_KEY=
# An OpenAI-compatible chat helper
TEXT_MODEL_BASE_URL=http://127.0.0.1:1234/v1
TEXT_MODEL=your-chat-model
TEXT_MODEL_API_KEY=
Use local endpoints or your cloud provider's URL and key. The chat helper must support JSON schemas.
import { Agent } from "@usex/jev-browser-agent";
await using agent = await Agent.create(
"https://en.wikipedia.org/wiki/Main_Page",
"Find and open the article about Lisbon.",
);
for await (const state of agent.run()) {
console.log(state.status, state.page.url);
}
Save as agent.ts, then run: bun run agent.ts