Mobilerun
An open-source framework to control Android and iOS devices with LLM agents using natural language commands.
- Source repo
- droidrun/mobilerun
- Stars
- ★ 9.7k
- Last updated
- 4d ago
- License
- MIT
- Primary language
- Python
- FA score
- 43/100 · Major gaps
At a glance
- How it runs
- Works with
- Universal · cross-platformOpenAI API · Claude API
- Cost
- Free software; you pay for model usage
- Setup effort
- Medium · a few setup steps
- You'll need
- Typical use
- Mobile QA engineers automate regression testing on Android/iOS apps.
- Not a fit if
- Users on Python 3.14 or unwilling to set up ADB and developer options
- Teams wanting only managed cloud phones, not a local agent runtime
- Source review
- 43/100 · Major gaps 1 safety controls not found
What does this agent do, and when should you use it?
Mobilerun is an open-source framework for controlling Android and iOS devices via LLM agents. It provides a CLI and Python API to let agents inspect UI state, understand screenshots, tap, swipe, type, plan multi-step workflows, and return results. The framework supports a wide range of LLM providers, including OpenAI, Anthropic, Gemini, Ollama, DeepSeek, and OpenRouter. Device control is achieved through the Portal app, with optional vision and reasoning modes for enhanced capability. It can be run locally or used via Mobilerun Cloud for managed infrastructure and device fleets.
Mobilerun accepts natural language commands via CLI, e.g., mobilerun run "Open settings and turn on dark mode". It installs the Mobilerun Portal app on devices, enables accessibility services, and connects via ADB. The framework captures UI trees and screenshots, sends them to an LLM for understanding, and executes actions like tap, swipe, and type. It supports --vision mode for screenshot analysis and --reasoning mode for complex multi-step planning. Tracing with Arize Phoenix or Langfuse is available for debugging.
- Mobile QA engineers automate regression testing on Android/iOS apps.
- Non-technical users guide their phone through complex tasks via natural language, such as booking accommodation.
- Developers automate repetitive mobile tasks like daily streaks or data extraction.
- Teams run automations across multiple devices simultaneously, such as device farms.
- Event-driven automation triggers phone actions based on schedules or notifications.
How do you install or deploy this agent?
Install the CLI using uv: uv tool install mobilerun. For Python integration, run uv pip install mobilerun. To add Anthropic support, install the extra: uv tool install "mobilerun[anthropic]". Requires Python >=3.11,<3.14 and ADB installed on your system.
How do you use this agent?
- Run
mobilerun setupto install the Portal app on your device and enable accessibility. 2. Verify connection withmobilerun ping. 3. Configure your LLM provider viamobilerun configure(e.g., OpenAI, Anthropic). 4. Execute a task withmobilerun run "Open settings and tell me the Android version". Optional flags include--visionand--reasoning.
What are this agent's strengths and limitations?
- Model-agnostic with support for multiple LLM providers.
- Supports both Android and iOS with a customizable Portal app.
- Offers CLI, Docker, and Python API for flexible integration.
- Vision and reasoning modes enhance complex task handling.
- Integrated tracing and structured output for debugging and integration.
- Requires Python version range (>=3.11,<3.14), not yet supporting 3.14.
- Requires manual setup of ADB and enabling developer options and USB debugging on devices.
- iOS setup may require additional Portal flow configuration.
- Local usage requires managing LLM API keys and costs.
- For apps without accessibility trees, vision mode may be needed and could have limitations.
How does this agent compare with similar options?
Key facts side by side with the most closely related agents.
| Agent | Source review | Form / cost | Stars | Updated | Language | Full support on |
|---|---|---|---|---|---|---|
| Mobilerun This agent | 43 · Major gaps | CLIFree + model costs | ★ 9.7k | 4d ago | Python | OpenAI API · Claude API |
| Agency Orchestrator: One Sentence to Orchestrate an AI Expert Team | 61 · Some gaps | CLIFree + model costs | ★ 2.4k | today | TypeScript | Codex · Claude Code · OpenAI API · Claude API |
| PentestCode | 55 · Major gaps | CLIFree + model costs | ★ 852 | 16d ago | TypeScript | OpenAI API · Claude API |
| DarkMoon Autonomous Pentesting | 48 · Major gaps | CLIFree + model costs | ★ 1.1k | 18d ago | Python | OpenAI API · Claude API |
How does FollowAgents rate this agent?
Why each dimension lost points
Evidence: README mentions security checks (bandit, safety) but lacks specific security design details. User confirmation mechanism not clearly stated, data flow transparency limited, sensitive data handling (e.g., API keys) not detailed. Dependency security: dependencies listed but no vulnerability scan results. External effects (e.g., device control) exist but permission boundaries unclear. Rollback not mentioned. Source attribution: author and license clear, but publisher unverified. Deductions: lack of concrete security implementation details and user confirmation process.
Evidence: Test files (e.g., test_android_vision_coordinate_contract.py) show internal consistency, but dependency availability unverified (e.g., external services). Failure messages partially shown in tests (e.g., coordinate conversion errors), but overall failure handling documentation insufficient. Deductions: dependency on external services (LLM providers) not guaranteed, failure message coverage incomplete.
Evidence: README lists multiple use cases (QA, automation, etc.), capability boundaries documented (e.g., Android/iOS support), trigger precision partially shown in tests (e.g., coordinate conversion), environment fit (e.g., Python version, ADB) described. Deductions: trigger precision only partially covered, environment fit relies on external tools (ADB) not detailed.
Evidence: README provides installation instructions, examples, documentation links, license clear (MIT), version in pyproject.toml. But changelog missing, maintenance responsibility unclear (publisher unverified). Deductions: no changelog, maintenance responsibility unclear.
Evidence: Output usability (e.g., structured output) documented, marginal value (e.g., mobile automation) clear, cost-benefit (e.g., free open source) mentioned. Deductions: cost-benefit not detailed (e.g., LLM call costs).
Evidence: Claims in README (e.g., benchmark 91.4%) lack verifiable test data, test files provide partial verification, but cross-source verification insufficient. Facts and inferences not clearly separated. Deductions: claims lack traceability, cross-source verification limited.
- Not found in source: rollback or recovery pathBack up first, or work on a git branch or snapshot, so its changes can be undone.
- Publisher unverified, maintenance responsibility unclear.
- Reliance on external LLM providers, availability not guaranteed.
- No changelog, version evolution opaque.
- Security design details insufficient, user confirmation mechanism not explicit.
Recent releases
Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.
-
Release notes excerpt
Behavior changes - Device selection: mobilerun run uses -d, then ANDROID_SERIAL, then the only online device. With several devices attached and none selected, it now stops with an error instead of using the first device in adb devices. - Tool calls: FastAgent runs only the first <function_calls> block of a reply. Later blocks are ignored, and the model is told so. Tool-call markup before that block makes the reply malformed. After a failed call, the rest of the block is skipped. Highlights - Gemini API: gemini-4-argon is available. …View on GitHub ↗ -
Release notes excerpt
Breaking change: app card folders App cards are now read from one folder per platform: <app_cards_dir>/android/app_cards.json and <app_cards_dir>/ios/app_cards.json. A single app_cards.json directly in app_cards_dir is no longer read; Mobilerun logs Ignoring <path> for it. Move the file and its cards into android/ (and add an ios/ folder for iOS bundle ids). Portal …View on GitHub ↗ -
Release notes excerpt
What's Changed * fix: model-specific vision coordinates for Gemma, Gemini 3.8 Flash and Sonnet 5 by @RasulOs in https://github.com/droidrun/mobilerun/pull/465 * feat: add gpt-6.1-sol and claude-sonnet-5-5, drop gpt-5.5 by @RasulOs in https://github.com/droidrun/mobilerun/pull/468 * chore: drop retired DeepSeek model aliases by @RasulOs in https://github.com/droidrun/mobilerun/pull/469 * fix: strip whitespace from open_app identifiers by @RasulOs in https://github.com/droidrun/mobilerun/pull/471 * chore: release mobilerun 0.6.21 by @RasulOs in https://github.com/droidrun/mobilerun/pull/472 …View on GitHub ↗
FAQ
What is the difference between Mobilerun Framework and Mobilerun Cloud?
Which LLM providers are supported?
What are the hardware and software requirements?
How can I debug a running task?
--debug flag, or integrate with Arize Phoenix and Langfuse for tracing and logging.