Mobile Jev
A mobile agent on a real Android phone, with Jev making each decision.
# Mobile Jev [](https://github.com/droidrun/mobile-jev/blob/main/docs/media/uber-demo.mp4) **[▶ Watch the demo](https://github.com/droidrun/mobile-jev/blob/main/docs/media/uber-demo.mp4)** — Jev opens Uber, enters a route from San Francisco Airport to the Golden Gate Bridge, and reaches payment selection. The recorded task timer shows about **21 seconds for 9 actions**. A completed booking is not demonstrated. **One goal. A real Android phone. Jev makes the decisions.** A standalone mobile agent for [Mobilerun](https://mobilerun.ai), powered by [TypeSafe's Jev](https://docs.typesafe.ai/) and the [Mobilerun API](https://docs.mobilerun.ai/). Includes a live React studio, a CLI, execution traces, and request-level latency measurements. No ADB connection is required. [Mobilerun](https://mobilerun.ai) · [Mobilerun docs](https://docs.mobilerun.ai) · [TypeSafe](https://typesafe.ai) · [Jev docs](https://docs.typesafe.ai) · [Demo guide](docs/DEMO.md) ## Run it Requirements: **Node.js 24 recommended** (22.16+ supported), **pnpm 10.30.1**, **curl 7.70+**, a ready Mobilerun Android device, and API keys for Mobilerun and TypeSafe. Tested locally on macOS; CI runs offline tests and the build on Linux. ```sh git clone https://github.com/droidrun/mobile-jev.git cd mobile-jev corepack enable pnpm install --frozen-lockfile cp .env.example .env.local ``` Add `MOBILERUN_API_KEY` and `TYPESAFE_API_KEY` to `.env.local`. List your devices, then set `MOBILERUN_DEVICE_ID` to the one you want to control: ```sh pnpm devices pnpm doctor pnpm dev ``` Open **http://127.0.0.1:3040**. Enter a goal and press **Run task**. - Get a Mobilerun key from [API keys](https://cloud.mobilerun.ai/api-keys). - Get a TypeSafe key from the [TypeSafe console](https://console.typesafe.ai/). - Connect or pr