Train, test and run mobile agents on Android devices modelled on real phones, not on an emulator. Save a clean state, restore it before every run, clone as many copies as the job needs.
An agent that only ever practised on an emulator meets a different world on a real phone. Here it works in the one your users have.
Model, sensors, camera, GPU, SIM and carrier of the phone the device is modelled on. Apps behave the way they do for real users.
Play Store and Play services on every device, apps installed the way a phone installs them.
Mobile or residential exit in the country you pick. Time zone, locale and SIM follow it.
Evaluation and training need the same starting point every time, and many of them at once.
Set a device up once: apps installed, accounts signed in, data in place. Snapshot it.
Restore the snapshot before each episode, so every run starts from the same state.
New devices from the same snapshot: ten or a hundred identical starting points.
Stopped devices cost nothing. A burst of runs costs what it uses.
One call to look: a fresh screenshot, every element on the screen with its position, and the app in front. One call to act, and it waits until the screen settles. ADB when the check needs to go deeper.
POST /v1/devices/dev_04f2/snapshots/v3/restore
GET /v1/devices/dev_04f2/observe
→ { "seq": 41, "image": {…}, "activity": "…Cart",
"ui": [ { "text": "Checkout", "b": [60,1560,1020,1680] } ] }
POST /v1/devices/dev_04f2/act
{ "op": "tap_text", "text": "Checkout", "seq": 41, "settle": true }
adb shell dumpsys activity top
→ did the order go through?
We are opening this to a few teams first. Tell us what your agent does and how many devices it needs at once; we will set you up and write back within a day.