mrkeyoor.com_
Tue 06 Oct 06:34 UTC
Automationevaluationupdated 06 Oct 2026

mobile-jev review

Mobile Jev is a local operator console and CLI that lets a Jev model choose actions on a real Android phone connected through Mobilerun. It turns a plain-language goal into observed taps, text entry, scrolling, navigation, and a saved trace without using ADB.

Verdict

Our Mobile Jev run installed 184 packages, built in 21 seconds, and passed its tests in 7 seconds, so the local code is easier than the two-service live setup. Use it for supervised experiments on bounded Android tasks when you can verify the final screen state yourself. Choose Maestro or Appium when reproducibility matters more than letting a model decide the next action.

We ran it

Lab card: what happened when we ran mobile-jevScreenshot of mobile-jev (github.com/droidrun/mobile-jev)
Install✓ · 15s184 packages · 465 MB
Build✓ · 21s
Tests✓ · 7sran, no count parsed
Repo55 files~4,501 lines of source · 15.2 MB · 1 CI workflows

Answers from our run

Does mobile-jev build from source?

Dependencies installed in 15 seconds (184 packages), and the build succeeded in 21 seconds. We cloned commit 395fc22 into a clean Debian container with 3 CPUs and no project-specific setup.

Do mobile-jev's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Who should not use mobile-jev?

Local-device owners trying to avoid hosted services: execution requires a ready Mobilerun device plus Mobilerun and TypeSafe API keys.

What are the alternatives to mobile-jev?

Mobilerun, Maestro, Appium. Our Mobile Jev run installed 184 packages, built in 21 seconds, and passed its tests in 7 seconds, so the local code is easier than the two-service live setup.

Setup3/5Local checks pass, but live use needs two services and a ready phone
Docs4/5Clear setup, execution boundaries, verification, and demo limits
Community2/5434 stars and five open issues or PRs in a new repository
Maturity2/5Version 0.1.0 has no release and assumes supervised local use

Who it’s for

Developers experimenting with model-directed Android tasks on an existing Mobilerun device.
Teams that want a visible action timeline, local traces, and request-level timing around each agent run.
Engineers testing bounded utility flows where the final phone state can be checked independently.
Single operators who want both a localhost studio and scriptable CLI controls.

Who it’s NOT for

Local-device owners trying to avoid hosted services: execution requires a ready Mobilerun device plus Mobilerun and TypeSafe API keys.
Public or multi-user deployments without extra engineering: the README says the localhost studio has no authentication or per-user device authorization.
Workflows that accept the model's DONE response as proof: the project explicitly requires checking device state, especially for numbers, dates, and multi-part goals.
Tasks that need the agent to invent arbitrary text or personal details: it can copy exact spans from the goal, but it does not generate free-form prose.
Teams needing repeatable scripted UI tests: the README says identical prompts can produce different traces as the app, screen, network, and model change.

Setup reality

Our sandbox installed 184 pnpm packages in 15 seconds at commit 395fc22, using 465 MB on disk. The production build passed in 21 seconds, and the available tests passed in 7 seconds on Node 22.

A useful live run still needs two API keys, a ready Android device in Mobilerun, its device ID, and possible service or device charges. Node 24 is recommended, Node 22.16 or newer is supported, and the repo pins pnpm 10.30.1.

The studio binds to localhost on port 3040 and keeps recent runs only in memory. Account keys stay server-side, but public hosting needs your own login and device authorization. Live execution makes real model and device requests; CI covers only offline tests and the build.

One goal becomes a checked sequence of Android actions

Mobile Jev connects two hosted pieces: TypeSafe's Jev chooses what to do, while Mobilerun observes and controls the Android device. The repository adds the loop around them. It discovers installed apps, indexes visible controls, asks Jev for an operation and possible target, validates the chosen branch against fresh state, executes it, then observes again. The available actions cover opening apps, taps, text, scrolling, back navigation, waiting, completion, and blocking.

The design is more careful than a prompt followed by blind coordinates. Bounds from the current observation become tap points, stale targets are rejected, and uncertain transport failures do not trigger another device mutation. An action is recorded before the next read, so a failed observation cannot erase evidence that the phone already changed. When an explicit app name appears in the goal, matching narrows an inventory that can otherwise expose up to 200 installed apps.

The studio listens on port 3040 for one local operator

