Android + iOS · Windows + macOS

Unlock the agentic world on your phone

XPhoneUse is a screen mirroring tool for Android and iOS devices. No Apple account required — xcode, XCTest and more let you control your iPhone directly. It integrates capabilities including real-time desktop streaming, live device control, and text input into agents such as Claude, Codex and WorkBuddy via MCP, CLI and Skills, enabling agents to operate mobile phones just like human users.

Free · No account · Everything stays on your machine

XPhoneUse

What people build

Real use cases from the community — each one written by the person who submitted it, reviewed before it goes up.

See more cases

Why XPhoneUse

A real device, not an emulator — and an interface agents can actually use.

📱

A real phone, not an emulator

Your actual device with your actual accounts and app state. No fake GPS, no risk scores, no “this app cannot run on an emulator”.

🤖

Built for agents

An MCP server runs inside the app, alongside the CLI and the skill, exposing taps, text input, scrolling, screenshots and more. Claude, Codex, WorkBuddy and any other agent can use it.

🔌

Android and iOS

Android over scrcpy with full input and control. iOS 27+ over the USB CoreDevice tunnel — screen, input and screenshots on one cable. Older iOS falls back to AirPlay mirroring.

🔒

Nothing leaves your machine

The MCP endpoint is 127.0.0.1:7070 and the device link is USB or your own LAN. No relay server, no cloud account, no telemetry about what you do on the phone.

🎬

Screenshots, recording, macros

Grab the screen in well under a second on the iOS tunnel, record a session to video, or record a flow once and replay it forever.

✨

Small things that matter

Device nicknames, Wi-Fi debugging for Android, quality presets, light/dark themes, and an installer that sets up the Windows drivers for iPhone support.

Judgement by Jev - a System One model

A copilot for the conversation

The hard part of a conversation is not the tapping - it is knowing what to say back. The copilot watches the mirror: when the picture settles it reads the conversation, decides what the other person means and what the moment calls for, drafts three replies and ranks them.

  • The reading happens on your machine — offline OCR over the chat, no network and no image tokens
  • Judgement first, words second — what the other person really means, what they need, how dangerous the moment is, whether substance is right now: Jev, a System One decision model, answers all of it in one call
  • Three drafts, ranked — hold the line, promise something concrete, stay short and low-key, each with a confidence score
  • It never sends anything — picking a draft fills the app's input box; what you do with it is up to you

Nothing is sent unless the copilot is on: judging and drafting go to whichever services you configure - Jev, a System One model, for the judgement, any OpenAI-compatible endpoint for the drafts - and the keys stay in this machine's settings.

✦ Copilot 3 candidates ready

Venting anger 82% · Needs: to feel cared about · Do: acknowledge first · Danger 3/9

Candidates (ranked by Jev)
#187%Sorry, I sat on this. Let me pin down a time today — does that work?Fill
#274%I hear you. Give me a moment — I'm looking into it right now.Fill
#361%You're right, I handled that badly. I'll explain properly tonight.Fill
The panel, illustrated: the judgement on top, the drafts ranked under it, and Fill putting one in the input box

Your agent's hands and eyes

Anything a person can do on the phone, an agent can do through the CLI or MCP: open an app, find a button by its text, tap it, type a message, scroll a feed, read the result back, and verify with a cheap screenshot diff.

  • tap · longtap · swipe · scroll in normalized coordinates
  • text — full Unicode, with an --enter that sends the message
  • find / ui-tree — read the Android UI instead of paying for pixels
  • screenshot --compare — local pixel diff, only look when something changed
  • macro record / macro play — replay a flow without re-deriving it
  • ocr — read the screen's text offline: the way to read an iPhone, boxes and all, without image tokens
Docs
# the agent reads the screen, finds the button by text, taps, verifies
python scripts/xphoneuse-cli.py connect
python scripts/xphoneuse-cli.py ocr --json
python scripts/xphoneuse-cli.py find "发送"
python scripts/xphoneuse-cli.py tap 0.86 0.94
python scripts/xphoneuse-cli.py text "今晚七点见" --enter
python scripts/xphoneuse-cli.py screenshot --compare

Running in three steps

No SDK, no build step, no jailbreak or root.

Plug in and allow

Android: turn on USB debugging. iPhone: unlock and tap Trust - the developer image the screen, touch and screenshots need is installed by the app, and so is the Developer Mode that installing it needs (it warns for 10 seconds first; the phone restarts once).

Mirror it

Pick the device in the app. The window switches to the live screen, and input goes both ways — you can use the phone while the agent does.

Hand it over

Please enter the following in agent conversations such as Claude Code, Codex, WorkBuddy: Please install skill: https://xphoneuse.com/static/skills/xphoneuse.zip

Questions people ask

Do I need to root or jailbreak my phone?

No. Android only needs USB debugging (and Wi-Fi debugging if you want to work cable-free). iPhone needs the cable and one trust confirmation: the screen, touch, screenshot and pasteboard services come from the device's developer image, and the device refuses to install one while Developer Mode is off - so the app downloads and mounts it, and turns Developer Mode on itself when it has to (after a 10-second warning; the phone restarts once). You can turn the switch off again afterwards.

Does my screen or my data go to a server?

No. The video stream goes from the phone to your machine, and the MCP server listens on 127.0.0.1 only. There is no relay and no account. The app sends anonymous usage counts (launch/exit, platform) to a self-hosted analytics instance — never screen content, app names or device identifiers.

Why does iOS ask “Allow Paste?” when the agent types?

Non-ASCII text is delivered through the iPhone clipboard, and iOS asks every app the first time. Tap Allow Paste once, or make it permanent per app in Settings → [App] → Paste from Other Apps → Allow. Pure ASCII text is typed key by key and never triggers it.

Can the agent and I use the phone at the same time?

Yes. The app and the MCP session share one connection to the device, so you can watch (or take over) while the agent works. Screenshots prefer the live mirror frame, which costs nothing on the device.

What can't it do on iOS?

iOS has no back button equivalent, no rotation control and no audio forwarding — those are Android-only. If neither the USB tunnel nor the Bluetooth bridge is attached, an iPhone session is view-only.

Is there an API for automation?

Yes — that is the point. Use the CLI, or speak MCP directly from your own agent: 28 tools covering input, screenshots, offline OCR, the UI tree, app launching, macros, Wi-Fi debugging and device management.

Does the copilot reply for me?

No. It writes drafts: picking one fills the app's input box, and the send key is always yours. With the copilot off it captures nothing, reads nothing and sends nothing; the transcript lives in memory and goes away with the app. The judging and drafting requests go to the services you configured, and the keys stay in this machine's settings.

Get in touch

Something broken, something missing, or you want to talk about wiring this into your own agent - reach me directly.

X / Twitter — @kindle_jiang

DM or mention me - both work.

xphoneuse@aovik.com

Prefer email? That reaches me too.

Unlock the agentic world on your phone

Download XPhoneUse, plug in a device, and Unlock the agentic world on your phone.

Download now