Test the app you actually ship.
App Mode streams a real iOS or Android app from a simulator, emulator, or connected phone on your machine into the same high-fidelity device frames you already use for the web. Tap it, type in it, and let the AI read its real accessibility tree. Your build never leaves your machine.
One spine, two lanes
App Mode is not a separate product bolted on. It shares the device registry, the AI pipeline, the reports, and the quota with Web mode.
| Web mode | App Mode | |
|---|---|---|
| What is simulated | A URL in an iframe | A live stream of a real device screen |
| Where it runs | Emuluxe-managed browser profile | Your machine (BYOD), or a rented cloud device |
| Setup | Nothing to install | A free agent plus Xcode and/or Android SDK |
| Provenance chip | Emulated profile | Mirrored · Reshaped · Preview (always shown) |
| What the AI reads | HTML, CSS, viewport, UA | The real accessibility tree, plus device logs |
| Session quota | Shared budget | The same shared budget — no separate meter |
What is faithful, and what is not
A real device is behind every frame, so most things are exact. A few cannot be reproduced, and we never claim otherwise.
Layout, safe areas, DPR text
Streamed pixels from the real device
OS-version behaviour
Behaviour comes from the OS that is running
Auto Layout bugs, a11y labels
Real UI tree through the same AI pipeline
120 Hz feel, camera, thermals
The stream is ~5–15 fps; use a physical phone in mirror mode
Performance numbers
Only as ingested profiler data — video lies about frame pacing
Mirrored
The physical screen matches the frame exactly. The strongest guarantee.
Reshaped
Geometry differs, so the stream is scaled and letterboxed. The chip names the real hardware.
Preview
Content came from a different source than the frame, e.g. no device is attached yet.
Three steps to a real app
Verify the toolchain
Run emx app doctor. It checks Node, Xcode and its licence, the simulator runtime, adb, Java, your automation driver, and free disk — printing an exact fix for every failure and exiting non-zero only when everything is green.
Register a build and launch
Point App Mode at an .apk you already built, or run the xcodebuild line it prints for iOS. Then start a session with a Maestro flow or explore it by hand. Your binary never leaves the machine.
Drive and audit the real app
Tap, swipe, and type in the frame — coordinates are normalised, so a click lands correctly whether the frame is exact-fit or scaled. The AI reads the accessibility tree and logs, not a screenshot.
App Mode is not in the Chrome extension
And that is deliberate. The extension runs on Manifest V3, whose service worker is terminated after roughly 30 seconds of inactivity — a poor host for a multi-minute device stream. It also has no nativeMessaging permission, so it cannot launch the local agent without a second download for users and a permission that complicates store review.
Both workarounds would duplicate lanes that are served better already: your editor can spawn the agent natively, and Web Studio has a backend to broker the session. So App Mode lives in VS Code, Cursor, and Windsurf, the CLI, and the MCP server.
Requirements
- macOS for iOS simulators — full Xcode with its licence accepted, an iOS 17+ runtime, plus Maestro for taps. Android needs the SDK platform-tools and Java 17+.
- Windows and Linux run Android apps only; iOS simulators exist on macOS alone.
- 15 GB free disk, and Node.js 20 or newer.
Shares your session budget
App Mode has no separate meter. Hitting the limit returns a normal upgrade prompt, never a mysterious failure.