adb transport protocol and, on supported devices, the Frida transport. Bridge your local client to the tunnel and you can use familiar workflows against a cloud device, without installing anything on the device itself:
adb shell,adb install,adb push,adb pull,adb forwardover the adb tunnel.frida,frida-ps,frida-trace, and any Frida-based tooling over the Frida tunnel.
Requirements
adb and Frida access are only available on request. Contact Mobilerun support at contact@mobilerun.ai to have them enabled for your account.
- A Mobilerun API key (
dr_sk_...) - A device in the
readystate (see Devices) adbinstalled locally (Android SDK platform-tools) for the adb tunnel- Frida installed locally (
frida-tools) for the Frida tunnel, on a device whosecapabilities.fridaistrue - A WebSocket-to-TCP bridge such as
websocat
capabilities.frida is true for devices created in a Frida-enabled pool and false otherwise. The value is frozen at device creation, so toggling the pool setting later does not change existing devices.
Endpoints
Authenticate with the same
Authorization: Bearer dr_sk_... header you use for the REST API. You must own the device and it must be in the ready state, or the upgrade is rejected before the WebSocket opens. The Frida endpoint additionally requires capabilities.frida to be true.
Connect your local adb client
The adb endpoint speaks the raw adb transport, so your localadb daemon needs a TCP socket on the other end. The simplest setup pipes the WebSocket through websocat to a local port, then attaches adb to that port.
Connect your local Frida client
Frida’s client speaks its own transport over TCP. Bridge the WebSocket to a local port, then point Frida at that port with-H.
Access policy
By default, the adb tunnel is filtered so that everyday debugging workflows (shells, installs, file transfers, port forwards, app debugging, screenshots) pass through, while requests that would restartadbd, take the device offline, or mutate global device state are refused. Blocked requests fail with an in-stream error visible to your adb client.
Full, unfiltered access — including adb root — can be granted per-account on request. Contact contact@mobilerun.ai if you need it.
Troubleshooting
400 Bad Requeston the Frida upgrade — The device does not support Frida (capabilities.fridaisfalse). Provision a device in a Frida-enabled pool.401 Unauthorizedon upgrade — Check yourAuthorizationheader and that the API key has access to the device.409or412on upgrade — The device is not in thereadystate. List devices with?state=readyand pick one that is available.adbreportsclosed— The service you tried to open is denied by the policy. Look at the bridge’s stderr for the plaintext reason; switch to an allowed family (e.g. useadb shell svcinstead ofadb root).- Nested adb is refused — Forwarding to port
5555or to the device’s own adb port is intentionally blocked. Use the outer tunnel directly. - Frida reports the server is unreachable — The device’s Frida server did not start. Confirm
capabilities.fridaistrueon the device and retry, or contact support.