Quilt vs the world

An honest look at where Quilt wins, where it loses, and where it's the only option. With code, not slogans.

vs Spreadsheets (Excel, Google Sheets)

The closest cousin. Spreadsheets made reactive programming visual. Quilt is what spreadsheets would be if they were designed today.

The mental model

A spreadsheet is a grid. Quilt is a graph.

Excel:                Quilt:
A1 = 10              - id: budget.total
A2 = 20                kind: value
A3 = A1 + A2           value: 5000
                     - id: spent
                       kind: formula
                       expr: "rent + food + transit"

The grid is a constraint of the UI, not the model. Quilt's cells have stable addresses (budget.savings) that don't change when you insert a row.

Reactivity
Spreadsheets: cell formulas. Quilt: same, plus listeners, programs, and async.
Quilt wins
Types
Spreadsheets: implicit coercion. Quilt: explicit, with kinds (value, formula, program, sensor…).
Quilt wins
Addressability
Spreadsheets: row+col, fragile. Quilt: stable names, hierarchical.
Quilt wins
Visual editor
Spreadsheets: built-in, mature. Quilt: Quilt Studio (drag-drop), but younger.
Sheets win
Audience
Spreadsheets: anyone. Quilt: developers (for now).
Sheets win
MCP
Spreadsheets: no. Quilt: every cell is an MCP tool.
Quilt unique

vs Reactive frameworks (React, Vue, Svelte)

These frameworks made reactivity mainstream. Quilt is a different shape of the same idea — a runtime, not a UI library.

The mental model

React/Vue:              Quilt:
function App() {        - id: count
  const [n, setN] =      kind: value
    useState(0)          value: 0
  return (              - id: doubled
    <div>{n * 2}</div>     kind: formula
  )                       expr: "count * 2"
}

UI libraries are component graphs. Quilt is a cell graph. Both reactive, but Quilt is data-first, not DOM-first. A Quilt sheet has no UI; you give it one.

