Simulator preview
Open the iOS Simulators and Android emulators on your Mac inside Moshi, streamed by Mata through the same SSH session as your terminal. Touch them live, no public tunnel.
When an agent is working on a native app, the thing you want to look at is the device, not a log. Mata turns every iOS Simulator and Android emulator on your Mac into a network device: H.264 video out, touch and buttons in. moshi-hook runs it for you, and Moshi plays it natively over the SSH session you already use for the terminal.
Simulator previews ride on the same host gateway as Browser preview. If browser preview works on a Mac, simulator preview needs nothing more.
Requirements
- A Mac with macOS 14 or newer and Xcode 26 or newer, with a simulator to run. Android emulators need the Android SDK (
adb). moshi-hook0.4.23 or newer installed and running on the Mac. It bundles Mata. See Install moshi-hook.- Moshi 4.0.1 or newer, connected to the Mac over SSH or Mosh, or Moshi Desktop.
- A Pro subscription. Simulator preview is part of the host gateway, together with browser preview and the diff viewer.
Mata comes with moshi-hook
On macOS, moshi-hook starts the bundled Mata with the daemon and serves it through the gateway, so there is nothing extra to install or forward. It is on by default. To turn it off, or back on:
moshi-hook set mata off
moshi-hook set mata on
Restart the daemon after changing it. If you already run Mata yourself on its default port, moshi-hook uses that one instead of starting its own.
iOS Simulators, Android emulators, and Android phones attached to adb all show up in one list, with device name, runtime, and status. Mata finds adb through ANDROID_HOME, ANDROID_SDK_ROOT, ~/Library/Android/sdk, or PATH.
Open a simulator
- Home. Each paired host shows its simulators next to its web servers. Tap one to open it.
- Terminal. Tap the preview button in the terminal title, then pick the simulator from the sheet.
- iPad sidebar. Simulators are listed under the host alongside web servers.
- Moshi Desktop. The right rail has a Simulators section, and the ⌘K jump palette finds running simulators by name.
A simulator that is shut down boots when you open it. Long-press it (right-click on Desktop) to reboot or shut it down.
The device opens in Moshi's native player, streamed live at up to 60 fps. Taps, drags, and multi-touch gestures go straight to the device. The control bar has home, rotate, and the keyboard, plus posture buttons on an iPhone Duo, and you can drag the side panel to full screen. Ports are forwarded to 127.0.0.1 on your device only, so nothing is reachable from your LAN or the internet.
Let your agent drive it
Mata is also a device API for coding agents: they read the screen as an accessibility tree, find elements by label, tap, swipe, type, and paste, then check the result, on iOS and Android alike. mata --skill prints a ready-made skill that teaches an agent the whole loop. You watch it happen in the same player and can take over with a tap. See Mata for the commands.
serve-sim
A booted iOS Simulator streamed by serve-sim (npx @expo/serve-sim) is detected too, and opens in the in-app browser with touch control. Mata is the recommended path: it needs no Node.js, adds Android, and plays natively in Moshi.
Troubleshooting
- No simulators listed. Check that moshi-hook is 0.4.23 or newer with
moshi-hook version, that Mata is on (moshi-hook set mata on, then restart the daemon), and that the simulator shows up inxcrun simctl list devices. - On Xcode 27, the simulator never shows a screen. Boot it from Device Hub or Xcode. A plain
xcrun simctl bootwith no display attached hangs at "connecting display". - Android devices missing. Make sure
adb deviceslists them on the Mac, and thatANDROID_HOMEor~/Library/Android/sdkpoints at your SDK. - A simulator shows as failing. Mata replaces a device's worker when it stalls, and marks the device failing after three failures in a minute. Reboot the simulator from its menu, then open it again.
- Preview button hidden. Turn on Settings → Hooks → Use preview, then return to the terminal.