Static binary
MCP server
Web bundle
ESP32 firmware
WASM module
Docker image
Source sheet
What the build does
Every target goes through the same pipeline. The cell model is preserved across all of them.
By the numbers
The build pipeline, with the actual outputs from real runs.
What you can do with the artifacts
Run on a server: ./weather --mcp --port 8080. The whole sheet is now an HTTP+stdio MCP server. Claude Code, Cursor, or any MCP client can use it.
Plug into Claude Code: claude mcp add weather ./weather-mcp. Now every cell is a tool Claude can call. The sheet is the tool registry.
Email it. Commit it. Run it offline forever. The download is a single HTML file with the engine, the sheet, and the UI all inlined. No server, no build, no install.
Flash to a $3 chip: espflash flash weather-esp32.bin. The sheet is now the firmware. 8 sensors and actuators, a reactive engine, 32 KB total.
Load from any host: const engine = await WebAssembly.instantiate(wasm). The cell model is the API. The host gets the cells; the WASM gets the engine.
Deploy anywhere: docker run -p 8080:8080 quilt/weather. The image is scratch-based. The binary is the only thing in it. 8 MB total, no layers, no shell, no package manager.
The same model, six targets
This is the unlock. You write a sheet once. The cell model is preserved across every target. Same names, same kinds, same propagation. The target is just the runtime.