Skip to main content
The Mobile primitive runs cloud mobile emulators/devices on Mobilerun Cloud. You provision hosted Android/iOS devices, run natural-language agent tasks on them (“Open Settings and enable dark mode”), display the live screen, manage an app (APK) library, and reach the entire Mobilerun API through a wildcard wrapper. Naïve owns the Mobilerun credentials and scopes every device to your tenant — your agents never hold a Mobilerun key (the same operator-key model as Compute with AWS).
Phones are billed per minute from your credits (3 credits/device-minute by default, ~$0.15/min) and agent tasks are billed per step actually taken (0.4 credits/step; the steps budget you request, default 25, is reserved on dispatch and the unused remainder is refunded when the task finishes): provision creates the device immediately and the meter runs until you terminate it — there is no upstream auto-stop, so always terminate phones you’re done with (running out of credits auto-terminates the phone, as does the max-runtime failsafe). Provisioning, device lifecycle (reboot/reset/terminate), proxy changes, running/stopping tasks, uploading apps, and mutating wildcard calls are sensitive — depending on the user’s Account Kit they may require human approval (status: "pending_approval").

Create a phone & display it

Scope follows the client you hold: naive.mobile.* (your default user) vs naive.forUser(id).mobile.* (an end-user). Each tenant only ever sees the phones it created through Naïve, and each tenant’s credits fund only its own phones.

Run an agent task

Device lifecycle

Proxy (optional residential IP)

Devices come online on a datacenter IP by default. Attach a SOCKS5 proxy for a residential / country-specific IP:
Bring your own proxy and there is no bandwidth charge — you pay your proxy provider, not Naïve. Mobilerun’s own sticky-IP “Connect” layer (smart_ip: true) bills residential bandwidth per GB with no per-device byte counter, so it is off unless the operator enables it; while a Connect proxy is attached the phone meters an extra +2 credits/device-minute and the surcharge stops when you removeProxy.

Apps

Wildcard: search & call any Mobilerun API

Mobilerun Cloud is large (devices, tasks, apps, proxies, eSIM, device tools like tap/swipe/screenshot, flows, triggers, …). The mobile primitive ships a generated catalog of every operation, so any endpoint is reachable without a dedicated method:
Device-scoped operations are restricted to your own devices, and mutating calls go through the same approval gate as the curated methods.

CLI

Configuration

Set the operator’s Mobilerun Cloud API key (dr_sk_…) in the API environment as MOBILERUN_API_KEY (override the base URL with MOBILERUN_API_BASE). Billing is metered by the API: NAIVE_MOBILE_CREDITS_PER_MINUTE (default 3) is charged per device-minute, NAIVE_MOBILE_CREDITS_PER_TASK_STEP (default 0.4) per agent step taken (the requested budget is reserved on dispatch, then reconciled against the step count Mobilerun reports), and devices auto-terminate on credit exhaustion or after NAIVE_MOBILE_MAX_RUNTIME_MINUTES (default 1440). Mobilerun Connect (smart_ip) proxies are rejected unless NAIVE_MOBILE_CONNECT_ENABLED=true, which adds NAIVE_MOBILE_CONNECT_CREDITS_PER_MINUTE (default 2) per minute while one is attached to recover the ~$10/GB upstream bandwidth. naive mobile status reports configuration, reachability, your phone counts, and the operator-wide upstream device total (the “confirm nothing is billing” check).