One prompt. Your coding agent runs real phones.
Portable operating instructions plus the mobilerun-core
Python API. Point Claude Code, Cursor, Codex or OpenClaw at any Android
or iPhone, local or cloud, and let it drive. Not another agent to run,
just the control surface yours was missing.
Paste this into your agent.
It clones the repo, reads install.md, installs the package,
and is ready to operate phones. No glue code to write.
Set up https://github.com/droidrun/mobile-harness for me. Read `install.md` and follow the steps to install `mobile-harness`.
Prefer to do it by hand? A venv and one install is the whole setup:
cd mobile-harness python -m venv .venv # Python 3.11, 3.12 or 3.13 .venv/bin/pip install "mobilerun-core[local]"
Three ways in. Pick the one that fits.
| Path | What it is | Use it when |
|---|---|---|
| Mobile Harness | Your coding agent drives any phone through the mobilerun-core Python API. | Drive a local or cloud phone from your editor |
| MCP server | A hosted HTTP endpoint that plugs cloud devices into your editor, zero install. | Cloud phones, nothing to set up |
| Framework | The open-source mobilerun agent that runs a full mobile agent locally. | You want the autonomous agent itself |
One facade, every backend.
The same connect() call reaches a cloud phone or a local
one. Then real helpers: tap_text, scroll_until,
find_nodes, screenshot, start_app.
from mobilerun_core import Mobilerun
m = Mobilerun()
device = m.connect("dev_...", backend="cloud") # or a local phone
device.start_app("com.android.settings")
device.tap_text("Battery")
device.screenshot() Any phone, same code.
| Backend | What it reaches | In connect() |
|---|---|---|
| Cloud | A hosted phone at api.mobilerun.ai, reached with your API key. | backend="cloud" |
| Local Android (ADB) | A phone plugged into your machine, driven over ADB. | backend="local-android-adb" |
| Local Android (Portal) | An Android device over an HTTP Portal when there is no ADB. | backend="local-android-http" |
| Local iOS (Portal) | A local iPhone reached through ios-portal. | backend="local-ios-http" |
Registers with your editor
- Claude Code: import
@AGENTS.mdinto your CLAUDE.md - Codex: symlink the repo into your skills folder
- OpenClaw: package it as a skill with SKILL.md as the entrypoint
- The harness routes the agent to the smallest file it needs, so it stays token-light
Safe by default
- Screen and app content is treated as untrusted data, never instructions
- Stops on credentials, payment or destructive consent
- Never prints tokens or API keys to logs, chat or screenshots
- Local, agent-owned memory and credentials stay out of git
Mobile Harness, common questions.
Is Mobile Harness an agent?+
Local device or cloud device?+
How do I set it up?+
How is this different from the MCP server?+
What do I need?+
Related: the MCP server · the framework · mobilerun-core · devices
Point your agent at a phone.
One prompt sets it up. Drive a local device or a cloud phone from the editor you already use.