Devices
Cloud Android Device: Create, Stream and Run Macros
Create a cloud Android device in Macro Automation Studio, view it over WebRTC, install APKs and run macros server-side with your PC off, and fix stuck devices.
- Windows
- Mac
- Cloud device
- Studio
- API
- MCP
On this page
- Before you start
- What a cloud Android device is
- Create a cloud device
- Google Play on a cloud Android phone
- Device states
- Start, stop and delete
- View the live screen
- Install apps
- Run macros 24/7 on a cloud device
- Cloud device groups and proxies
- REST API and MCP
- What it costs
- Troubleshooting
- Device stuck in placing or starting
- Stream does not connect
- App install fails
A cloud device is an Android device that Macro Automation Studio (MAS) runs for you on its own GPU hosts. It sits next to your local emulators in the app, streams its screen over WebRTC, and runs macros server-side, so your computer can be off. This page covers creating one, its states, apps, runs and limits.
Before you start
- MAS is installed and you are signed in. See Install MAS.
- Your plan includes at least one cloud device. Cloud devices are an add-on to a paid plan; see Billing.
- For runs: a Python macro in your library. The run dialog lists Python macros only.
What a cloud Android device is
Each cloud device is a full Android device in a MAS data center, rendered on a server GPU. Start and stop take real time: about 48 seconds for a fresh boot, 17 for a resume and 9 for a stop. The screen reaches you as a WebRTC stream that carries video and your taps, and one viewer holds it at a time; the card shows an eye icon, Being viewed live, when it is open elsewhere. Macros run on MAS servers next to the device, so closing the app does not end a run. Installed apps and signed-in accounts survive a stop; only Delete erases them.
Create a cloud device
- Open Cloud Devices in the sidebar.
- Type a Device name.
- Pick the Android version. The list comes from the server; Android 15 is the default.
- Pick a Resolution: Light (540 by 960), Standard (720 by 1280) or Sharp (1080 by 1920). Sharp streams about twice the pixels and needs more bandwidth.
- Pick a DPI, or keep Default, the preset’s own density. The allowed values are 160, 240, 320 and 480.
- Optionally tick Include Google Play Store (see below).
- Click Create.
The device appears as Stopped; creating does not start it. Version, resolution and DPI are fixed once created, so a different profile means a new device. The page header counts Running and Allocated devices against your plan, and an account can hold up to 20 cloud devices per account.
Google Play on a cloud Android phone
Google apps are opt-in per device. Tick Include Google Play Store when you create a device, or click Add Google Play on an existing one: the device restarts once, in about 15 seconds, and keeps its data. Add Google Play to all covers every device without it.
The first time, MAS shows the Install Google apps disclaimer, which you accept once per account. In short: the device installs MindTheGapps, an independent open-source package maintained by LineageOS developers, containing Google Play Store, Google Play Services and Google Services Framework. MAS is not affiliated with, endorsed by, or licensed by Google; neither MAS nor the MindTheGapps project grants you any license to Google’s applications, and your use of Google apps and of any Google account is governed by Google’s own Terms of Service. The virtual device is not Play Protect certified, so apps that verify device integrity will not work: banking and payment apps, Google Wallet, HD or DRM streaming, and some games. You install and use Google apps at your own risk.
A device with Google Play shows a Play badge. If the install fails, the card offers Retry.
Device states
| State | What it means |
|---|---|
| Stopped | Allocated, not running, data kept. Does not count as running. |
| Placing | MAS is finding a host with room, or provisioning a new one (about 15 minutes). |
| Starting | Android is booting: usually under 1:30 for a first boot, under 0:20 for a resume. |
| Ready | Running. You can view it, install apps and run macros. |
| Stopping | Shutting down, usually under 0:10. |
| Error | Something failed. The card shows the reason, and Start retries. |
Every transition is asynchronous; the card shows the elapsed time while a device is moving.
Start, stop and delete
- Start boots the device. When every running slot in your plan is in use, it fails with a message like “2 of 2 running, stop one to start another”.
- Stop frees the running slot and the host’s GPU and RAM while keeping the disk. Start resumes it.
- Delete destroys the device and everything on it: installed apps, logged-in accounts, game progress. The dialog says so first.
A running device with no active run is stopped automatically after 60 minutes. Its data is kept; Start resumes it in seconds. A running macro keeps the device up.
View the live screen
Click View on a ready device. Negotiating stream means the WebRTC connection is being set up; once live, your clicks, drags and keys go straight to the device, and the header offers Full screen, Back, Home and Close. Closing the viewer releases the stream for another window. In Device Groups, a cloud device card has Watch live, which docks the same viewer beside the card.
Install apps
Click Install APK on a ready device. The chooser offers three paths:
- Upload a file (.apk / .xapk): a
.apk,.xapk,.apkmor.apksfile of up to 1 GiB. MAS checks it, uploads it to the device’s host and installs it there. Container formats are unpacked, 32-bit and x86 splits are dropped, expansion files are placed, and the rest installs as one bundle. A package with no arm64 build is refused before upload; cloud devices are 64-bit ARM only. - Search for apps to download: type an app name, or paste a link or package id, and click Install. MAS downloads the app on this computer and installs it the same way.
- Manage installed apps: see what is on the device, Update an app when the catalog has a newer build, or uninstall one with the trash button (click twice to confirm). The header shows app slots used against the device’s limit.
Progress shows on the card: Checking app, Uploading app, Installing app. Failures show the verbatim reason, including adb’s INSTALL_FAILED codes.
Run macros 24/7 on a cloud device
- Start the device and wait for Ready.
- Click Run on the card and pick a Python macro.
- Follow the run line: launching, running with elapsed time, finished or failed. Stop run ends the run and leaves the device on.
Before the run starts, MAS syncs your code: it hashes the macro’s project folder and uploads a snapshot only when the tree changed. A snapshot holds at most 500 files and 10 MiB zipped; dot-folders such as .git and .venv, plus __pycache__, node_modules, venv and .pyc files, are skipped. A project over a limit fails before the run with the reason, for example “project has more than 500 files”. The snapshot is what the cloud runs, so the Code Editor’s working tree executes without a commit or push. See Git projects and code sync.
Runs started from a cloud device group use the device’s macro and its arguments or settings profile, and show the script’s output in the card. Every run lands in Runs with its status.
Cloud device groups and proxies
A device group holds one kind of device. Create a group with Type set to Cloud, click Add cloud device and pick an allocated device; a cloud device can only join a cloud group. Each device in the group has its own macro, arguments or settings profile, proxy and webhooks, and Start All launches a server-side run per device in turn. See Device groups.
A proxy attached to a cloud device is applied inside the device’s network when the device next starts, so all of its traffic exits through the proxy and the card shows the exit IP. See Proxies.
REST API and MCP
With an API key you can start and watch server-side runs: POST /api/hosted/devices/{id}/run with macro_id and optional args, POST /api/hosted/runs/{id}/stop, GET /api/hosted/runs/{id}, and GET /api/macros/{id}/code-state plus POST /api/macros/{id}/code-snapshot to sync code. Device lifecycle, streaming and app installs need the app’s own sign-in. See the REST API. The MAS MCP server exposes cloud devices to MCP clients.
What it costs
Cloud devices are an add-on to any paid plan, priced per device per month, with a monthly AI credit allowance included for MAS Agent. Add or remove devices mid-cycle; the change is prorated and the renewal date stays. See the pricing page and Billing.
Troubleshooting
Device stuck in placing or starting
Placing means no host has room yet. MAS provisions a new host, which takes about 15 minutes, and the device moves on by itself. If nothing frees up within 45 minutes the device goes to Error with “no capacity became available”, and Start retries. A first boot usually finishes under 1:30 and a resume under 0:20; if the elapsed time runs well past that, click Stop, wait for Stopped, then Start again. That also moves the device onto a current host, which fixes “this device’s host does not support APK installs yet”.
Stream does not connect
- The device must be Ready. A stopped device answers “The device must be running before you can view it”.
- Stuck at Negotiating stream: the stream ticket is short-lived, so close the viewer and click View again, or click Reconnect when offered.
- Open elsewhere: one viewer holds the stream. Close it in the other window or MAS instance.
- A network that blocks WebRTC never paints the video. Try another network, then ask in Discord.
App install fails
- “this package has no arm64-v8a build”: the app ships only 32-bit or x86 code. Get an arm64 version.
- “not a valid APK”: the file is not an Android package or is corrupted.
- “the limit is 1024MB”: the package is over 1 GiB.
- “INSTALL_FAILED_MISSING_SPLIT”: the bundle is incomplete. Download the full XAPK and install that.
- “install timed out”: the host is under load. Retry in a few minutes.
Next steps
Related pages
Thanks. If something is wrong, tell us in Discord.
Questions? Ask in Discord