Mobilebox
Menu

How fast do cloud Android phones for agents start?

Limrun handed our script a usable phone in under a second (0.98 s); Mobilebox took 19.4 seconds and Phone Harness 23 seconds at the median. A local emulator on a GitHub-hosted runner took 50 seconds with KVM; without KVM, one of two boots finished, after 13.5 minutes.

Measured · 10 sessions per cloud service, 5 per CI emulator · CSV · scripts

Results

Medians, with p90 after the slash. Select a column to sort.

Bar chart of median seconds from create to first screenshot: Limrun 1.0, Mobilebox 19.4, Phone Harness 23.0, Mobilebox from a CI runner 20.3, local emulator with KVM 50.0. The emulator without KVM is off the scale at 13.5 minutes, in the one of two boots that finished.
Parallel phones, entry plan Park and resume Agent access
LimrunEU, 51 ms away0.98 s / 1.07 s0.38 s / 0.40 s0.85 s / 0.95 sURL$0.40Entry, $0.04/min; trial overage $0.06Unlimited, “subject to quotas” (as published)Not offered for Android instances (docs)REST, SDKs, MCP
MobileboxEU, 8 ms away19.4 s / 19.5 s1.45 s / 1.49 s1.17 s / 1.54 sURL$0.10$0.01/min, boot freeNo published capYes: resume 11.5 s / 11.8 sapp kept in 10 of 10REST, MCP
Phone HarnessUS West addresses, 170 ms away23.0 s / 70.0 s1.91 s / 2.35 s3.57 s / 29.32 sADB upload$0.50$0.05/min, boot free8 per account (as published)Saved profile phone (documented, not measured)REST, ADB; MCP listed
Mobilebox, from a CI runnerGitHub Actions ubuntu-latest20.3 s / 20.6 s2.09 s / 2.19 s1.17 s / 2.04 sURL$0.10No published capYes: resume 12.7 s / 12.9 sapp kept in 5 of 5REST, MCP
Local emulator, KVMGitHub Actions ubuntu-latest, API 3450.0 s / 50.3 s1.03 s / 3.52 s6.09 s / 7.31 sADB$0 public repo, $0.06 privaterunner minutes, plus 75 s setup per jobOne per runnern/aADB
Local emulator, no KVMGitHub Actions ubuntu-latest, API 3413.5 min / 13.5 minn=1: the 2nd boot didn’t finish in 15 min, so the job stopped18.7 s / 23.4 s2.1 min / 2.1 minADB$0 public repo, $0.06 privaterunner minutesOne per runnern/aADB

Cloud rows: client in Nuremberg, Germany, TCP connect time to each API shown under the name. Tap to screenshot is one tap plus one full screenshot, so network distance counts twice. Prices are list prices on November 8, 2026; "as published" means the vendor's own page, not something we tested.

What the numbers say

Fair reading, including where we are slower.

  • Limrun is the fastest on every speed metric. Its phones are ready before the create call returns, about 18 times faster than Mobilebox to a first screenshot and about 4 times faster from tap to screenshot.
  • Mobilebox is the most consistent, and the cheapest of the three cloud services. All 10 cold starts landed between 18.9 and 19.5 seconds. A 10-minute session costs $0.10, against $0.40 to $0.50 for the other two. It is also the only service here where we measured park and resume: 11.5 seconds back to a screenshot, with the installed app still there in 10 of 10 runs.
  • Phone Harness ran in two modes. Half the starts took about 21 seconds and half about 67, which is why its p90 is 70 seconds. Its servers answered from US West addresses, about 170 ms from our client, which adds to every ADB round trip. One of its 10 sessions lost Android’s input service after the first tap; that failure is in the CSV.
  • An emulator on the runner costs a minute before it starts. With KVM it booted in 50 seconds after a 75-second image download and AVD creation per job. Without KVM: the first boot took 13.5 minutes to a screenshot, the second didn’t finish within our 15-minute limit, and one tap plus screenshot took 18.7 seconds.

What we couldn’t test, and why

Listed, not dropped. Each one can be added when the reason goes away.