Reactivity unit
React: component. Vue/Svelte: ref. Quilt: cell (named, addressable, inspectable).
Quilt wins
Visual feedback
UI libs: immediate (it's the UI). Quilt: deferred (you bring the UI).
UI libs win
MCP / agent use
UI libs: awkward. Quilt: every cell is an MCP tool, naturally.
Quilt unique
Ecosystem
React: massive. Quilt: 1 day old.
React wins
Learning curve
React: hooks, JSX, components. Quilt: 8 cell kinds. Same order.
Draw
Server / Edge
UI libs: client-only. Quilt: runs on a $3 chip, in WASM, in the browser, on a server.
Quilt wins

vs Databases (Postgres, Redis, SQLite)

Quilt is not a database. But it has cells, persistence (via time travel), and queries (via formulas). The lines are blurring.

The mental model

SQL:                     Quilt:
CREATE TABLE users (     - id: users.alice.name
  name TEXT,               kind: value
  age INT                  value: "Alice"
);                       - id: users.alice.age
INSERT INTO users          kind: value
  VALUES ('Alice', 30);    value: 30
SELECT name FROM users;   get('users.*.name')  # implicit
ACID
DBs: yes. Quilt: not yet (would use time travel for durability).
DBs win
Reactive queries
DBs: views, triggers, but not first-class. Quilt: formulas are the query layer.
Quilt wins
Scale
DBs: millions of rows. Quilt: hundreds of cells (for now).
DBs win
Distribution
DBs: replicas, sharding. Quilt: mesh (peer-to-peer, CRDT).
Draw
Compute on data
DBs: stored procs, triggers. Quilt: formulas, programs, listeners — all in one model.
Quilt wins

vs Config languages (YAML, TOML, JSON)

Quilt uses YAML as its wire format. But it's not just data — it's an executable document.

The mental model

YAML (data):            Quilt (executable):
database:               - id: database.host
  host: localhost         kind: value
  port: 5432              value: localhost
                        - id: database.url
                          kind: formula
                          expr: "'postgres://' + database.host"

A config file is data. A Quilt sheet is a program that happens to be data-shaped. The line between code and config dissolves.

Executable?
Configs: no. Quilt: yes — formulas, programs, listeners, sensors.
Quilt unique
Reactive?
Configs: static. Quilt: every change propagates.
Quilt wins
Validation?
Configs: schema. Quilt: types per cell kind, plus runtime checks.
Draw

vs Workflow tools (Airflow, Prefect, Temporal)

These tools orchestrate work. Quilt is reactive, not orchestrated — the cells react, the system doesn't direct.

The mental model

Airflow:                    Quilt:
@task                      - id: extract
def extract():               kind: program
  return fetch()             code: "return await fetch()"
                            - id: transform
@dag(...)                    kind: formula
def pipeline():              expr: "JSON.parse(extract)"
  extract() >> transform()
Trigger model
Workflow tools: schedule / event. Quilt: reactive — change propagates automatically.
Quilt unique
Visibility
Workflow tools: dashboards, logs. Quilt: cell graph, synoptic view, time travel.
Draw
Long-running
Workflow tools: days. Quilt: designed for stateful, always-on.
Draw
Maturity
Workflow tools: 10+ years. Quilt: 1 day.
Workflow tools win

vs PLCs / SCADA (industrial automation)

Programmable Logic Controllers have been running factories on a cell-graph model since the 1970s. Quilt is the spreadsheet descendant of the same idea.

The mental model

PLC ladder logic:             Quilt:
|---[temp]----(fan)---|       - id: sensor.temp
                                 kind: sensor
                              - id: motor.fan
                                 kind: io
                              - id: control
                                 kind: formula
                                 expr: "sensor.temp > 25"

PLCs invented the reactive cell. Quilt brings the model to software, the cloud, the browser, and the $3 chip — anywhere there's a CPU.

Reactive
PLCs: yes, the foundational model. Quilt: yes, same model, modern tools.
Draw
Hardware
PLCs: industrial IO. Quilt: software + ESP32 (cheaper, more flexible).
Quilt unique
Visual
PLCs: ladder diagrams. Quilt: cell graph, synoptic, IDE.
Quilt wins
Determinism
PLCs: hard real-time. Quilt: best-effort.
PLCs win

vs Notebooks (Jupyter, Observable)

Notebooks made reactive programming narrative. Quilt is a notebook where every cell is named, addressable, and persistent.

The mental model

Jupyter:                          Quilt:
[1]: x = 10                      - id: x
[2]: y = x * 2                     kind: value
[3]: z = y + 1                     value: 10
                                 - id: y
                                   kind: formula
                                   expr: "x * 2"
                                 - id: z
                                   kind: formula
                                   expr: "y + 1"

Notebooks are linear. Quilt is a graph. The dependency is explicit. The order doesn't matter. The cells have names.

Order
Notebooks: linear, manual. Quilt: topological, automatic.
Quilt wins
Names
Notebooks: numbered. Quilt: named.
Quilt wins
Explore data
Notebooks: rich, mature. Quilt: simpler, but inspectable.
Draw

The bottom line

When to use Quilt, when not to, and when it's the only option.

Use Quilt when you have data that flows, computed values, sensors, agents, or anything that fits the "name → reactive value" model. Especially when the data is small enough to fit in your head, big enough to need organization, and important enough to be inspectable.
Don't use Quilt when you're building a traditional web app (use a UI framework), a high-throughput database (use Postgres), or a deterministic real-time controller (use a PLC). Quilt is the runtime, not the entire stack.
Use Quilt when it's the only option when you need all of: reactivity, persistence, time travel, mesh sync, encryption, and visualization — in one model, on one cell, with one YAML file. No other tool gives you that.
Quilt's unfair advantage is the cell model itself. By making every cell a live, addressable, typed, reactive capability, the spreadsheet becomes the runtime. The sheet is the program. The cell is the function. The wire is the data flow. You don't have to invent any of that — it's all the same primitive.