design.mp4
browser-use.mp4
Marketing artifacts, brand-locked, published from your own browser.
A local desktop studio. Give it a brief; it produces a landing page, an email, a poster, a set of social cards, checks them against a design linter and a weighted jury, and then deploys them into the tools you already use and goes back to confirm they really arrived.
BRAND AUDIENCE BRIEF BUILD VERIFY PUBLISH
----- -------- ----- ----- ------ -------
scrape --> CSV --> kernel --> agent --> lint --> replay a
vision data agent one 8 tools repair recorded path
extract proposes headline 1 render jury or drive Chrome
tokens the rubric one CTA |
+ voice you approve shared v
it; code verbatim independent
scores it verification
The audience lane is optional. Skip it and one brief produces one set for the market; use it and the same brief produces one set per company, merged against the columns you imported.
Three claims, all load-bearing:
-
Generation costs tokens. Refinement must not. Every artifact satisfies a structural contract, so nudging a heading, swapping a token colour or reordering two cards is a typed mutation applied in 18ms with no model call. See
docs/DECISIONS.md005. -
Success has to be proven, not claimed. An agent reporting
doneand an API returning 200 are both claims. Every publication is re-checked in a context the publisher never touched, and the evidence has to come from the artifact rather than from a caption the agent typed itself. Seedocs/DECISIONS.md009.Taking one back is held to the same standard, and it is harder: absence cannot be proved by failing to find something, so a retraction has three outcomes rather than two and "we could not look" is never success. See
docs/DECISIONS.md036. -
Who it is for is a rubric, not an opinion. Accounts come in as a CSV from whatever CRM you already have and are tiered by weighted conditions over their own columns, deterministically, with the reasons attached to every tier. A merge field that does not resolve stays visible in the artifact rather than becoming an empty string. See
docs/DECISIONS.md037 and 038.A data agent drafts that rubric by reading your actual columns and their actual values, and then stops: it proposes, you edit, and arithmetic scores. Judgement is the model's job and consistency is the code's. See 039.
Requires Node 24 and pnpm 11.
pnpm install
pnpm dev # server on :7457, web on :7456
pnpm app # the packaged Electron app
pnpm dist:mac # build a signed-ish .appAdd a provider key in Settings. Anthropic, OpenAI and MiniMax are supported; a key is stored AES-256-GCM at rest, mode 0600, and never leaves the server.
pnpm test # 813 tests, no key or network required
pnpm typecheck
pnpm eval # real briefs through the real pipeline. Costs money. apps/server Hono on 127.0.0.1, SQLite, Playwright, the agents
apps/web React 19, Zustand, Tailwind 4, a 142-line hand-rolled router
apps/desktop Electron shell: menu, window state, native context menus
packages/shared events, model capabilities, the one product-name constant
craft/ 13 design rulebooks. Rules tagged [lint] are enforced by code
recipes/ 14 artifact types. Frontmatter + prose, user-overridable
skills/ publish destinations. One path through one product surface
evals/ real briefs, scored, diffed against a committed baseline
docs/ why every non-obvious thing is the way it is
craft/, recipes/ and skills/ shadow from ~/.quilt/, read at request
time. A platform UI the agent cannot navigate is fixed by editing a markdown
file, not by shipping a release.
| File | What it answers |
|---|---|
docs/PLAN.md |
what the product is, surface by surface |
docs/DECISIONS.md |
why each choice beat its alternative, numbered and cited from the code |
docs/CRAFT.md |
how quality is measured and repaired |
docs/PROVIDERS.md |
the verified facts and the twelve traps behind every capability gate |
evals/README.md |
how to write and run an eval case |
Not a cloud service, not a chat product, not a general coding agent, not a template gallery. Each of those is a decision with a record.