Skip to content

jev-max

Jev browser agent that pierces shadow DOM and iframes, adds canvas fallback and full actions, with one Jev request per cycle.

MCP serverbeta

Overview

jev-max is a Python browser agent built on TypeSafe's Jev, aimed at the pages other Jev browser agents cannot see. Its piercing snapshot walks open shadow roots and same-origin iframes into one indexed element table and records cross-origin frames as regions. When no usable element exists, a vision model grounds the instruction to coordinates for a real mouse click.

Each cycle makes one Jev request in which the operation and speculative target heads are decided together. A small LLM writes text only for fill and select steps, so Jev never generates free text. Clicks are occlusion-checked, and an independent Jev check confirms the outcome before the agent stops. The action space covers uploads, drag-and-drop, multi-tab, nested scrolling and native selects. It runs as a Python library or an MCP server for Claude Code, Cursor, Windsurf and Codex.

What the decision model decides

TypeQuestionAnswers
ChoiceWhich operation should the agent perform next?(inferred)—
ChoiceWhich indexed element is the target?(inferred)—
Yes / noHas the goal been achieved (independent DONE check)?(inferred)yes · no

How it works

  1. Take a piercing snapshot of the page into an indexed element table
  2. One Jev request picks the operation and target element
  3. A small text model fills text for FILL or SELECT only
  4. Occlusion-checked action, or vision fallback for canvas
  5. Independent Jev verification before stopping

Strengths

  • Handles shadow DOM, iframes and canvas that other Jev agents miss
  • Single decision request per cycle
  • Never trusts the agent's own DONE claim
  • Works standalone or through MCP

Caveats

  • Needs both a Jev key and a separate text-model key
  • Vision fallback adds another model dependency
  • Cross-origin iframes are only marked, not pierced

Getting started

pip install jev-max && playwright install chromium, copy .env.example to .env with your keys, then jev-max run --url <url> --goal "..."

At a glance

Type
MCP server
Status
beta
Language
Python
Runtime
Playwright library and MCP server
Has code
yes

Use cases and integrations

How curated lists describe it

  • The Jev browser agent that handles the real web: shadow DOM and iframe piercing, canvas fallback, uploads, multi-tab, MCP for any agent host.

    hellogumbo/awesome-jev

Frequently asked questions

What does Jev decide in jev-max?

The next operation and target element each cycle, plus an independent check that the goal was reached.

How is it different from jev-ultrafast?

The README's comparison says it adds shadow DOM and iframe piercing, canvas fallback, uploads, drag-and-drop and multi-tab.

Can I inspect a page without a key?

Yes. jev-max snapshot --url <url> shows the piercing snapshot without any API key.

Related projects

  • MCP server that takes a whole browser task (URL, goal, checks) in one call and drives Chrome server-side with a decision model.

    MCP serverbetaPython
  • MCP server and libraries that drive Chrome over CDP and hand a decision model like Jev a bounded menu of page actions.

    ProjectproductionTypeScript
  • Agent-plugin browser tool where Jev picks one operation and one row from a numbered page table; a small LLM only writes typed text.

    ProjectbetaTypeScript
  • Chrome extension plus MCP server so Claude or Codex can drive your real Chrome, with Jev picking each click in about half a second.

    MCP serverbetaTypeScript
  • MCP server that lets Claude Code or Codex drive real Chrome with Jev picking elements and checking steps, plus safety gates and traces.

    MCP serverbetaTypeScript
  • Drop-in proxy for Playwright MCP that adds Jev page triage, prompt-injection masking, snapshot pruning and risky-action gating.

    MCP serverbetaTypeScript