New mobilerun VA is now in beta, a hosted 24/7 agent for mobile automation

Benchmark methodology.

How we evaluated mobile-harness on iOSWorld and AndroidWorld: the tools, app cards, shared memory, and scoring behind the results.

The evaluation setup
Actor
gpt-6-astra / low
Tools
mobile-harness
Knowledge
App cards + memory
Time budget
30 minutes per session
iOS judge
GPT-5.4 mini (114 tasks); GPT-6 Astra high (19 tasks)
Explore all 249 task replays

We ran AndroidWorld and iOSWorld with mobile-harness. We achieved 100% on AndroidWorld, with all 116 tasks receiving an official score of 1.0. On iOSWorld, we achieved a 98.24% average official score across 133 tasks.

We wanted to see how well a standard coding agent could handle mobile tasks when given mobile tools, app knowledge, and a way to reuse what it learns.

01 / The harness

Mobile tools for the agent
you already use.

mobile-harness is a set of tools and instructions for running mobile tasks through agents such as Claude Code, Codex, and OpenClaw. It combines Android and iOS controls with app cards, memory, and recovery guidance.

Its main advantage is ease of use: you can handle mobile tasks through the agent you already work with, alongside its usual tools. The guidance lives in readable Markdown files, so you can inspect and adapt it. Shared memory lets the agent reuse what it learns across tasks.

These files also support self-improvement. An agent can review execution traces and refine the app cards and memory, making what it learns available to later tasks.

02 / App knowledge

Knowing the app helps
finish the task.

App cards

How the app works.

Where things are, how to save a change, and how to check that it stuck.

Memory

What experience teaches.

Navigation shortcuts, reliable procedures, and gestures that do not work on a particular screen.

Both live in Markdown files. You can open the files the agent reads, change an unclear instruction, and keep your own overrides. When the agent does something unexpected, you have somewhere concrete to look.

Most of the guidance work was done by a self-improvement agent. It reviewed execution traces, identified where the task-solving agent struggled, and refined the relevant app cards and memory. It checked the revised procedures before the next evaluation round.

App cards held the main workflows, while memory captured lessons learned during execution. Together, they gave the agent a consistent approach to using each app and a way to carry useful knowledge between tasks.

03 / Outcome checks

Check that the change stuck.

A tool returning successfully does not tell you whether the task is done. Text can be entered without being saved. A tap can open the wrong item. A list can have more entries below the screen.

We used accessibility trees to identify controls and read content, alongside screenshots to check the visible state. The guidance also called for reading back saved changes before reporting completion.

An action can execute successfully without achieving the task’s goal. The official task score measures the outcome.
04 / Evaluation setup

Two platforms.
The same mobile harness.

AndroidWorld and iOSWorld evaluation configuration
ConfigurationAndroidWorldiOSWorld
DevicePixel 6 emulatoriPhone 17 Pro simulator
OSAndroid 13 / API 33iOS 26.5
Tasks116133 across 26 apps
Actorgpt-6-astra / lowgpt-6-astra / low
Execution budget30 minutes per session; existing action budgets30 minutes per session
ScoringOfficial benchmark evaluationGPT-5.4 mini (114 tasks); GPT-6 Astra high (19 tasks)
Recorded interactions1,4197,388

App cards and shared memory were enabled for both benchmarks. Seed 42 was used where supported.

Benchmark and fixture corrections

We patched AndroidWorld bugs and corrected confirmed iOSWorld app and data problems. Three iOS tasks used corrected data fixtures while keeping their goals and rubrics: mem-034, multi-046, and multi-084.

Recorded evidence

The trajectory collections contain a screenshot for every recorded interaction, plus instructions, tool operations, answers, judgments, and timing. The website presents a compressed screenshot replay and action history for every task, with GIFs and action JSON available below the phone.

GIFs display screenshots at fixed intervals. Use the recorded execution durations when comparing speed.

05 / Interpreting the scores

What the numbers measure.

AndroidWorld

116 / 116 full passes

All 116 AndroidWorld tasks received an official score of 1.0, giving a 100% score. The recorded actions and screenshots are available in the task explorer.

See the AndroidWorld leaderboard, linked from the Google Research project page. Leaderboard entries are community-submitted, self-reported results and are not independently verified.

iOSWorld

98.24% mean official score

124 tasks received full scores of 1.0, and 9 received partial scores greater than 0.0 and less than 1.0. Each of the 133 tasks is weighted equally; partial credit contributes to the mean. The binary pass rate is 93.23% (124/133 tasks with a score of 1.0).

130.6608 ÷ 133 × 100 = 98.24%

06 / Earlier results

A different model.
A different setup.

We previously got 91.4% on AndroidWorld with Mobilerun, using GPT-5. This time, we wanted to see how well a standard coding agent could handle mobile tasks with mobile-harness. The earlier evaluation used a different model and setup, so the comparison does not isolate the effect of the harness or memory.

Does this mean we will not use specialized agents anymore? No. For speed and lower token consumption, we would still choose a specialized mobile agent. It gives us more control over which model handles each operation, how much context it needs, and how many steps it takes.

Give your agent mobile tools.

Follow the setup instructions to use your existing agent for mobile tasks.

Get started with mobile-harness ↗