Phone Use CLI

An app, CLI, MCP server and skill let Claude Code and Codex see and tap an unmodified iPhone, with no jailbreak and no cable.

  • 610 ★ on the repository
  • Last commit
CLI

Broad access

Why this level

  • The agent gets input on a real phone: it can open apps, read notifications and change settings.
  • The Linux install needs sudo and turns off the Bluetooth input plugin in bluetoothd.
All reasons and checks

lxe/phoneuse

Install

Manual install

git clone https://github.com/lxe/phoneuse.git ~/phoneuse
ln -s ~/phoneuse/bin/phoneuse ~/.local/bin/phoneuse
phoneuse install

Running from source on Linux, from docs/SOURCE.md. The phoneuse install step needs sudo.

Access and checks

How we review

Broad accessThe tool can change data, run commands or handle secrets.

  • The agent gets input on a real phone: it can open apps, read notifications and change settings.
  • The Linux install needs sudo and turns off the Bluetooth input plugin in bluetoothd.

This is third-party code. Review the repository files before installing.

What it does

Phone Use shows the iPhone screen in a window on a computer and accepts input the way a Bluetooth mouse and keyboard do. The screen arrives over AirPlay, input goes out over Bluetooth HID, and the Phone Use app from the App Store runs on the iPhone itself. No jailbreak or cable is needed; the phone and computer must share a Wi-Fi network. A person works the phone with mouse and keyboard from the window, and an agent connects with the "Connect Claude Code" button in the app. Before an agent takes control, Phone Use can ask permission on the iPhone itself, and you can take over at any moment. Until the iPhone app is paired with the computer, agents are refused every action. An agent drives the phone with `phoneuse` commands or MCP tools: `look`, `tap`, `tap_on`, `scroll`, `type_text`, `open_app`, `navigate`, `read_notifications` and more. Each action waits up to three seconds for the first visible change on screen. Linux has a Flatpak, macOS 15 and newer a dmg image plus a separate bridge, and Windows runs from source for now. The bridge, a LilyGO T-Display board, acts as a Wi-Fi Bluetooth keyboard and mouse and keeps the computer's own Bluetooth free.

Who it is for. Mobile developers and testers who want Claude Code or Codex to run scenarios on a real iPhone from Linux, macOS or Windows.

Good fit when

  • A scenario has to be checked on a real device rather than in a simulator.
  • An agent must open an app, read a notification or change a phone setting.
  • A tester wants to repeat a step by hand with the mouse and hand the next step to an agent right away.
  • Automating the app through XCUITest is impossible because its source is not available.

Not a fit when

  • You need to run the phone unattended: the app asks for permission and requires a paired iPhone.
  • You cannot add a Bluetooth board or give the computer's Bluetooth over to acting as a keyboard and mouse for the phone.
  • The project needs stability: the author calls Phone Use alpha software.

Example request

On the iPhone, open Settings, find the Wi-Fi section and tell me which network the phone is connected to.

Limitations

Phone Use is alpha software. Tested were an iPhone 17 Pro with iOS 26, Arch Linux with BlueZ 5.87 and Hyprland 0.56.

The screen arrives through AirPlay mirroring that the person starts from the iPhone's Control Center; it cannot be started from the computer. The pointer is turned on through AssistiveTouch, and with Dwell Control on iOS taps wherever the pointer stops.

On Linux, `phoneuse install` needs sudo and turns off the input plugin in bluetoothd, so the computer stops accepting Bluetooth keyboards and mice for itself. The install script with --uninstall reverts it.

How to disable. Stop Phone Use and revoke the pairing with the iPhone app. On Linux run `sudo scripts/install.sh --uninstall` to remove the phoneuse-hid service and restore the bluetoothd input plugin.

FAQ

Do I need a jailbreak or a cable?

No. The screen comes over AirPlay, input over Bluetooth, and the app installs on the iPhone from the App Store. The phone and computer must share a Wi-Fi network.

How do I connect Claude Code?

Click "Connect Claude Code" in the Phone Use app. The app sets up the connection, and the phoneuse skill and MCP server live in the repository. Until the iPhone app is paired with the computer, every action is refused.

