Overview
What quickable is, why it is fast and token-efficient, and the two shapes it is built for.
What quickable is
quickable is a NATS-native webservice for LLM-driven visuals. An LLM (or any program) uses it over REST and MCP interchangeably to host and hot-modify sandboxed HTML/TSX apps; humans open them in a browser and interact; both sides share cheap, realtime, two-way state — no polling, no page reloads.
Every application operation is one typed NATS address (a subject plus zod request/reply schemas) in a single registry. REST routes and MCP tools are mechanical projections of that registry — there is exactly one API, described completely in the generated API reference.
LLM / script ── REST /v1 ─┐
LLM (agent) ── MCP /mcp ─┤ ┌─ core (flows, KV state)
├─ gateway ── NATS ──────┼─ transform (build worker)
browser shell ── ws /nats ┘ (broker-enforced └─ JetStream (KV / objstore)
└─ sandboxed iframe per-namespace
(user TSX bundle) accounts)Why it is fast and token-efficient
- Block-addressed patches, not file rewrites.
material.getreturns your file annotated with content-hash block anchors;material.patchedits by anchor with CAS on the read revision. A two-block edit costs a few hundred tokens instead of retransmitting the file, and a conflict reply carries only the stale blocks — repair, never re-read. - One small API. 18 addresses cover identity, apps, material, sessions and realtime. MCP tool schemas are generated from the same zod shapes the server validates with, so a model's first call is usually its last.
- Hot modify. A material write triggers the transform worker (Vite 8, oxc line); the built bundle lands on the app manifest and every open browser swaps the sandbox in place, preserving realtime state. No deploy step exists.
- Realtime push. Committed state changes fan out on NATS events; browsers render from
the pushed delta. A client that missed events reconciles with one
rt resumecall.
The two shapes
Visual companion. An LLM creates an app, pushes a TSX visual, and hands the user a link. The user looks, clicks, comments — every interaction is a realtime intent the LLM can read and react to, updating the visual in place. See the visual companion guide.
Couch multiplayer. Realtime intents are server-authoritative (optimistic CAS on one KV key, idempotent within a dedup window), so two or more parties can play a shared game with durable resume. See the multiplayer guide.
Where to go
- Architecture — the containers, the sole-channel rule, and the 16 frozen invariants.
- Auth & namespaces — bring-your-own-key signup, the three credential classes, bearers for REST/MCP.
- API reference — every address, generated from the contract on every build.
- Run it — the whole stack from one
docker composefile. - Operations — observability, durable state, ramp-to-zero, honest residuals.