Blolabel
iOS 26 · physical iPhone · graded by the device

Agents Are Measured
On Android.
We Measure iOS.

Android runs in software, free, thousands of phones at once, so that is where every published number comes from. An iPhone cannot. It needs real hardware, a Mac, a signed developer build and a harness that does not lie to you. So nobody measures it.

See the results →
76 tasks scored iPhone 17 Pro Max, iOS 26.6 0 humans grading
95.9%best score
76tasks
45capability probes
31end-to-end jobs
138automatic checks
19Apple apps

Leaderboard

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

ModelPass ratePassedAvg stepsAvg timeCost/task
Claude Sonnet 595.9%
71/746.955s$0.172

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.

What it measures

A pass rate says how often a model succeeded. This says at what. Each capability is isolated by at least one short task, so a failure names a missing skill instead of pointing vaguely at a long task that went wrong somewhere in the middle.

CapabilityWhat it takesTasksPassed
app-resolveturning a spoken app name into the right bundle id22/2
backleaving a screen when the way out has no label11/1
context-menuholding a link until its preview menu opens11/1
date-navigatemoving around a calendar rather than a list11/1
edge-gesturea swipe that must start at y=0, off the drawn screen10/1
hierarchygoing up, not just down, through nested screens55/5
icon-only-controla control with a glyph and no text to match on11/1
lifecyclelaunching, backgrounding and returning to an app33/3
pickerreaching a spinning wheel11/1
picker-multiaddressing the right column when several are side by side11/1
picker-setturning a wheel to a value, which a swipe cannot do33/3
precise-tapshitting small targets laid out in a grid22/2
read-fieldreading a value back off the screen, not guessing it33/3
recovernoticing the wrong app is open and fixing it22/2
scroll-endreaching something below the fold22/2
search-then-actusing an app's own search instead of navigating66/6
sliderreaching a continuous control11/1
switchreading and setting a toggle11/1
tabbarmoving between tabs in an unfamiliar app44/4
text-exacttyping a string that must match character for character22/2
text-longtyping something long enough for autocorrect to interfere11/1
text-selectselecting text that is already on screen11/1

How a task works

Three parts. The first and the third involve no model at all, which is what makes a score reproducible.

01 SETUP

Put the phone in a known state

Deterministic steps, no model involved, so every attempt starts identically.

02 INSTRUCTION

Hand over one sentence

The agent sees an accessibility tree and a screenshot, and acts with taps, typing, gestures and picker wheels.

03 CHECKS

Ask the phone, not the agent

Assertions read the device 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 76 tasks

19 easy, 44 medium, 13 hard, all against Apple’s own applications: Settings, Safari, Notes, Reminders, Clock, Calculator, Contacts, Maps, Calendar, Files, Books, Compass, Shortcuts, Voice Memos and the home screen itself. No third-party app is automated, so no third party’s terms are involved.

