Path 1: Quilt Live (the easiest)
If you can open a browser, you can use Quilt. No install, no build, no account. Just open the file.
Open quilt-live.html
Click the button below. Your browser will load the file from GitHub Pages. No internet is required after that โ the file is self-contained.
https://superinstance.github.io/quilt/landing/quilt-live.html
Click "Add cell" and explore
The UI has a list of cells on the left, a detail editor on the right, and a few starter sheets. Pick one from the sidebar to see how a working sheet looks.
Edit a value, watch formulas recompute
Change any value cell. Every formula that depends on it updates. That's the whole reactive system. There's nothing more to it.
Save your work
Click "Save" to store your state in a cookie. Click "Download" to bake the state into a new HTML file you can email, commit, or share. The downloaded file is self-contained โ anyone can open it, no server needed.
๐ Going further
Quilt Live has 54 starter examples covering productivity, finance, fitness, music, photography, education, gaming, and more. Browse them with the Examples panel.
Path 2: TypeScript (the canonical)
The full-featured runtime. Use this when you want to build real applications with Quilt, run an MCP server, or extend the engine.
Install the package
Requires Node.js 18 or later. Quilt is a regular npm package.
npm install @quilt/core @quilt/cli
Create a sheet
A sheet is a YAML file. The cell model is the same as Quilt Live.
# hello.yaml
id: hello
title: "Hello, world"
version: 0.1.0
cells:
- id: greeting
kind: value
value: "Hello, world!"
- id: shout
kind: formula
expr: "greeting.toUpperCase()"
Run it
The CLI evaluates the sheet and prints the result.
npx quilt run hello.yaml # Output: # โ greeting = "Hello, world!" # โ shout = "HELLO, WORLD!"
Or use the library
Import the engine into your own TypeScript app.
import { QuiltEngine, parseSheet } from '@quilt/core';
const engine = new QuiltEngine();
const sheet = parseSheet(yamlText);
engine.load(sheet);
console.log(await engine.get('shout'));
// โ { data: "HELLO, WORLD!", status: 'ready' }
Run an MCP server
Every named cell in your sheet becomes an MCP tool. Claude Code, Cursor, and other MCP clients can use them.
npx quilt mcp hello.yaml # Server running on stdio. Every cell is a tool.
๐ Going further
See the documentation for the full API, the tutorial for a 5-minute walkthrough, or the patterns cookbook for 20 reusable idioms.
Path 3: Rust (for production deployment)
The Rust port compiles to a single static binary. Drop it on a server, an edge device, a Raspberry Pi, a bare-metal target โ anywhere there's a CPU.
Add the dependency
Quilt is a regular Cargo crate.
[dependencies]
quilt = "0.2"
tokio = { version = "1", features = ["full"] }
Load a sheet
The same YAML format. The same cell model.
use quilt::{QuiltEngine, parse_sheet};
let yaml = std::fs::read_to_string("hello.yaml")?;
let sheet = parse_sheet(&yaml)?;
let engine = QuiltEngine::new();
engine.load(sheet)?;
Get a cell value
Same async API as TypeScript.
let result = engine.get("shout").await?;
println!("shout = {:?}", result.data);
Or compile a single binary
The quilt CLI works as a standalone binary. ~3 MB stripped, no runtime, no Node.js.
cargo install quilt-cli quilt run hello.yaml # Or cross-compile: cargo build --target x86_64-unknown-linux-musl --release cargo build --target aarch64-unknown-linux-musl --release # ARM cargo build --target x86_64-pc-windows-gnu --release # Windows
๐ Going further
The Rust port also has quilt-tui (crossterm-based terminal UI) and quilt-web (axum + Server-Sent Events for a live web UI). See the README for details.
Next steps
Now that you have Quilt running, here are good places to go next.