Limrun vs Run CloudCloud iOS simulators and Android emulators, compared.
Both platforms rent you a phone you never have to plug in. Limrun (lim.run) leans into scripted device control and Apple build infrastructure. Run Cloud leans into live media input, embedded sessions, and running mobile devices next to Linux sandboxes on one API. This article compares what each one actually documents today, and where each is the better fit.
Published 2026-07-25 · Limrun details are taken from lim.run and docs.limrun.com as published in July 2026. Products move quickly; check both sets of docs before committing.
At a glance
| Topic | Limrun | Run Cloud |
|---|---|---|
| iOS simulators | Simulator instances on managed Macs, created with the lim CLI or SDK. | Simulator sessions with a signed browser stream URL, created with the runcloud CLI or SDK. |
| Android emulators | Booted emulator instances with an ADB tunnel and browser streaming. | Emulator sessions with the same lifecycle, assets, and signed stream URL as iOS. |
| Programmatic UI control | Element tree, tap by accessibility label, typing, screenshots, recordings, app lifecycle, logs. | Create, install, open URL, screenshot, and release; interactive control through the stream or embed channel, with scripted control planned. |
| Test frameworks | Documented Appium (forked XCUITest driver for iOS, upstream over ADB for Android) and Playwright over CDP on Android. | Planned. Today sessions are driven through the CLI, SDK, or embed; first-party test-framework support is on the roadmap. |
| Camera and microphone input | Not documented as a public capability. | Live browser webcam into the app camera pipeline, plus uploaded video and microphone audio injection. |
| Builds | Remote Xcode sandboxes, Bazel remote build execution for Apple actions, signed IPAs, PR-preview GitHub Action. | Xcode sandboxes and cloud builds on the same account: archive, sign, export a signed IPA, upload to TestFlight. Free during beta. |
| Embedding | <RemoteControl /> from @limrun/ui for iOS, iPadOS, watchOS, and Android. | Signed iframe URL with embed and loading-guard modes plus a postMessage command channel. |
| Linux sandboxes | Out of scope; Limrun extends a sandbox you already run elsewhere. | Firecracker microVMs with snapshot, fork, pause, and resume on the same API and bill. |
| Published pricing | No public rate card as of July 2026; quotes typically land around $0.06 per Android minute and $0.12 per iOS minute. | $0.02 per active simulator minute, published; Linux metered per second; self-serve billing in the dashboard. |
What Limrun is
Limrun sells three instance types: an iOS simulator running on a real Mac, an Android emulator with an ADB tunnel, and an Xcode build sandbox. A single call can provision a simulator with an Xcode sandbox attached, so a build lands straight onto the device that streams back to your browser. Instances are created from the lim CLI, from the @limrun/api SDKs in TypeScript, Python, or Go, or from a per-instance MCP server that a coding agent can call directly.
The device-control surface is the part worth studying. Limrun documents reading the accessibility element tree, tapping by label, typing, screenshots, recordings, app lifecycle, keychain state, logs, and reverse tunnels. On top of that it documents Appium — a forked XCUITest driver on iOS, upstream Appium over ADB on Android — and Playwright against Chrome on the Android emulator over CDP. Its build story goes further than most: remote xcodebuild, Bazel remote build execution for Apple actions, signed IPAs, StoreKit in-app-purchase testing, and a GitHub Action that posts a live preview link on every pull request.
Limrun is a Y Combinator company (Spring 2026) and cites Replit, Rork, Momentic, and other agent products as users. It does not publish a rate card, so pricing is a conversation rather than a page.
Limrun documentationWhat Run Cloud is
Run Cloud is one API for the computers an agent needs: Linux microVM sandboxes on Firecracker, iOS simulator sessions, Android emulator sessions, and Xcode sandboxes that archive, sign, and export a signed IPA straight to TestFlight. Mobile sessions are created with runcloud ios create or runcloud android create, or with the @run-cloud/sdk TypeScript client, and return a signed browser URL for the live stream along with labels, inactivity timeouts, hard timeouts, and a capacity queue that waits for a free device instead of failing the call.
The distinguishing capability is input. A browser webcam can be carried into the remote simulator's camera pipeline, so a QR scanner, a document-capture flow, or a video-calling screen sees live frames instead of a static placeholder. Uploaded video and images can be imported into Photos for repeatable runs, and audio can be looped through the app's microphone input. Sessions run in parallel, which is what makes broadcaster-and-receiver or multi-device demos practical.
The other half is embedding. The signed session URL takes an embed mode and an optional loading guard, emits streaming, app-launch, authentication, inactivity, and completion events to the parent page, and accepts commands for reload, Home, rotation, screenshots, and the accessibility inspector. That is the difference between showing a device in a demo and shipping one inside your product.
Run Cloud simulator documentationDevice control: scripted versus streamed
This is the clearest split, and it is worth being blunt about. If your workflow is a loop of read the screen, tap a control, assert on the result, Limrun documents that loop end to end — element tree, tap by accessibility label, typing, screenshot — and exposes it to agents through MCP. Run Cloud's SDK today covers session lifecycle, app install, open URL, screenshot, media upload, and release; the tapping happens through the live stream, the embed command channel, or a test harness you already run inside the app. First-party test-framework support is planned for Run Cloud, so treat this as a description of today rather than a permanent boundary.
Which one is right depends on who is holding the phone. Automated regression suites want the scripted API. Products where a human, or a human watching an agent, drives a real device in the browser want the streamed session and the embed contract. Teams doing both should test the exact flows they care about before picking.
Builds and the Apple problem
Neither platform expects you to own a Mac, and both cover the same core loop. Both run Xcode sandboxes that build your source in the cloud and hand back an artifact, and both produce signed IPAs for real devices and TestFlight. On Run Cloud that sits on the same account as your simulators and sandboxes — archive, sign, export, upload — and it is free during beta. On Limrun the build sandbox can be provisioned together with a simulator so the result installs onto the paired device as soon as xcodebuild finishes.
The remaining differences are around the edges of the build, not the build itself. Limrun additionally documents Bazel remote build execution for Apple actions, which matters for large repositories already on Bazel, StoreKit in-app-purchase testing, and a GitHub Action that posts a live preview link on every pull request. If any of those is the reason you are shopping, weigh it. If you need source in and a signed artifact out, both platforms do that today.
Pricing and how to compare it
Run Cloud publishes its rates: simulator sessions cost $0.02 per active minute, Linux sandbox CPU is metered per core-second and memory per GiB-second, and Xcode builds are free during beta. Sign-up, API keys, and billing are self-serve in the dashboard. Limrun does not publish a rate card as of July 2026, so getting a firm number means contacting them; the figures typically quoted are around $0.06 per minute for Android and $0.12 per minute for iOS, three to six times the Run Cloud rate for the same active minute.
When you do compare, normalize on the same unit. Ask what counts as billable time — active minutes, wall-clock instance life, idle time before an inactivity timeout fires, build minutes — and price the workload you actually run: a 40-second smoke test on every pull request bills very differently from a session a customer keeps open for twenty minutes.
Run Cloud pricingWhere each one is strong
Limrun
- A scripted device-control surface: element trees, tap-by-label, typing, recordings, and app lifecycle from the CLI, SDK, or a per-instance MCP server.
- Documented Appium and Playwright paths, so an existing mobile test suite can point at cloud devices without a new harness.
- Extras around the Apple build: Bazel remote build execution for large repositories, StoreKit in-app-purchase testing, and PR previews through GitHub Actions.
- Organization controls for larger teams: OIDC single sign-on and published regional egress IP addresses for allowlisting.
Run Cloud
- Live media input: pass a browser webcam into the simulator camera, import a known video or image into Photos, and loop audio through the app microphone.
- An embed contract built for products: signed iframe URL, loading guard, readiness and lifecycle events, and parent-page commands for reload, Home, rotation, and screenshots.
- iOS simulator and Android emulator sessions that share one lifecycle: the same create, install, open-url, timeout, and release calls on both platforms.
- Linux microVM sandboxes on Firecracker, with snapshot, fork, pause, and resume, plus adapters that keep Modal-, E2B-, and Vercel-shaped sandbox code running unchanged.
- Xcode sandboxes and cloud builds that archive, sign, export a signed IPA, and upload straight to TestFlight.
- All of it on one API, one key, and one invoice, instead of a mobile vendor bolted onto a compute vendor.
- Published per-minute and per-second rates with self-serve sign-up, API keys, and billing — no sales call to start.
Which one should you pick?
Choose Limrun when
- You want a scripted tap-and-assert loop against cloud devices without writing your own driver.
- Your test suite is already Appium, Maestro, Detox, or Playwright and you want to keep it.
- You need Bazel remote build execution, StoreKit in-app-purchase sandboxes, or PR-preview builds specifically.
- You need OIDC single sign-on or egress IP allowlisting today.
Choose Run Cloud when
- Your app depends on the camera or microphone: QR flows, document capture, video calling, vision features.
- You are embedding a live device inside your own product and need readiness events and parent-page controls.
- Agents need Linux compute and a phone screen in the same workflow, on one key and one bill.
- You want a rate card you can model before you commit, and self-serve access from sign-up to first session.
These are not mutually exclusive choices for every team. Both expose plain HTTP APIs and per-session credentials, so it is reasonable to run a build pipeline on one and customer-facing embedded sessions on the other while you decide.
Frequently asked questions
What is the main difference between Limrun and Run Cloud?
Limrun is focused on cloud mobile devices and Apple build infrastructure, with a deep scripted device-control API and documented Appium and Playwright integrations. Run Cloud puts iOS simulators, Android emulators, Linux microVM sandboxes, and Xcode builds behind one API, and adds live camera and microphone input plus a product-grade embed contract.
Can I drive taps and typing programmatically on Run Cloud?
Not through the Run Cloud SDK today, though it is planned. The documented surface is create, list, get, open URL, screenshot, asset install, media upload, and release, and interactive control happens through the signed stream, the iframe command channel, or your own in-app test harness. If a scripted tap-and-assert loop is the core requirement right now, Limrun documents that surface today.
Do both support Android?
Yes. Limrun runs booted Android emulators with an ADB tunnel and documents Appium over ADB and Playwright against Chrome on the emulator. Run Cloud runs Android emulator sessions with the same create, install, open-url, and release lifecycle as its iOS sessions, including labels, inactivity timeouts, and hard timeouts.
Which one is cheaper?
Run Cloud is cheaper per minute on the numbers available. Run Cloud publishes $0.02 per active simulator minute, with Linux sandboxes metered per second. Limrun does not publish a public rate card as of July 2026; the figures typically quoted are around $0.06 per minute for Android and $0.12 per minute for iOS, which is roughly three to six times the Run Cloud rate. Confirm the current numbers with Limrun directly, since unpublished pricing changes without notice, and compare on active minutes rather than instance hours.
Can I test camera flows in the cloud?
On Run Cloud, yes: connect a browser webcam and its frames are carried into the remote simulator camera pipeline, or upload a known video or image so the same visual input runs every time. Limrun does not document a camera-passthrough capability, so camera-dependent flows generally need a physical device or a stubbed capture layer there.
Can I embed a live device in my own app with either?
Both support embedding. Limrun ships a <RemoteControl /> React component in @limrun/ui covering iOS, iPadOS, watchOS, and Android, with the API key kept on your backend. Run Cloud returns a signed session URL you drop into an iframe, with an embed mode, an optional loading guard, readiness and lifecycle events, and a postMessage channel for reload, Home, rotation, and screenshots.
Try the simulator before you decide.
Create a session, install your build, point a webcam at the camera flow, and watch it in the browser. Sign-up and billing are self-serve, and sessions bill by the active minute.