Skip to content

jev-mobile (xinwang-nwpu)

Android agent where one Jev request per step picks an operation and target from the accessibility tree, with a vision fallback.

ProjectprototypeMIT

Overview

This jev-mobile is an Android automation agent, documented in Chinese with an English version. Given a natural-language goal, each step snapshots the accessibility tree into an indexed element table, and one TypeSafe request returns the operation (CLICK, TYPE_TEXT, SCROLL_UP, SCROLL_DOWN, BACK, HOME, ENTER, WAIT, DONE or BLOCKED) plus speculative target heads for click and text input. Only the head matching the chosen operation is used, and actions run through ADB. A small LLM writes text for TYPE_TEXT.

Completion is a separate Noul in the same request asking whether the goal has been achieved. When the fast path gets stuck (no target, repeated no-change steps, failures, completion conflicts), an optional vision agent with planner, executor and verifier roles takes over. The README reports a demo task completed in 18 seconds with 2-3 seconds per action decision.

What the decision model decides

TypeQuestionAnswers
Choiceoperation: which action should be taken next?CLICK · TYPE_TEXT · SCROLL_UP · SCROLL_DOWN · BACK · HOME · ENTER · WAIT · DONE · BLOCKED
Choiceclick_target: which element should be clicked?—
Yes / noHas the current goal been achieved?yes · no

How it works

  1. Snapshot the accessibility tree into an indexed element table
  2. One Jev request returns operation, target heads and a done check
  3. Execute via ADB; a small LLM supplies text for TYPE_TEXT
  4. Hand over to a vision planner/executor/verifier when stuck

Strengths

  • No screenshots needed on the fast path
  • Two decisions in one network round trip
  • Only predefined actions; no shell commands from the model

Caveats

  • Vision fallback requires a separate multimodal model
  • Primarily Chinese documentation
  • Requires TypeSafe and text-model keys

Getting started

Configure keys in .env and run python -m jev_mobile with a task; python -m jev_mobile --vision-only --task "..." uses only the vision path.

At a glance

Type
Project
Status
prototype
Language
Python
Runtime
CLI controlling Android via ADB
Has code
yes
License
MIT

Use cases and integrations

How curated lists describe it

  • One TypeSafe Jev decision per step over the A11Y tree, executed via ADB. No screenshots and ultra fast!

    logicrw/awesome-jev-projects
  • One TypeSafe Jev decision per step over the A11Y tree, executed via ADB. No screenshots and ultra fast!

    hellogumbo/awesome-jev

Frequently asked questions

What does Jev decide each step?

The operation and its target element from the accessibility tree, plus whether the goal is done.

What happens when it gets stuck?

An optional vision agent takes over the remaining task with screenshots.

How fast is it?

The README reports 2-3 seconds per action decision and an 18-second demo task.

Related projects

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

    MCP serverproductionRust
  • 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
  • macOS computer-use package: a background app driver for any agent, plus a loop where Jev picks each UI action for a bounded subtask.

    ProjectbetaPython
  • Lets coding agents run whole goals in your signed-in Chrome on macOS in background tabs, asking Jev or Claude Haiku only for real choices.

    Projectbeta
  • Computer-use platform (Cua Spaces, Driver, Lume) with CUA-S1 small decision models and a preview jev-use example for bounded actions.

    ProjectbetaPython