The React studio combines the live device stream, goal entry, action timeline, model latency, and a task clock. It supports stopping, reconnecting, fullscreen display, and recent runs. One task owns the configured phone at a time. Recent history lives in memory and disappears when the server restarts, which is reasonable for an experiment console but weak as an audit store. Use the JSONL trace option when a run needs to survive.

Security matches that local scope. Account API keys remain on the server, and the browser receives device-scoped streaming credentials. The application binds to localhost, validates origins, and includes no public-user authentication. Moving it behind a shared URL means adding login, device authorization, durable run storage, and rules for concurrent access. The README states that public or multi-user hosting is work the operator must supply.

What happened when we ran it

Our sandbox cloned commit 395fc22 and installed 184 pnpm packages in 15 seconds. The environment used 465 MB on disk after installation. Its production build completed in 21 seconds, and the available tests passed in 7 seconds. The run used an unprivileged Debian container with 3 CPUs, 8 GB of RAM, Node 22, and no secrets.

The repository itself held 55 files, about 4,501 lines of source, and occupied 15.2 MB before dependencies. We found one CI workflow, a pnpm workspace, no Dockerfile, and no tests directory, though test files are colocated with scripts and the studio server. These results cover offline repository checks only. We did not provide either API key or control a phone, so they say nothing about task success or device latency.

Live use needs two API keys and one ready Android device

The documented path recommends Node 24, supports Node 22.16 or newer, and pins pnpm 10.30.1. After installing, you copy the environment template, add MOBILERUN_API_KEY and TYPESAFE_API_KEY, list devices, set a device ID, and run the doctor command. A Mobilerun device must already be connected or provisioned, and the README warns that device and service charges sit outside this repository.

There is no ADB fallback in this client. Issue 6 asks whether a Mobilerun key is still required for a local phone, which captures the practical surprise: the official flow goes through Mobilerun's API even when the hardware is yours. The upside is that the same CLI can observe, screenshot, profile, tap, type, and navigate through one remote interface. The cost is dependence on both vendors for every live agent loop.

A DONE response does not prove the task worked

The included dark-theme demo handles one bounded case well. It can reset the setting, run the requested change, and perform a fresh observation of the actual switch rather than trust Jev's completion message. Attempts are retained, including failures. The demo guide also documents exploratory failures where a timer used seconds instead of minutes and a clock flow stalled, which is a better warning than a polished success clip alone.

General goals do not receive that task-specific verifier. The README tells operators to inspect final state, especially for dates, numeric values, and goals with several parts. Text handling is deliberately narrow too: Jev selects exact spans from the user's goal, and code copies them into fields. It will not invent an address or compose a message that was never supplied. Verified read-back can stop a run rather than repeat uncertain text entry.

The September 17 codebase is still an experiment

GitHub showed 434 stars and five open issues and pull requests. The last repository push was September 17, 2026, while two proposed fixes arrived later, including one for verifying anonymous fields after keyboard-driven layout changes. No latest release was returned by GitHub, and the package remains private at version 0.1.0. Those facts fit a project meant for supervised exploration rather than unattended device operations.

Mobile Jev is a sensible choice when you specifically want Jev making decisions on a Mobilerun phone and you can watch the run. Its clean build and 7-second test result lower the cost of inspecting the code. They do not remove the service dependency or the verification burden. For a regression suite that must replay the same steps every time, model discretion is the wrong feature; use a scripted mobile test framework.

Alternatives

ProjectWhat it isPick it when
MobilerunA broader LLM-agnostic mobile agent for natural-language device automation.pick this instead when you want the wider Mobilerun agent project rather than this Jev-specific client and studio.
MaestroA declarative end-to-end testing framework for mobile and web apps.pick this instead when deterministic repeatable test flows matter more than model-selected actions.
Appium gh↗A cross-platform app automation framework built around the WebDriver protocol.pick this instead when you need a mature programmable automation stack across Android, iOS, and other app platforms.

What people are saying

  1. [velocity-scout] droidrun/mobile-jev

Sources

  1. Mobile Jev repository and README
  2. Mobile Jev demo guide
  3. Mobile Jev CI workflow
  4. Issue 6: local devices and Mobilerun keys
  5. Pull request 7: anonymous input verification

More automation reviews

Jev-cu · jev-browser-use · herdr-projects · repopilot · wx_channels_download · jianying-headless · the whole board →