Build
Ships today

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

An idea for the device
  1. Must it keep working with your Mac asleep or quit?

    • YesA WASM app
    • NoWhere does the logic that draws the screen live?
  2. 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.
Start with the one thing that can't be undone later: whether it has to survive your Mac closing.

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 appMCP agent
Where the code runson the device, in flashon your Mac
Where the logic runson the deviceon your Mac
With your Mac asleepkeeps runningthe last screen goes stale
What lands on the devicea real, installed appnothing
Lifetimeuntil you uninstall itwhile the agent stays connected
To startbuild and install a bundleconnect, 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.

On this page