TaskAppDifficultyChecksStepsTimeResult
books.search
Open the Books app and search for 'Moby Dick'.
iBooksmedium2655spass
calculator.arithmetic
Open the Calculator app and compute 47 multiplied by 9. Leave the result on screen.
calculatoreasy2944spass
calculator.chain
Open the Calculator and compute (12 plus 8) multiplied by 5. Leave the answer on screen.
calculatormedium11280spass
calculator.division
Open the Calculator and compute 1024 divided by 8. Leave the answer on screen.
calculatoreasy11058spass
calculator.percentage
Open the Calculator and work out what 15 percent of 240 is. Leave the answer on screen.
calculatormedium21163spass
calendar.month_view
Open the Calendar app and switch it to the month view, showing a whole month at once.
mobilecalmedium2325spass
calendar.today
Open the Calendar app and make sure it is showing today.
mobilecaleasy2319spass
clock.alarm.reach_picker
Open the Clock app, go to Alarms, and start adding a new alarm so the time picker is sho
mobiletimermedium2453spass
clock.alarm.set_time
Open the Clock app, go to Alarms, start adding a new alarm and set its time to 7:30 in t
mobiletimerhard46187spass
clock.stopwatch.start
Open the Clock app, go to the Stopwatch tab and start it.
mobiletimereasy2448spass
clock.tab.alarms
Open the Clock app and switch to the Alarms tab.
mobiletimereasy2339spass
clock.tab.timers
Open the Clock app and switch to the Timers tab.
mobiletimereasy2439spass
clock.timer.set
Open the Clock app and start a timer for 5 minutes.
mobiletimermedium2553sfail
clock.timer.set_hours_minutes
Open the Clock app, go to Timers, and set the timer to 1 hour and 30 minutes. Do not sta
mobiletimerhard3774spass
clock.timer.set_minutes
Open the Clock app, go to Timers, and set the timer duration to 5 minutes. Do not start
mobiletimermedium2652spass
clock.timer.set_seconds
Open the Clock app, go to Timers, and set the timer to 45 seconds with no hours and no m
mobiletimermedium29100spass
clock.worldclock.tab
Open the Clock app and switch to the World Clock tab.
mobiletimereasy2448spass
compass.read_heading
Open the Compass app and tell me which direction the phone is pointing.
compassmedium2321spass
contacts.search
Open Contacts and use its search field to search for the letter 'a'. Stop once results s
MobileAddressBookmedium2541spass
files.browse_tab
Open the Files app and go to its Browse tab.
DocumentsAppeasy2430spass
maps.search_place
Open Maps and search for the Eiffel Tower. Stop once the search results show it.
Mapsmedium2547spass
measure.open
Open the Measure app.
measureeasy1325spass
multi.app_switch
Open the Calculator, then open Safari, then go back to the Calculator.
springboardmedium1539spass
multi.return_after_detour
Open the Calculator, then open Notes, then come back to the Calculator.
calculatorhard1531spass
multi.settings_to_safari
Find this iPhone's iOS version in Settings, then open Safari and search the web for that
springboardhard2772spass
multi.three_apps
Open the Calculator, then the Clock, then Settings. End on Settings.
springboardmedium1545spass
notes.checklist
Open Notes, create a new note, and make its first line a checklist item reading 'milk'.
mobilenoteshard2858spass
notes.create_titled
Open the Notes app and create a new note whose first line is exactly "phoneshell benchma
mobilenotesmedium2746spass
notes.search
Open Notes and use search to find the note containing the words 'phoneshell benchmark'.
mobilenotesmedium2956spass
notes.text_select
Open Notes, create a new note, type the word 'anchor', then long press that word so the
mobilenoteshard210101spass
notes.type_long
Open Notes, create a new note, and type: the quick brown fox jumps over the lazy dog nin
mobilenotesmedium2645spass
notes.type_punctuation
Open Notes, create a new note, and type exactly: benchmark-test (v2).
mobilenotesmedium2636spass
reminders.complete
Open Reminders, find the reminder called 'collect parcel' and mark it as completed.
remindershard2631spass
reminders.create
Open Reminders and add a new reminder called 'collect parcel'.
remindersmedium2652sfail
resilience.deep_start
Open Safari and go to example.com
mobilesafarimedium1329spass
resilience.keyboard_up
In Settings, open the General page.
Preferencesmedium2548spass
resilience.scrolled_list
In Settings, open the General page.
Preferencesmedium2543spass
resilience.wrong_app
Go to the Settings page for Display and Brightness.
Preferencesmedium21369spass
safari.link_menu
Open Safari, go to example.com, and long press the 'More information...' link until its
mobilesafarihard2432spass
safari.navigate.example
Open Safari and go to example.com
mobilesafarieasy2340spass
safari.tabs.open_switcher
Open Safari and show the tab switcher, where all the open tabs are listed.
mobilesafarimedium2427spass
safari.read.heading
Open Safari, go to example.com, and tell me the exact heading shown on that page.
mobilesafarimedium1322spass
safari.search.web
Open Safari and search the web for 'iso 8601 date format'. Stop once results are showing
mobilesafarimedium2537spass
safari.type_url_exact
Open Safari and go to example.com/index.html
mobilesafarimedium1321spass
settings.about.reach
Open Settings and navigate to the About page that shows the iPhone's model number.
Preferenceseasy2638spass
settings.about.serial
Open Settings and find the About page, then tell me the Model Number of this iPhone.
Preferencesmedium2640spass
settings.accessibility.reach
Open Settings and go to the Accessibility page.
Preferenceseasy223109spass
settings.back.twice
Open Settings, go into General, then into About, then go back to the main Settings list.
Preferencesmedium3978spass
settings.battery.percentage
Open Settings, go to the Battery screen, and tell me the current battery percentage.
Preferencesmedium21155spass
settings.bluetooth.reach
Open Settings and go to the Bluetooth page.
Preferenceseasy2426spass
settings.datetime.reach
Open Settings and navigate to the Date & Time page under General.
Preferencesmedium21068spass
settings.fonts.reach
Open Settings and navigate to the Fonts page under General.
Preferencesmedium2761spass
settings.keyboard.reach
Open Settings and navigate to the Keyboard page under General.
Preferencesmedium2871spass
settings.language.reach
Open Settings and navigate to the Language & Region page under General.
Preferencesmedium2873spass
settings.scroll.to_bottom
Open Settings and scroll all the way to the very bottom of the main settings list.
Preferencesmedium2769spass
settings.search.wifi
Open Settings and use its search field to search for "Wi-Fi", then open the Wi-Fi settin
Preferencesmedium2645spass
settings.search.battery
Open Settings, search for "Battery" using the search field, and open the Battery page fr
Preferencesmedium2649spass
settings.search.bluetooth
Open Settings, search for "Bluetooth" using the search field, and open the Bluetooth pag
Preferencesmedium226199spass
settings.search.storage
Open Settings, search for "Storage" using the search field, and open the Storage page fr
Preferencesmedium2531spass
settings.software_update.reach
Open Settings and navigate to the Software Update screen. Do not install anything.
Preferencesmedium2849spass
settings.sounds.reach
Open Settings and go to Sounds & Haptics.
Preferenceseasy2641spass
settings.storage.reach
Open Settings and navigate to the iPhone Storage screen that shows how much space is use
Preferencesmedium2738spass
settings.storage.read_available
Open Settings, go to iPhone Storage, and tell me roughly how much storage is used.
Preferenceshard2652spass
settings.textsize.reach
In Settings, reach the screen with the slider that makes text larger. Do not change it.
Preferenceshard223179spass
settings.wifi.switch_visible
Open Settings and go to the Wi-Fi page.
Preferenceseasy2429spass
shortcuts.gallery
Open the Shortcuts app and go to the Gallery.
shortcutsmedium2326spass
system.app_switcher.open
Open the iPhone's app switcher so the recently used apps are showing.
springboardhard1668spass
system.appstore.open
Open the App Store app. Do not download anything.
AppStoreeasy1322spass
system.control_centre.open
Open the iPhone's Control Centre.
springboardhard1323spass
system.notifications.open
Open the iPhone's Notification Centre.
springboardhard124232sfail
system.spotlight.find_app
Using the iPhone's own search (Spotlight), find the Calculator app and open it.
springboardmedium1754spass
system.spotlight.search_text
Use the iPhone's search to search for the word 'weather'. Stop when results are showing.
springboardmedium1545spass
tips.open
Open the Tips app.
tipseasy1318spass
voicememos.open
Open the Voice Memos app. Do not start a recording.
VoiceMemoseasy1319spass
weather.open
Open the Weather app.
weathereasy1--not scored
weather.read_temperature
Open the Weather app and tell me the current temperature where I am.
weathermedium2--not scored

Run it yourself

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/blomega/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. 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.

Flows a device farm cannot run

Cloud farms give you clean, ephemeral phones. Some things need a real handset: an OTP to a real SIM, a payment through a local wallet, region-locked content, an account with history behind it.

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 rather than assumed to transfer, the suite above is free to run today.