Give your agent a device.
Mata is Moshi's device layer. It turns every iOS Simulator and Android emulator on a Mac into a network device. Video goes out, touch comes in, and the screen reads as JSON. One port. No SDK, no keys.
Native on your phone and your computer. In the browser everywhere else.
- Phone & tabletiOS · AndroidNative app
- DesktopmacOS · Windows · LinuxNative app
- WebAny browserClient embedded
~60 fps H.264HTTP + WebSocketNo accounts
Observe, act, verify. In plain commands.
Read the screen as data, find the element by its label or id, act on it, and check the result — no pixel guessing. Coordinates are 0–1 fractions of the screen, so the same tap works on every model.
Every command is one HTTP request to the Mata server, so anything that can open a socket can drive a device: curl $MATA_URL/sim/booted/ui. The v1 protocol is frozen — it only ever grows.
# what's on screen — as data $ mata ui { "type": "Button", "AXLabel": "Save trail", "AXUniqueId": "saveTrail", "frame": { "x": 24, "y": 612, "width": 354, "height": 50 } } # act on it: the centre of its frame $ mata tap 0.5 0.73 $ mata type "Great views"; mata key enter # verify — read it back, or look $ mata ui → "AXLabel": "Saved" $ mata screenshot -o after.jpg
One CLI. Every device. Same verbs.
Observe, act, verify: everything an agent needs to use an app, as plain commands. Point them at an iPhone or an Android emulator — only the device id changes.
A ready-made skill teaches Claude and Codex the whole loop.
Fast enough to feel like the device in your hand.
Video comes straight off the framebuffer, and touch lands in tens of milliseconds. Android emulators (API 36 here) only ship a software video encoder, so Mata takes their frames and encodes them on the Mac's GPU — the same path as the iOS Simulator.
- ~45 ms
- Tap → new pixelsiOS Simulator
- ~80 ms
- Tap → new pixelsAndroid emulator
- ~45 ms
- Screenshotwarm, either platform
- ~1 s
- Whole accessibility treeiOS · ~2.5 s on Android
Measured on an M4 Pro Mac mini with an API 36 emulator and an iPhone 17 Pro simulator. The Android tree comes from uiautomator.
No keys. The network is the lock.
Mata answers loopback, your LAN and your Tailscale peers — nobody else. No accounts, no relay, nothing in anyone's cloud. Host and Origin checks stop DNS rebinding and cross-site requests.
- 127.0.0.1
- 192.168.0.0/16
- 100.64.0.0/10
- *.ts.net
Drive it yourself, or watch your agent drive.
Moshi puts the same device on your phone and your desktop: native H.264 at 60 fps and real touch, right next to your agent's session. Try the build yourself, or watch the agent test it — and take over with a tap when it gets stuck. How it works in Moshi
$curl -fsSL https://getmoshi.app/install.sh | shMata comes with moshi-hook on macOS — install guide
Xcode 27 input from idb (MIT) · iOS capture from serve-sim (Apache-2.0) · Android capture from scrcpy (Apache-2.0)