iOS · real device · automatic verification

Can an AI agent actually use an iPhone?

Agents that operate computers are measured on desktops and on Android, because both can be run in software, thousands at a time, for free. An iPhone cannot. It needs a physical device, a Mac, a signed developer build and a harness that does not lie to you. So nobody measures it. This is the missing benchmark.

32tasks on a real iPhone
57automatic checks
100.0%best score so far
0humans grading

Leaderboard

Every task is run on a physical iPhone running iOS 26. Nothing is simulated, and no human decides whether a run passed.

ModelPass ratePassedAvg stepsAvg timeCost/task
Claude Sonnet 5100.0%
3/38.344s$0.169
A task passes only if the phone itself ends in the required state. What the agent says it did counts for nothing: an agent that reports "I have enabled that setting" and an agent that enabled it are different things, and only the second one passes.

How it works

Each task is three parts. The first and third involve no model at all, which is what makes a score reproducible.

1. Setup

Deterministic steps put the phone in a known state, so every attempt starts identically.

2. Instruction

One sentence is handed to the agent. It sees the phone through an accessibility tree and a screenshot, and acts with taps, typing and gestures.

3. Checks

Assertions read the phone directly and decide pass or fail. The agent never sees them.

A complete task, exactly as it is stored in the repository:

id: calculator.arithmetic
name: Do arithmetic in the Calculator
app: com.apple.calculator
difficulty: easy
tags:
- calculator
- input
- first-party
instruction: Open the Calculator app and compute 47 multiplied by 9. Leave the result on screen.
setup:
- terminate: com.apple.calculator
- home
checks:
- kind: foreground_app
  text: com.apple.calculator
- kind: regex_on_screen
  text: \b423\b
teardown:
- terminate: com.apple.calculator
notes: A precise sequence of taps where every one must land. 47x9=423.

The tasks

9 easy, 18 medium, 5 hard. All of them run against Apple's own applications: Settings, Safari, Notes, Reminders, Clock, Calculator, Weather, Contacts and the home screen itself. No third-party app is automated, so no third party's terms are involved.

TaskAppDifficultyChecksResult
calculator.arithmetic
Open the Calculator app and compute 47 multiplied by 9. Leave the result on screen.
calculatoreasy2pass
calculator.percentage
Open the Calculator and work out what 15 percent of 240 is. Leave the answer on screen.
calculatormedium2pass
clock.stopwatch.start
Open the Clock app, go to the Stopwatch tab and start it.
mobiletimereasy2pass
clock.timer.set
Open the Clock app and start a timer for 5 minutes.
mobiletimermedium2not run
clock.worldclock.tab
Open the Clock app and switch to the World Clock tab.
mobiletimereasy2not run
contacts.search
Open Contacts and use its search field to search for the letter 'a'. Stop once results s
MobileAddressBookmedium2not run
multi.app_switch
Open the Calculator, then open Safari, then go back to the Calculator.
springboardmedium1not run
multi.settings_to_safari
Find this iPhone's iOS version in Settings, then open Safari and search the web for that
springboardhard2not run
notes.checklist
Open Notes, create a new note, and make its first line a checklist item reading 'milk'.
mobilenoteshard2not run
notes.create_titled
Open the Notes app and create a new note whose first line is exactly "phoneshell benchma
mobilenotesmedium2not run
notes.search
Open Notes and use search to find the note containing the words 'phoneshell benchmark'.
mobilenotesmedium2not run
reminders.complete
Open Reminders, find the reminder called 'collect parcel' and mark it as completed.
remindershard2not run
reminders.create
Open Reminders and add a new reminder called 'collect parcel'.
remindersmedium2not run
resilience.scrolled_list
In Settings, open the General page.
Preferencesmedium2not run
resilience.wrong_app
Go to the Settings page for Display and Brightness.
Preferencesmedium2not run
safari.navigate.example
Open Safari and go to example.com
mobilesafarieasy2not run
safari.newtab
Open Safari and open a brand new empty tab.
mobilesafarimedium2not run
safari.read.heading
Open Safari, go to example.com, and tell me the exact heading shown on that page.
mobilesafarimedium1not run
safari.search.web
Open Safari and search the web for 'iso 8601 date format'. Stop once results are showing
mobilesafarimedium2not run
settings.about.reach
Open Settings and navigate to the About page that shows the iPhone's model number.
Preferenceseasy2not run
settings.accessibility.reach
Open Settings and go to the Accessibility page.
Preferenceseasy2not run
settings.battery.percentage
Open Settings, go to the Battery screen, and tell me the current battery percentage.
Preferencesmedium2not run
settings.bluetooth.reach
Open Settings and go to the Bluetooth page.
Preferenceseasy2not run
settings.search.wifi
Open Settings and use its search field to search for "Wi-Fi", then open the Wi-Fi settin
Preferencesmedium2not run
settings.software_update.reach
Open Settings and navigate to the Software Update screen. Do not install anything.
Preferencesmedium2not run
settings.storage.reach
Open Settings and navigate to the iPhone Storage screen that shows how much space is use
Preferencesmedium2not run
system.app_switcher.open
Open the iPhone's app switcher so the recently used apps are showing.
springboardhard1not run
system.appstore.open
Open the App Store app. Do not download anything.
AppStoreeasy1not run
system.control_centre.open
Open the iPhone's Control Centre.
springboardhard1not run
system.spotlight.find_app
Using the iPhone's own search (Spotlight), find the Calculator app and open it.
springboardmedium1not run
weather.open
Open the Weather app.
weathereasy1not run
weather.read_temperature
Open the Weather app and tell me the current temperature where I am.
weathermedium2not run

Run it yourself

You need a Mac, an iPhone, a cable and an Apple developer account. The harness builds and installs the automation runner onto the phone for you.

git clone https://github.com/<org>/phoneshell
cd phoneshell
bin/phoneshell doctor      # tells you exactly what is missing
bin/phoneshell setup       # builds and installs the runner on your iPhone
bin/phoneshell up          # brings the bridge up

bin/phoneshell bench --list
bin/phoneshell bench --model claude-sonnet-5

Who this is for

Teams running agents against real iPhones

The harness is free and open, forever. What breaks it is not your code: it is an iOS point release, an Xcode update, or a change in WebDriverAgent, any of which can stop the bridge working on a Tuesday morning. We keep a tested build working and there is a person to call. That is what is sold, and nothing else is.

Teams whose flows a device farm cannot run

Cloud device farms give you clean, ephemeral phones. Some things cannot be tested on one: an OTP to a real SIM, a payment through a local wallet, region-locked content, an account with real history behind it. Those run on a real handset or they do not run. If that is your release checklist, this is built for exactly that.

Labs training phone-use models

Every published mobile-agent number is Android, because Android runs in software and iOS does not. If you want your model measured on iOS instead of assumed to transfer, the suite above is free to run today, and held-out tasks and scored runs on real hardware can be arranged.