What is the bridge and do I need it?

The bridge is needed on macOS: a LilyGO T-Display board acting as a Bluetooth keyboard and mouse over Wi-Fi. On Linux it is optional and frees the computer's Bluetooth.

How do I turn on the pointer on the iPhone?

Run `phoneuse cursor on`: Phone Use speaks a request asking Siri to turn on AssistiveTouch. Or enable it in Accessibility settings and keep Dwell Control off.

Does it work on Windows?

Only from source for now; see docs/WINDOWS.md. Ready builds exist for Linux (Flatpak) and macOS 15 or newer (dmg).

Discussion

No questions or reviews yet.

CLI tools

Lets Claude Code and Codex drive a real iPhone: read the screen, tap, type and scroll in any app

MCP serverBroad access494Repository stars

MCP server and plugin: an agent sees the iPhone screen through a $7 ESP32 board, then taps, swipes and types with no iOS changes.

MCP serverBroad access4.9KRepository stars

An MCP server that lets an agent drive Android, the iOS Simulator, HarmonyOS, Aurora, desktop and browser, take screenshots and debug apps

MCP serverBroad access384Repository stars

mobilecli drives iOS and Android devices, emulators and apps from the terminal, and its skill teaches Claude Code how to use it

CLIBroad access317Repository stars

Skills and a CLI that let Claude Code, Codex and OpenCode operate an Android phone: open apps, tap, type and test workflows

SkillBroad access1.8KRepository stars

README in short

The README is short: links to the website and releases, an alpha warning, three install steps, ways for a person and an agent to work, a description of the bridge and a list of docs for running from source, Windows, architecture and the app API.

README badge

Original SKILL.md

---
name: phoneuse
description: See and operate the user's iPhone from this PC (Linux or Windows) with the `phoneuse` CLI (AirPlay mirror for the screen, Bluetooth mouse/keyboard for input). Use when a task needs the iPhone: open or use an app, read what is on the phone screen, tap, type, swipe, check a notification, change a phone setting, or test something on the device. Also use when the mirror or the Bluetooth link needs starting or fixing.
---

# Operating the iPhone with Phone Use

The `phoneuse` command drives a real, unmodified iPhone. Its screen arrives over
AirPlay as a mirror window on this PC and as a live page at
http://localhost:8777, and input goes in as a Bluetooth mouse and keyboard.
Everything an agent does is a `phoneuse` subcommand; run `phoneuse --help` for
the full list.

## Before acting

1. Run `phoneuse status`. You need `iPhone app: 1 paired` (or more), `HID service:
   active`, `connected=True`, and `Mirror window: ... showing the phone` (Windows:
   `Mirror: showing the phone`). "not paired": stop and ask the user to pair the Phone
   Use app (Pair iPhone in the Phone Use window); every action is refused until they
   do. If something is off and you don't see why, `phoneuse doctor` checks the whole
   setup and prints the fix for each problem.
2. No mirror window: check whether `phoneuse up` is running. If it isn't, start it
   somewhere the user can see it (a terminal or tmux window they use), not hidden in
   the background. "not mirroring" (or no window): ask the user to start Screen
   Mirroring to this PC's receiver ("Phone Use on <computer>"; `phoneuse status`
   names it) from the iPhone's Control Center. You can't start
   mirroring from the PC, and every input command refuses until it runs.
3. **Show the user the phone** before your first action, so they can watch what
   you do: open http://localhost:8777 (`phoneuse view --print` prints the address).
   If you have a browser of your own, such as a built-in browser pane, open it
   there. Otherwise run `phoneuse view`, which opens it in the user's default
   browser. Do this once per task; if the page is already open, leave it. The page
   is for the user to watch: act through `phoneuse` commands, never by clicking in
   the page.
4. `connected=False`: run `phoneuse status` again after a few seconds (the daemon
   reconnects), then ask the user to tap "Phone Use" in the iPhone's Bluetooth settings
   (Windows: the PC's name, which `phoneuse status` shows as `name=`).
5. HID service not active: on Linux `phoneuse install` (needs sudo) sets it up; on
   Windows `phoneuse up` starts it (it keeps running after `up` stops).

Report a problem