Skip to content

Mobile Agent

On-device Android agent that taps any app, with an allow/confirm/block safety gate optionally backed by Jev or Laya.

Serviceprototype

Overview

Mobile Agent is an open-source Android agent that runs on the phone itself and operates any app the way a person would, by reading the accessibility node tree for standard controls and sending screenshots to a vision model for icon-heavy or custom-drawn interfaces. It supports foreground control without root, an optional root virtual display for background work, a local MCP bridge so desktop agents can drive the phone, reusable task recipes, and fully local storage of conversations and decisions. The README is in Chinese with an English version and warns it is in early development.

Every tool call with external side effects passes through a semantic DecisionGate that returns allow, confirm or block; timeouts or failures fall back to asking the user. That gate can optionally be handed to a dedicated decision backend, a self-hosted Laya or TypeSafe Jev over /v1/systemone. It is off by default, sends only minimal context, can only pick among candidates, and runs in SHADOW or ENFORCE mode while local policy stays authoritative.

What the decision model decides

TypeQuestionAnswers
ChoiceShould this side-effecting action run?allow · confirm · block

How it works

  1. Model proposes a tool call such as sending a message or changing a setting.
  2. Read-only calls skip the gate; side-effecting calls go to DecisionGate.
  3. Optional Laya/Jev backend returns allow, confirm or block (shadow or enforce).
  4. Timeouts or failures fall back to asking the user.

Strengths

  • Conservative default: never silently allows on failure.
  • Decision backend only selects among candidates and cannot invent actions.
  • Data stays on the device unless you configure outbound services.

Caveats

  • Early-stage project; the README warns against payment or account-security tasks.
  • Jev/Laya integration is optional and disabled by default.
  • Primary documentation is in Chinese.

Getting started

Install the APK from the GitHub Releases page; configure a model, and optionally a Laya or Jev decision backend (see deploy/laya/).

At a glance

Type
Service
Status
prototype
Language
Kotlin
Runtime
Android app, MCP server
Has code
yes

Use cases and integrations

How curated lists describe it

  • On-device Android agent that reads and taps any app through accessibility and vision; its allow / confirm / block safety gate can be handed to Jev or a self-hosted Laya over `/v1/systemone`, off by default. In Chinese.

    MrJev/awesome-jev

Frequently asked questions

What does the decision model decide here?

Whether a side-effecting phone action should be allowed, sent for confirmation or blocked.

Does it require a TypeSafe key?

No. The Jev/Laya backend is optional and off by default; you can self-host Laya.

What if the decision service fails?

The gate falls back to requiring human confirmation.

Related projects

  • Verified computer-use agent: a Jev guard checks claimed completions and gates irreversible actions; Jev also takes simple steps.

    ProjectbetaPython
  • MCP server that lets agents observe and control Android phones over ADB, with Jev picking controls and judging goal completion.

    MCP serverbetaTypeScript
  • Claude Code PreToolUse hook that auto-approves shell commands Jev is confident are read-only, and otherwise shows the normal prompt.

    HookbetaPython
  • Claude Code plugin adding typed Jev decisions to hooks: task kind, command risk, failure class, completion; never grants permissions.

    PluginbetaJavaScript
  • Voice assistant daemon for Hyprland Linux desktops that acts through tool modules, with Jev gating which requests and actions proceed.

    ProjectbetaPython
  • Accessibility-first macOS computer-use MCP server and CLI, with optional Jev guards on targets and inputs before irreversible actions.

    PluginbetaPython