jev-mobile
Durable Android sub-agent: a SQLite-backed worker observes the UI and Jev picks among valid actions, with verification and escalation.
Overview
jev-mobile is an autonomous Android sub-agent that uses TypeSafe Jev as its System-One decision provider. It accepts a high-level task, stores it in SQLite, and a durable worker runs an observe, normalise, decide, mutate, verify loop against a USB-connected device. Jev sees only concise semantics and a list of technically valid actions and picks one by id; it never produces coordinates, MCP calls or code, so invalid actions, stale references and invented coordinates are rejected by construction.
Features include requirement-driven subgoals, mutation journaling before execution, leases, checkpoints, crash recovery, independent persistence verification, protection against writing to foreign entities, scoped approval for risky recovery and structured clarification questions. Tasks can be delegated over stdio MCP. The core has been hardware-validated for notes, checklists and text input in Google Keep and a fixture app, and deliberately excludes payments, account changes and other sensitive operations.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | Which valid action advances the task (for example A1 Create entity, A2 Set title, A3 Verify)? | — |
How it works
- Start a worker attached to a USB Android device
- Delegate a task; it is persisted in SQLite
- Worker observes and normalises the UI into valid actions
- Jev picks an action; the worker journals and executes it
- Results are verified independently; uncertainty or risk escalates
Strengths
- Jev cannot invent coordinates or code
- Crash recovery and durable task state
- Independent verification of persisted results
- Local USB-only runtime with no cloud account
Caveats
- Validated only on a narrow set of apps
- Sensitive operations deliberately out of scope
- Requires a TypeSafe key and a USB-connected device
Getting started
uv run jev-mobile worker --backend portal-adb --serial YOUR_ANDROID_SERIAL, then uv run jev-mobile task start "..."At a glance
- Type
- MCP server
- Status
- beta
- Language
- Python
- Runtime
- CLI worker and MCP server
- Has code
- yes
- Has tests
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
Mobile control: fast structured Android control loops that route each step through Jev alongside Mobile MCP, with 35 test files.
yibie/awesome-jev\`jev-mobile\` accepts a high-level task, persists it in SQLite, and lets one durable worker execute \*\*observe → normalize → decide → mutate → verify\*\* against a USB-connected Android device. Jev receives concise semantics and technically valid actions; it never generates coordinates, MCP calls, or arbitrary code.
logicrw/awesome-jev-projectsFast structured Android control loops with TypeSafe Jev and Mobile MCP.
hellogumbo/awesome-jev
Frequently asked questions
What does Jev decide?
Which of a short list of technically valid actions to take next.
Can it do payments or account changes?
No. Those are deliberately out of scope without explicit policy and approval work.
What happens if the worker crashes?
Tasks are durable in SQLite with leases and checkpoints, and the worker recovers.
Related projects
Rust MCP server for desktop control via accessibility trees, with an optional decision model (Jev or compatible) for small choices.
MCP serverproductionRust- SystemOneHarness★ 193
Agent harness that compiles an environment's finite actions into typed questions for Jev and gates each step by confidence.
CLIbetaPython Rust CLI for desktop computer use via accessibility trees, with optional jev-desktop scripts letting Jev pick the control and action.
Agent skillbetaRustmacOS computer-use package: a background app driver for any agent, plus a loop where Jev picks each UI action for a bounded subtask.
ProjectbetaPythonLocal stdio MCP server that executes whole browser and macOS goals with a Jev-driven observe-decide-act loop.
MCP serverbetaTypeScriptMCP server that lets agents observe and control Android phones over ADB, with Jev picking controls and judging goal completion.
MCP serverbetaTypeScript