Mobilerun

An open-source framework to control Android and iOS devices with LLM agents using natural language commands.

Stars
★ 9.7k
Last updated
4d ago
License
MIT
Primary language
Python

At a glance

How it runs
CLILibrary / SDKSelf-hosted service
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
Python >=3.11,<3.14uvADBShell / CLINetwork access
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

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.

  1. Mobile QA engineers automate regression testing on Android/iOS apps.
  2. Non-technical users guide their phone through complex tasks via natural language, such as booking accommodation.
  3. Developers automate repetitive mobile tasks like daily streaks or data extraction.
  4. Teams run automations across multiple devices simultaneously, such as device farms.
  5. 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?

  1. Run mobilerun setup to install the Portal app on your device and enable accessibility. 2. Verify connection with mobilerun ping. 3. Configure your LLM provider via mobilerun configure (e.g., OpenAI, Anthropic). 4. Execute a task with mobilerun run "Open settings and tell me the Android version". Optional flags include --vision and --reasoning.

What are this agent's strengths and limitations?

Pros
  • 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.
Limitations
  • 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?

FollowAgents source review · FARS-2.1
Major gaps
43/ 100 5-point scale 2.2 / 5
This review covers the source as of Aug 11, 2026. The project has shipped 8 stable release(s) since, which have not been re-reviewed. The score and verdict describe the reviewed version only. Recent releases ↓
Trust 8/29
Reliability 6/14
Adaptability 10/18
Convention 9/18
Effectiveness 7/13
Verifiability 3/8
Why each dimension lost points
Trust8 / 29 · 1.4/5

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.

Reliability6 / 14 · 2.1/5

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.

Adaptability10 / 18 · 2.8/5

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.

Convention9 / 18 · 2.5/5

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.

Effectiveness7 / 13 · 2.7/5

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).

Verifiability3 / 8 · 1.9/5

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.

Risks and how to mitigate them
  • 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.
Evidence confidence: Low Reviewed Aug 11, 2026 Reviewed revision 52dd3acee400 New commits since this review; the score may not cover them
See the full review method →

Recent releases

Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.

  1. v0.7.0
    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 ↗
  2. v0.6.22
    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 ↗
  3. v0.6.21
    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?
Framework runs locally on your machine and devices; Cloud is a managed service providing hosted devices, APIs, and infrastructure without running the agent locally.
Which LLM providers are supported?
By default, OpenAI, Anthropic, Gemini, Ollama, DeepSeek, OpenRouter, and OpenAI-compatible models. Anthropic requires an optional extra installation.
What are the hardware and software requirements?
You need Python 3.11-3.13, ADB, and an Android or iOS device with developer options and USB debugging enabled.
How can I debug a running task?
Use the --debug flag, or integrate with Arize Phoenix and Langfuse for tracing and logging.
Does this framework support cloud devices?
Not directly, but Mobilerun Cloud offers hosted virtual and physical phones that can be used via APIs.
View on GitHub ↗ Install ↓

Related agents