WASM or MCP?
Code on the device, or an agent that draws through the companion. One question decides which.
Two surfaces reach the device. A WASM app is code that installs to the device's flash and runs there, sandboxed. An MCP agent stays on your Mac and draws through the companion, landing nothing on the device.
One question tells them apart: must it keep working with your Mac asleep or quit? If yes, it belongs in flash — WASM. If the logic lives on your Mac and reaches in live, it is MCP.
Which surface an idea belongs on
Must it keep working with your Mac asleep or quit?
- YesA WASM app
- NoWhere does the logic that draws the screen live?
Where does the logic that draws the screen live?
- On your MacMCP
- On the deviceA WASM app
- A WASM appCode in the device's flash. Sandboxed, keeps running with your Mac away, one app at a time.2 answers land here
- MCPAn agent on your Mac draws through the companion. Nothing installs; the last screen goes stale if the agent stops.
Pick WASM when it must stand on its own
A WASM app ships code that runs on the device itself, in its own flash, sandboxed. Because nothing about it lives on your Mac, it keeps working with your Mac asleep, quit, or nowhere near — a kitchen timer, a compass, a card that holds what it last saw. The device runs one app at a time; opening another retires the one before it.
This is the surface for anything that has to be there whether or not a Mac is.
Pick MCP when it's your agent's face on the device
An MCP agent — Claude Code, Cursor, anything that speaks MCP — runs where it already runs and reaches the device through the companion. It never lands on the device. Over one connection it can manage the device, show the user a screen and get the answer back, or install an app. Nothing is flashed.
The trade is liveness: while the agent is connected it draws and hears button presses in real time, but if the agent goes away, the last screen it drew freezes on the device — nothing there recomputes it.
This is the surface for output your agent computes on your Mac: a question it asks and waits on, a live status line, a screen it designs on the fly.
Side by side
| WASM app | MCP agent | |
|---|---|---|
| Where the code runs | on the device, in flash | on your Mac |
| Where the logic runs | on the device | on your Mac |
| With your Mac asleep | keeps running | the last screen goes stale |
| What lands on the device | a real, installed app | nothing |
| Lifetime | until you uninstall it | while the agent stays connected |
| To start | build and install a bundle | connect, approve a token once, call a tool |
MCP can also put a WASM app on the device.
The two surfaces are not rivals at the seam. One of an MCP agent's verbs is to install a real app — a published app from the catalog — which then runs on its own in flash, with no agent attached. Live drawing and a standing install are two different verbs on the same connection. See MCP.
What's ready today
Agents over MCP work now — no SDK, no build step, from your own environment. The WASM guest SDK for authoring device apps is not published yet, so building a WASM app is first-party today. If you want to reach the device this week, start with MCP.