Skip to main content
Glama

OpenPhone

Control a physical iPhone from macOS using USB screen capture, Bluetooth HID and AssistiveTouch. Use the local dashboard, connect an agent through MCP, or run your own relay for remote access.

OpenPhone is under development. The device controls and recording tools work on the tested phone; remote streaming, onboarding and broader recovery testing are still in progress. Validation status records the evidence.

Get started

You need macOS, Xcode command-line tools, Python 3.10+, Node 20+, an unlocked trusted USB iPhone, and Bluetooth pairing with AssistiveTouch enabled. See the device setup guide for permissions and button mappings.

git clone https://github.com/Array-Ventures/open-phone.git
cd open-phone
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -e .
npm ci --ignore-scripts
openphone build
openphone serve

In a second terminal, activate the same environment and run openphone dashboard. Select your phone, connect, and use the live preview and controls.

openphone --help lists device, dashboard, relay, bridge, recording and build commands. Every command has its own --help.

Related MCP server: ios-device-mcp

Connect an agent

The local MCP exposes 17 phone tools. Configure your MCP client with:

[mcp_servers.open_phone]
command = "node"
args = ["/absolute/path/to/open-phone/packages/mcp/src/mcp.mjs"]

The MCP uses the repository's installed .venv by default. Stop the local API before giving the local MCP ownership of the same phone. The remote MCP exposes 13 relay tools and also supports Streamable HTTP with optional OAuth. MCP guide

Project layout

src/openphone/        Python package: device, services, relay, bridge, video
packages/mcp/        MCP transports, tools, OAuth and integration tests
native/              Objective-C and Swift macOS helper sources
tests/               Python unit tests and opt-in hardware checks
docs/                Setup, architecture and validation guides
requirements/        Optional video dependency lock

Credentials, databases, recordings and compiled helpers stay outside Git.

Development

npm test
openphone build

CI runs the protocol tests and macOS native compilation. Hardware tests require a connected phone and are opt-in. Architecture · Development guide · All documentation

MIT licensed. See LICENSE.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      B
      maintenance
      Drives a physical iPhone or iPad over Appium and WebDriverAgent (XCUITest) from a Mac, letting an agent inspect the screen, tap, type, swipe, launch apps, and run Shortcuts. Safe-by-default access modes, app allowlists, and elicitation-gated destructive operations keep admin actions behind explicit approval.
      6
      45 npm
      1
      MIT
    • A
      license
      B
      quality
      B
      maintenance
      Enables controlling a real iPhone or iPad over USB for app development testing, including building and installing apps, launching with console logs, inspecting the accessibility tree, tapping, swiping, typing, taking screenshots, managing app files, and recording audio.
      29
      1
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables AI agents to operate a real iPhone from a Mac by reading the screen over USB and sending taps, swipes, typing, and app launches over Bluetooth, with every action returning a fresh screenshot so the agent can verify its work. Runs as a local MCP server, so agents can test iOS apps on physical devices and automate everyday phone tasks.
      38 npm
      10
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables an MCP client on macOS to control a paired iPhone over Wi-Fi or USB through system developer services, without any app installed on the phone. Exposes tools for device discovery and connection, fresh screenshots, taps, drags, Home, app listing and launching, and Unicode text entry.
      GPL 3.0