Cloud phones for AI agents

One CLI creates an iOS simulator or an Android emulator in the cloud. Your agent reads the screen as named elements and is told whether each action worked.

Works with

agent — zsh
~❯phone-use ask "iOS Version"
→ Settings › General › About
iOS Version = 26.1
~❯phone-use create android
sbx_91ad3e57c0f24b8d9e6a1c7b5f3d2e48 android running
~❯eval "$(phone-use env sbx_91ad3e57c0f24b8d9e6a1c7b5f3d2e48)"
~❯phone-use tap "Network & internet"
✓ Tapped "Network & internet"
~❯phone-use create ios
sbx_7c2e9f04b1d84a6e9a3c5f2d8e1b7a60 ios running
~❯eval "$(phone-use env sbx_7c2e9f04b1d84a6e9a3c5f2d8e1b7a60)"
~❯
9:41
Settings
Airplane Mode
Wi-FiOff
BluetoothOn
General
Accessibility
Camera
Display & Brightness
Notifications
Sounds & Haptics
Focus
Screen Time
General
About
Software Update
AirDrop
AirPlay & Continuity
Picture in Picture
AutoFill & Passwords
Background App Refresh
Date & Time
Dictionary
About
NameiPhone
iOS Version26.1
Model NameiPhone 17 Pro
Songs0
Videos0
Photos6
Applications1
10:24
Settings
Network & internetMobile, Wi‑Fi, hotspot
Connected devicesBluetooth, pairing
AppsRecent apps, default apps
NotificationsNotification history, conversations
Battery100%
DisplayDark theme, font size, brightness
Network & internet
InternetAndroidWifi
Calls & SMS
Airplane mode
Hotspot & tetheringOff
Data SaverOff

Your agent knows what it’s tapping

It works from the structure of the screen, hears back after every action and learns the way around an app as it goes.

What your agent sees

observe returns every element on screen with its label, role and position, so the agent acts on names, not pixels.

9:41
phone-use observe
@e1 [Button] "Close" (16,48 74x42)
@e2 [StaticText] "Trip Status" (152,60 87x19)
@e3 [StaticText] "Requesting" (29,366 116x21)
@e4 [StaticText] "ETA 1 min" (274,364 88x30)
@e5 [StaticText] "Home to Oracle Park" (29,395 141x16)
@e6 [Button] "Requesting" (16,438 87x26) (selected)
@e7 [Button] "Driver assigned" (111,438 111x26)
@e8 [Button] "Driver arriving" (231,438 104x26)

iOSWorld

An open benchmark of 133 tasks across 26 apps, judged by its own checks.

52.6%task success · best published 51.9%
TasksPhone UseBest published
Single app92.681.5
Memory54.354.3
Multi-app33.336.7
See every task

Checked taps

Each tap reports whether the screen changed, so one that did nothing never passes as done.

Agree to terms
Continue
  1. tap "Continue"no change
  2. tap "Agree to terms"changed
  3. tap "Continue"changed

App maps

Screens and the paths between them are saved, so goto needs no model to get there.

phone-use goto "Fonts"
SettingsGeneralDisplayAboutFontsDictionaryText Size
Arrived at Fonts0 model calls

Skills

Record a task once. Replays run without a model call, checking each step.

phone-use skill run send-report
  1. open_app "Mail"
  2. tap "Compose"
  3. fill "Weekly report"
  4. tap "Send"
  5. verify "Sent"

Works with your agent

One MCP server gives any MCP client the same tools on both platforms. Shell agents call the CLI.

Claude CodeCodexCursorAny MCP clientphone-use mcpiOS simulatorAndroid emulator

Scoped access

Every phone gets its own token, and the token dies when the phone closes.

Your account key never leaves your machine.

  1. create iostoken issued
  2. close <id>token revoked
  3. 15 min idlecloses itself

Questions

Read the docs
Which agents can use it?
Any MCP client, including Claude Code, Codex and Cursor, and any agent that can run shell commands. The CLI also has a built-in agent: run phone-use task "…" with an Anthropic API key.
Do I need a Mac?
Not for cloud phones. They run on our hardware and the CLI reaches them over the network. You only need a Mac with Xcode to run an iOS simulator on your own machine.
How long does a phone last?
One hour by default, up to 24 hours with --ttl. A phone closes itself after 15 minutes with no activity; change that with --idle, or pass --idle off. Close one any time with phone-use close <id>.
How is it billed?
By the minute, for as long as a phone is running, from create to close. The console shows your usage.
Can I test my own app?
On iOS, yes: phone-use install ./MyApp.app uploads a simulator build to the phone. These are simulators and emulators, not physical phones, so App Store apps and accounts that require a real device will not work.
Can I watch my agent work?
Yes. phone-use create prints a link to the phone in the console. iOS phones stream live video and you can tap along from the browser. Android phones show screenshots for now.

Start with a cloud iPhone or Android within seconds