ServiceStatusReason
BrowserStacknot benchmarked (ToS)Its terms §3.3(f) forbid publishing “information regarding the performance of the Services”.
Genymotion SaaSnot benchmarked (ToS)The SaaS agreement §3(i) needs Genymobile’s prior written consent for a competitor to use the product.
LambdaTest (TestMu AI)not benchmarked (ToS)Use is internal-only, users must not be “competitors of TestMu”, and the service counts as confidential information.
Mobilerunnot measuredNew accounts sign up with Google, GitHub or Discord only; we only use email sign-ups for benchmarks. Published: $0.03 a minute overage, 60 free minutes, stop keeps apps and data.
AWS Device Farmnot measuredAn AWS account needs a payment card; this benchmark uses free tiers without payment details. Published: $0.17 a device-minute.
Firebase Test Labnot measuredNeeds a Google account sign-in, and it runs test matrices, not live sessions, so tap latency doesn’t apply. Published: $1 an hour virtual, $5 physical.
phonebox.devnot measuredThe free week needs a payment card. Published: $0.06 a minute, parked phones free.

Context: agent sandboxes

Code and browser sandboxes start in about a second or less. Published, not measured by us.

Source
Vercel Sandboxcode0.53 s$0.0014 idle, up to $0.0057ComputeSDK, Nov 6
Daytonacode0.60 s$0.0011ComputeSDK, Nov 6
Cloudflare Sandboxcode0.67 sfrom $0.00005, Workers Paid planComputeSDK, Nov 6
Modal Sandboxescode0.80 sfrom $0.00035ComputeSDK, Nov 6
E2Bcode1.13 s$0.0018 to $0.0028ComputeSDK, Nov 6
Kernelbrowser0.25 s$0.0010 headlessBrowser Arena, Nov 8
Browser Use Cloudbrowser0.39 s$0.00033Browser Arena, Nov 8
Browserbasebrowser0.79 s$0.0020Browser Arena, Nov 8
Steelbrowser1.19 s$0.0017Browser Arena, Nov 8

ComputeSDK starts 100 sandboxes at once and times create to first command. Browser Arena times 100 sessions per provider from a small AWS instance. Both publish their methods; both rankings move from run to run, and every browser benchmark we found is run by, or close to, a vendor. Prices are our arithmetic from each vendor’s list price; sources and math are in the CSV’s notes. More in Agent sandboxes compared: start time and price.

Method

One script per service, the same steps, every run kept.

  1. 1

    Cold start

    Clock starts before the create request and stops when the first screenshot’s bytes arrive. Waiting for the vendor’s “ready” is included; a phone the vendor keeps booted counts as fast, because that is what your agent sees.

  2. 2

    Tap to screenshot

    Ten taps per session at two fixed points on the home screen, each followed by a full screenshot, through the vendor’s own API or SDK. Phone Harness has no tap or on-demand screenshot endpoint, so its taps and screenshots go over ADB, its documented path.

  3. 3

    Install

    The same APK everywhere: Fossify Calculator 1.4.0 from F-Droid, about 4 MB, installed from its public URL where the API takes a URL (Limrun, Mobilebox) and uploaded over ADB where it doesn’t (Phone Harness, the emulator).

  4. 4

    Clean up and report

    Every phone deleted in a finally block, checked afterwards. Medians and p90 by nearest rank, no outliers removed, failed steps counted in the CSV. Android 14 everywhere we could choose it; EU region where the vendor lets us pick one.

Reproduce it

The scripts are in the public repo. Bring your own keys; each script deletes what it creates.

Terminal
git clone https://github.com/fifteenA/mobilebox && cd mobilebox/benchmarks && npm install
MOBILESANDBOX_API_KEY=… CLIENT="your city" node mobilebox.mjs
LIM_API_KEY=… CLIENT="your city" node limrun.mjs
PHONE_HARNESS_API_KEY=… ADB=$(which adb) CLIENT="your city" node phoneharness.mjs
ACCEL=on ./emulator.sh          # or run the "benchmarks" workflow on GitHub Actions
node summarize.mjs && node chart.mjs

Downloads: summary CSV (medians and p90 per service and metric) · raw samples (one row per measurement, failures included) · chart. Vendors: if a number here is wrong or out of date, write to hello@mobilebox.dev and we’ll rerun it.

Read more