A spreadsheet where every cell is alive.

Quilt is a reactive, typed, cellular runtime. The grid is the runtime. The cell is the universal IO primitive. Every cell can be a value, a formula, an HTTP call, a sensor, a program, an LLM, or any combination. Cells wire together with reactive propagation.

// TypeScript · Rust · 70KB browser · Cloudflare Worker · ESP32 no_std · GitHub Codespaces

Try it in your browser ★ on GitHub ☕ Support

The insight

A cell is not a value. A cell is a live, typed, addressable capability. Once you see that, the spreadsheet stops being a document and becomes a runtime.

Wire a camera to a formula to a notification. Wire a knob on a boat to a PID controller to a motor. Wire a user prompt to a router to a model to a response. Wire any engine — Isaac, Cosmos, Minecraft, a Jupyter kernel, a paper-trading app — as a cell. Because cells are reactive, the wiring is the program: change one cell, every dependent rewires automatically. No callbacks, no event loops, no state machines — just cells.

The 9 cell kinds

Every cell has a kind. Each kind has its own evaluator. Compose them in any order.

value
A static value: number, string, object, anything.
formula
A computed expression over other cells.
api
An outbound HTTP call. Every response is a value.
program
A function body. Full TypeScript closure in a cell.
sensor
A pull-based data source. Polls, returns current value.
listener
A push side-effect. Fires when an upstream value changes.
router
Picks a value based on the caller. Per-context memoization.
io
Bidirectional IO: WebSocket, MQTT, serial, anything.
ai
An LLM cell. z.ai, Kimi, DeepSeek, Cloudflare AI.

One engine, five deployment tiers

The same Quilt engine runs in TypeScript, Rust, a single 70KB HTML file, a Cloudflare Worker, an ESP32 (no_std), and a GitHub Codespace. They federate by URI: quilt://[instance]/[sheet]#[cell] is a live, subscribable cell on any tier.

🌐 Browser / Server

@quilt/core · @quilt/sdk · @quilt/cli · @quilt/mcp
  • Browser simulator
  • Node service
  • MCP server for Claude/Cursor
  • CLI for terminal use
  • TUI for live monitoring

🦀 Compiled binary

quilt-rust · axum · crossterm
  • Single static binary, no Node.js
  • Cross-compile to any platform
  • Strict memory guarantees (rhai)
  • High-throughput cell eval

📡 IoT / Edge

quilt-esp32 · quilt-cloudflare
  • ESP32 no_std Rust (sensors + motors)
  • Cloudflare Workers (D1, KV, R2, Vectorize)
  • Tight control loops at 50Hz
  • Edge cloud with persistence

🏗 Codespace

quilt-codespace · ttyd · HTTP+SSE
  • GitHub Codespace as a live runtime
  • Browser TUI on port 7681
  • HTTP API on port 4096
  • Token-authenticated for external callers

🧬 AI / Federation

@quilt/ai · @quilt/evolve · @quilt/sdk
  • LLM cells across 4 providers
  • Self-improvement loops (RLAIF)
  • Cross-instance subscriptions
  • resolveCell / subscribeCell

Quick start

Three ways in. Pick the one that matches what you're building.

① Just want to try it

Open Quilt Live in your browser. 70KB. Works offline. Save as a cookie or downloadable HTML.

② Build a web app or agent

npm install @quilt/core @quilt/sdk
import { QuiltEngine, parseSheet } from '@quilt/core';

const engine = new QuiltEngine('my-app');
engine.loadSheet(parseSheet(yamlString));
const value = await engine.get('temperature');
// every cell is now an MCP tool, an HTTP endpoint, or a CLI subcommand

③ Need a binary, embedded, or edge

cargo install quilt-rust                          # single static binary
git clone https://github.com/SuperInstance/quilt-esp32   # no_std ESP32
git clone https://github.com/SuperInstance/quilt-cloudflare   # Worker + D1

Try it now

All of these are real, working apps. Click in, see the cell model in action, save your work locally.

Save your work, share your sheets

Every Quilt demo saves to your browser's localStorage. Your work is private, persists across sessions, and can be exported to JSON or YAML. When hosted service launches, you'll be able to save to the cloud too.

★ on GitHub ☕ Support