Live input
Pass your webcam into the app.
Connect a camera in your browser and carry its live video frames into the remote simulator’s camera pipeline.
iOS simulators · Android emulators
iPhone or Pixel, same API. Install a build, open the exact screen, and stream the session to a browser tab, or embed it in your product and let an agent operate it end to end.
Open it, embed it, or hand it to an agent
Streaming in the browser
$0.02 / min
Pay only while the simulator is active
Signed browser URL
Open or embed every session
Reusable assets
Upload once and install again
iOS + Android
One lifecycle across both platforms
Beyond screen streaming
Camera-dependent apps need more than taps and screenshots. Run Cloud carries visual input into the app so you can exercise the experience users actually see.
Browser camera permission
Real app capture flow
Live input
Connect a camera in your browser and carry its live video frames into the remote simulator’s camera pipeline.
Repeatable media
Exercise camera and media flows against controlled visual input instead of pointing a physical phone at a test fixture.
Multi-device
Create simulator sessions in parallel for broadcast, receiver, collaboration, and other device-to-device scenarios.
Runnable camera demo
Start one broadcaster and two receivers, then connect your webcam.
runcloud demo run live-camera-relay --openBeyond remote preview
Run Cloud gives your product control of the input, the session lifecycle, and the devices around the screen.
What you can test
Let a coding workflow install a fresh build, open the right deep link, and return a browser session for review.
Share a signed URL so a reviewer lands on the exact screen the change touches, without cloning or building anything.
Embed a running device in your own UI and drive it from the parent page while your users watch the app respond.
Install the candidate build, walk the critical flows, and release the session without keeping a device lab idle.
Give capture, scanning, and image recognition flows real or repeatable visual input instead of a static placeholder.
Run sessions side by side for collaboration, broadcast and receiver, and other device-to-device scenarios.
From build to browser
Create a session from the CLI or SDK, install the build, open the right route, and release it when the work is done.
Install a simulator-compatible .app, .zip, .tar.gz, or .ipa while creating the session, or reuse an uploaded asset.
Choose an iPhone, iPad, or Android device, add timeouts and labels, and receive a signed browser URL.
Launch a web URL or your app’s deep link so the reviewer or agent lands in the right flow.
Open the signed URL, embed it in your product, or let an agent drive the session and release it when the task finishes.
Mobile simulators
npm install @run-cloud/sdkimport { writeFile } from "node:fs/promises";
import { Client } from "@run-cloud/sdk";
const cloud = new Client();
const session = await cloud.ios.create({
displayName: "Agent smoke",
inactivityTimeout: "60s",
});
try {
await cloud.ios.openUrl(
session.id,
"https://run.cloud",
);
await new Promise((resolve) => setTimeout(resolve, 3000));
const screenshot = await cloud.ios.screenshot(session.id);
await writeFile("run-cloud.png", screenshot);
console.log(`Captured run-cloud.png (${screenshot.byteLength} bytes)`);
} finally {
await cloud.ios.delete(session.id);
}Programmable by design
Build the simulator into your product instead of wrapping an opaque video stream. Run Cloud exposes the signals and controls needed to manage the experience around it.
Agent-native
Install the Run Cloud skill for Claude Code, Codex, or Cursor so an agent can create sessions, install builds, open the right route, and clean up reliably.
Embed contract
Observe streaming and app-launch readiness, React Native detection, authentication failures, inactivity, and session completion from the parent page.
Parent controls
Use the iframe command channel for reload, Home, rotation, screenshots, and the accessibility inspector without rebuilding the surrounding experience.
Connect an agent
runcloud skills install --agents codex --scope projectWait for the real ready state
streaming && appLaunchedSimple simulator pricing
No Mac to reserve and no device lab to keep idle. Active simulator time is metered by the minute.
One is not always enough
Start sessions concurrently for collaboration, broadcast, receiver, and visual synchronization workflows.
runcloud demo run eight-device-mosaic --openFAQ
What teams ask before putting a cloud device in front of users or agents.
Run Cloud simulator sessions cost $0.02 per active minute. Metering runs while the session is active and stops when it is released or times out.
Yes. Connect a browser webcam and its live frames are passed into the simulator’s camera, where the app can request and display the feed. Controlled image and video sources are supported too, so a camera flow can be replayed against the same input every time.
Yes. Android emulator sessions use the same create, install, open-url, timeout, label, and release calls as iOS simulator sessions, return the same signed browser URL, and share the same uploaded assets. Pick the platform in the CLI or SDK call.
The CLI accepts .tar.gz, .zip, .app archives, and .ipa files for iOS, and Android app artifacts for emulator sessions. An iOS app still needs to be built for the Simulator runtime; a device-signed App Store IPA is not a substitute for a simulator build.
Yes. Each session includes a signed browser URL for an iframe. The parent page can observe streaming and app readiness, authentication, inactivity, and session completion, then send supported commands for reload, Home, rotation, screenshots, and the accessibility inspector.
Yes. Install the Run Cloud agent skill for Claude Code, Codex, or Cursor. It teaches the agent to create sessions, install simulator builds, open URLs and deep links, and release sessions when the task finishes.
The create request waits for compatible simulator capacity within its queue window. If capacity becomes available, the session is returned normally with queue timing details.
Create a session from the CLI, the SDK, or an agent, open the exact screen you care about, and release it when the work is done.