Skip to main content

Mobilerun is an open-source framework for controlling Android and iOS devices with LLM agents.
It gives agents mobile-native tools to inspect UI state, understand screenshots, tap, swipe, type, plan multi-step workflows, and return results through a CLI or Python API.

Mobilerun automating a phone with natural language

  • 🤖 Control Android and iOS devices with natural language commands
  • 🔀 Use OpenAI, Anthropic, Gemini, xAI, Ollama, DeepSeek, OpenRouter, and OpenAI-compatible models
  • 🧠 Run direct tasks or enable reasoning mode for complex multi-step automation
  • 💻 Automate from the CLI, a terminal UI, Docker, or Python code
  • 🐍 Extend agents with custom tools, structured output, app cards, and credentials
  • 📸 Combine accessibility trees with screenshots for visual understanding
  • 🫆 Trace execution with Arize Phoenix or Langfuse

Use the framework when you want to run the agent on your machine. Use Mobilerun Cloud when you want a ready-to-go solution for your local phones or cloud-hosted virtual/physical phones, managed infrastructure, and API-driven device workflows without running the agent on your local machine. Check out our benchmark results.

🎯 Platform Support

Target Supported Setup
Android Real Device ✅ adb or the Portal app
Android Emulator ✅ Running emulator (adb)
iOS Real Device ✅ mobilerun-ios over USB
iOS Simulator ✅ iOS Portal app
Android on Mobilerun Cloud ✅ Hosted phones or your own
iOS on Mobilerun Cloud ✅ Hosted iPhones or your own

📦 Installation

Note: Python 3.14 is not currently supported. Please use Python >=3.11,<3.14.

Install Mobilerun with uv:

# CLI usage
uv tool install mobilerun
# CLI + Python integration
uv pip install mobilerun

Most LLM providers are included by default. For Anthropic support, install the optional extra:

uv tool install "mobilerun[anthropic]"

🚀 Quickstart

uv tool install mobilerun
mobilerun setup
mobilerun configure
mobilerun run "Open settings and turn on dark mode"

Before starting, make sure you have ADB installed and an Android device with Developer options and USB debugging enabled. For iOS, set up mobilerun-ios for an iPhone or the iOS Portal app for the simulator.

1. Install the Portal on your device

mobilerun setup

This installs the Mobilerun Portal app, enables its accessibility service, and prepares the device for local control.

2. Verify the connection

mobilerun ping

You should see confirmation that the Portal is installed and accessible.

3. Configure your LLM provider

mobilerun configure

The wizard walks you through choosing a provider, auth method, and model. You can also use provider environment variables such as GOOGLE_API_KEY, OPENAI_API_KEY, ANTHROPIC_API_KEY, XAI_API_KEY, or MINIMAX_API_KEY.

4. Run your first command

mobilerun run "Open the settings app and tell me the Android version"

Useful run options:

mobilerun run "Open settings and turn on dark mode"
mobilerun run "What app is currently open?" --vision
mobilerun run "Find a contact named John and send him an email" --reasoning
mobilerun run "Take a screenshot" --ios
mobilerun run "Open Settings" --steps 30 --debug

Read the full framework documentation.

⚙️ Features

  • CLI: Run one-off natural language tasks, inspect devices, replay macros, and debug from the terminal.
  • Python API: Build custom mobile automation workflows with Python and use custom tools.
  • Android and iOS support: Control Android through the Portal app, iPhones through mobilerun-ios, or the iOS Simulator through the iOS Portal app.
  • Portal-based control: Use UI trees, screenshots, text input, gestures, app launching, and device state from the Portal runtime.
  • Vision mode: Send screenshots to the LLM with --vision, or use screenshot-only control with --vision-only (useful for the apps that do not have a11y tree information).
  • Reasoning mode: Use --reasoning for manager-executor planning on longer or more complex tasks.
  • Tracing and telemetry: Debug execution with Arize Phoenix, Langfuse, saved trajectories, and detailed logs.
  • Structured output: Return structured data from mobile workflows.
  • App cards and custom tools: Add app-specific guidance to make agent perform better on your use-cases.
  • Docker: Run Mobilerun in a container for repeatable local environments.

☁️ Framework vs Cloud

Mobilerun Framework Mobilerun Cloud
Best for Running agents locally on your own machine and devices Ready-to-go local phone control, hosted real or virtual devices, API workflows, and managed device operations
Runtime Your machine Mobilerun-managed infrastructure
Interface CLI, Docker, and Python API Dashboard, REST API, SDKs, and hosted devices

