Skip to content

mobile-jev-ultrafast

Phone agent where Jev picks one operation and one element from an indexed accessibility table; code does the tap.

Projectprototype

Overview

mobile-jev-ultrafast adapts the architecture of browser-use/jev-ultrafast to Android phones, replacing the Chrome DevTools Protocol layer with AutoX.js's MCP server. The phone's accessibility tree is flattened into a numbered element table, and TypeSafe's Jev answers operation plus target in a single request. The model never emits coordinates, selectors or scripts.

The executor resolves the chosen element back to live screen bounds immediately before acting; if the screen has changed, it raises StalePage and the loop re-observes instead of tapping the wrong thing. This makes every action grounded in an actual observation. The list summary says no cloud services are required beyond the decision call, as the device runs AutoX locally. It suits developers who want a safer, simpler phone automation loop than coordinate-predicting agents.

What the decision model decides

TypeQuestionAnswers
ChoiceWhich operation to performclick_target · type_text_target · scroll_down · scroll_up · wait
ChoiceWhich indexed on-screen element to act on—

How it works

  1. Get the UI tree from AutoX.js over MCP and index the elements.
  2. Send the table to Jev for operation + target.
  3. Resolve the target to live bounds and re-validate.
  4. Tap or type, or raise StalePage and re-observe.

Strengths

  • Actions are always grounded in elements that were on screen.
  • Stale decisions are rejected rather than mis-tapped.
  • Single request per step.

Caveats

  • Needs a TypeSafe key and an AutoX.js MCP endpoint.
  • Depends on accessibility trees; custom-drawn UIs may expose little.

Getting started

git clone git@github.com:cnhuye/mobile-jev-ultrafast.git && cd mobile-jev-ultrafast && uv sync && cp .env.example .env (set AUTOX_MCP_URL and the TypeSafe key).

At a glance

Type
Project
Status
prototype
Language
Python
Runtime
CLI with AutoX.js MCP server
Has code
yes

Use cases and integrations

How curated lists describe it

Frequently asked questions

What does Jev decide?

One operation and one element index from the table of what is currently on screen.

Why not ask the model for coordinates?

Coordinates and selectors are guesses that go stale; picking from an indexed table and re-validating avoids that.

What happens if the screen changes?

The executor raises StalePage and the loop observes again.

Related projects

  • Voice-controlled Mac agent where Jev picks the tool and its arguments in about 300 ms, running AppleScript or driving Chrome.

    ProjectprototypePython
  • CLM★ 3,014

    CLM-8B, a contrastively trained System One model that embeds states and actions separately, served behind a TypeSafe-compatible API.

    ServiceresearchPython
  • Rust MCP server for desktop control via accessibility trees, with an optional decision model (Jev or compatible) for small choices.

    MCP serverproductionRust
  • Rust CLI that ranks which agent skills fit the next step from live session context with Jev, can abstain, and hooks into Claude Code.

    CLIbetaRust
  • macOS menu-bar Swift app that turns on-device transcribed speech into Jev typed decisions and macOS actions, confirming hard-to-undo steps.

    AppbetaSwift
  • Rust CLI for desktop computer use via accessibility trees, with optional jev-desktop scripts letting Jev pick the control and action.

    Agent skillbetaRust