Use the framework when you want full local control of the agent runtime. Use Mobilerun Cloud when you want managed devices, fleet workflows, or cloud APIs without running the agent locally. Learn more in the framework overview and the cloud docs.

Which should I choose?

  • Choose Mobilerun Framework for local agent execution and code-level control.
  • Choose Mobilerun Cloud for managed phones, APIs, and scale without running agents locally.

Cloud Device Types

Device type What it is Best for
Personal Your own hardware connected to Mobilerun Cloud Quick automation on devices you own
Cloud Phone (Hosted) Instantly available cloud-hosted phone Scalable hosted automation
Physical Phone (Hosted) Real hardware with stronger identity characteristics Workflows that need high device authenticity and trust

Automate WhatsApp on a Cloud Phone

Mobilerun automating WhatsApp on a cloud device

Generate leads with Google Maps on a Cloud Phone

Mobilerun generating business leads with Google Maps on a cloud device

🧩 Agent Skill

Give Claude Code, Codex, or another coding agent direct control of Android and iOS devices with the mobile-harness skill. Copy paste it into your agent:

Set up https://github.com/droidrun/mobile-harness for me.

Read `install.md` and follow the steps to install `mobile-harness`.

The skill teaches the agent to drive local devices (ADB, Portal, iPhones, iOS Simulator) and Mobilerun Cloud phones.

🎬 Demo Videos

Book accommodation from a prompt

Shows multi-step navigation, text input, and app-state reasoning while Mobilerun searches for accommodation.

Mobilerun booking accommodation from a prompt

Shows browsing, app navigation, and result extraction from a natural-language task.

Mobilerun finding trending content from a prompt

💡 Example Use Cases

  • Mobile app QA and regression testing
  • Guided workflows for non-technical users
  • Repetitive task automation on mobile devices
  • Event-driven automation from schedules, notifications, or custom triggers
  • Data extraction from native mobile apps
  • Running automations on multiple devices at once

🌐 Part of Mobilerun

Mobilerun is one piece of a toolkit for driving real phones with AI agents:

  • Mobilerun Portal: the Android app that lets you control and automate your phone.
  • mobilerun-ios: connects an iPhone over USB, either to this framework (--local) or to Mobilerun Cloud.
  • iOS Portal: the iOS app that lets the framework drive the iOS Simulator.
  • mobile-harness: an agent skill that lets Claude Code, Codex, and OpenClaw control Android, iOS, and cloud phones. App cards teach the agent how each app works, and shared memory keeps what it learns across tasks. It scores 100% on AndroidWorld and 98.34% on iOSWorld (benchmark results).
  • Mobilerun Cloud: cloud phones for AI agents. Hosted Android phones and dedicated iPhones, real numbers and inboxes for SMS and email codes, residential and mobile IPs in any region, scheduled and event triggers, and mobilerun VA, a no-code assistant for mobile tasks. Drive it through the REST API, Python and TypeScript SDKs, or MCP, and watch every step live.

📚 Documentation

👥 Contributing

Contributions are welcome. Please feel free to submit a pull request or open an issue.

📄 License

This project is licensed under the MIT License. See LICENSE for details.

Security Checks

To help catch security issues before submitting changes, run:

bandit -r mobilerun
safety scan

Metadata

Release files for mobilerun 0.7.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mobilerun 0.7.1
File Size Uploaded Provenance
mobilerun-0.7.1.tar.gz 17.6 MB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for mobilerun 0.7.1
File Interpreter ABI Platform
mobilerun-0.7.1-py3-none-any.whl Python 3 none any Details

Total release size: 17.9 MB

Release files / mobilerun-0.7.1.tar.gz

Download URL mobilerun-0.7.1.tar.gz
Size 17.6 MB
Tags Source
SHA-256 checksum
How to use checksums
2cde7f28e3ec6833b9d45caa06d6377fed8b3ca76de640a324e3e444cd44b8af
BLAKE2b-256 checksum
How to use checksums
fcd00811cf5820b207c2b33f56ce9aa775e79733650a28e2b42428571ccf5aad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / mobilerun-0.7.1-py3-none-any.whl

Download URL mobilerun-0.7.1-py3-none-any.whl
Size 314.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9835fb227e180d2b40d34954924e08bcb8a676b2cd2e2c419d1bd8be4678762f
BLAKE2b-256 checksum
How to use checksums
cf9f822df2a29581b2c735b82747568bcc971d5820a9fc34d59923f985be3ba1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Security for mobilerun 0.7.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for mobilerun-0.7.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.7.1 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page