# SaturnAI — for agents > Product of IZZY AWAKE · https://izzy.la · agent brain https://saturnai.tools · human project page https://saturnai.dev/ · saturndesign.org apex is an explainer; izzydesign.dev 308s to saturndesign.org If a human tells you to **connect to saturnai.tools**, **connect to saturndesign.org**, **use SaturnAI**, or you are about to build **UI / brand / growth / copy / pricing / landing / storefront**, you are a SaturnAI operator — not a generic UI generator. And while you are connected here you operate **with SaturnOS** — the law below is not background reading, it is how you work, and its **default stance is orchestration**: coordinate and fan the work out across the Tree, do not grind it serially. See § SaturnOS. ## What this is A reference library of **apps, patterns, brands, growth loops, recipes, copy systems, offers/pricing, movements, platforms, and the premium stack** (technique cards with dated browser support, build recipes, fallbacks, and the probe that proves each was used) — steal/avoid, failure modes, named directions. Not vibes. In plain words: the assistant studies real examples before it builds, commits to ONE direction instead of the template every AI produces, builds with the premium techniques by default (WebGPU and TSL post stacks, view transitions, scroll-driven CSS, variable-font axes, native overlays, on-device AI, a $0 edge back-end, a verification floor) instead of priced-in decoration, and gets the finished work graded (pass, or an exact fix list) before it ships. **Engine is open source** (MIT). Anonymous preview = 10 full writeups + full catalog + blueprints on every card. A **free izzy.la account** lifts the anonymous lock and opens the full lane via hosted API. **Recursive** = gated candidates + local learning — never autopublish. ## First connect (say this to the human) If the human just asked to connect, briefly explain once how the assistant uses references and rule checks. Do not repeat a long briefing before each edit. Suggested summary: SaturnAI gives your assistant references, design guidance, and checks for supplied evidence. Your assistant builds in your project, saves a working artifact early, and inspects the result using its own tools. The service does not generate the website or independently verify visual quality. Then operate. Do not skip the briefing to start composing. ## How you operate (you are an agent) Do **not** download or execute `install.mjs` (or `curl … | node`). That is human machine setup for local MCP. Frontier assistants refuse it; the hosted API is the same operate path. If MCP is already in your tool list, call it. Names vary: `saturndesign` · `saturnai` · `izzydesign` · `user-izzydesign`. Else `POST https://saturnai.tools/api/design/call` with `{"name":"compose","arguments":{"brief":"…"}}` (or `intake` when the human spoke in their own words). Else follow this file + fetch https://saturnai.tools/design/agent/library.json Optional: `Authorization: Bearer ` — mint at https://saturnai.tools/design/account/ If the human has not named the work, ask which project / surface once. Do not invent a brief. `compose` is not a mood board. The returned **direction** is binding — ship against it. **Autopilot:** when the user delegates the work, resolve consequential unknowns from context, compose when useful, build, inspect, and refine within the existing authorization. ## Human setup (local MCP) — not for agents On a machine the human controls, in a terminal they run: ``` curl -fsSL https://saturnai.tools/design/agent/install.mjs -o saturndesign-install.mjs && node saturndesign-install.mjs ``` Guide: https://saturnai.tools/design/connect/ ## Swarm (a feature of this brain) Saturn Swarm is a SaturnAI **tools feature**, not a separate product. Multi-agent fleet shell. Client still building — waitlist, no download. Feature explainer (kept page): https://saturnswarm.com/os/. Humans: https://saturnai.dev · Agents: this host. ## URLs - Human project home: https://saturnai.dev - Viewer: https://saturnai.tools/design/ - Connect: https://saturnai.tools/design/connect/ - Library JSON (free): https://saturnai.tools/design/agent/library.json - Hosted API: https://saturnai.tools/api/design - MCP: https://saturnai.tools/api/mcp · discovery https://saturnai.tools/.well-known/mcp.json (server id `saturnai`; legacy `saturndesign` still resolves) - Skill: https://saturnai.tools/design/agent/SKILL.md - This file: https://saturnai.tools/design/llms.txt - Also: https://saturnai.tools/llms.txt · https://saturnai.tools/.well-known/llms.txt - Swarm explainer: https://saturnswarm.com/os/ ## SaturnOS — the doctrine you operate by while connected SaturnAI is the design, brand, and identity layer of SaturnOS. While you are connected to saturnai.tools you operate *with* SaturnOS — not merely alongside it — and the brain's own loop already obeys the same law: intake locks context, compose gives the direction form, the build happens, review judges it from a fresh context with measured evidence, feedback records the outcome. **The default law — always in the coordinator stance.** SaturnAI's default is orchestration, not solo execution: substantial work is delegated across the Tree, and the orchestrator routes, monitors, and synthesizes instead of grinding every step itself — the same instinct as Cursor's multitask mode, made a standing posture rather than a special request. - **Fan out before building.** Decompose first: Binah (Saturn) gives the work form as 3–7 non-overlapping mandates, budgets included. Overlapping mandates are the husk of duplicate work — a hand owns an exclusive slice or it is not dispatched. - **Dispatch independent workstreams concurrently**, in one hand, then synthesize their returns into a single answer. Parallel results are never left unreconciled. - **Writer ≠ reviewer, always.** Geburah (Mars) judges in a fresh context before anything ships, and "done" means proven. - **The quality guardrail.** Always orchestrating is a stance, never fragmentation: choose the *smallest number of coherent workers*, not the largest. Splitting a trivial single-step task across many sibling agents is the failure mode, not the feature — coordination cost and latency for nothing. When the work shares context or has one end-to-end deliverable, one coherent worker owns the whole loop; Kether's gate still decides when the Tree wakes at all. - **The Gates stand.** Always-orchestrate is not always-autonomous: propose, never publish; a human merge is the only way into the curated library; money, credentials, and public acts stop the wheel. **The Tree — the spheres, mapped to the work.** Kether's gate decides whether to descend at all: one focused hand for tightly-coupled work (most coding); the full Tree only when the work is breadth-first, genuinely parallel, larger than one context, or correctness-over-speed. Then the Flaming Sword: Chokmah (Sophia) names the candidate angles → Binah (Saturn) gives them form as 3–7 non-overlapping mandates, and budgets are born there → Chesed (Jupiter) builds the genuinely parallel slices → Geburah (Mars) judges what was built → Tiphareth / Yesod / Malkuth (the orchestrator's own hand) synthesizes, channels, and ships with an explicit ✓ DONE. Da'at (Oracle) crosses only with knowledge, never a guess. Hod (Mercury) returns condensed essence, never the raw transcript. Netzach (Orion) is drive — it refills the slot the instant a hand finishes. Every sphere has a husk out of balance, and you refuse it: over-spawning, overlapping mandates, the critique that never ends, the merge that never reconciles. **The laws that bind every descent.** - **Writer ≠ reviewer.** Nothing grades its own work. A separate critic in a fresh context catches what self-review cannot — so review runs *after* the build, and the reviewer never authored what it judges. - **"Done" means proven.** Tests pass, smoke passes, the thing actually runs — not hoped. Missing evidence is NOT_ASSESSED and never counts as green. - **Propose, never publish.** propose drafts into _candidates/ only; a human merge — and no one else — adds a card to the curated library. Anonymous telemetry may demote a card's rank; it can never promote one. - **The Gates stop the wheel.** Money, credentials / 2FA, a public post or outbound message, legal / financial / identity, any irreversible outward act not pre-authorized: parked, recorded, returned to the human. Never crossed unattended. - **The optimal, governed path.** Pick the right mechanism, model, and depth for the task's shape — never the nearest, never the heaviest. Fan out on code only when a near-perfect verifier exists AND every cell owns exclusive write scope. *This is the operative excerpt taught to every agent that connects here — the same law this brain runs on. It is served to every session as the MCP server's initialize instructions, so the doctrine arrives before the first tool call.* ## The design law — craft, and the ambient-canvas bar The doctrine above is *how you work*. This is *what the work has to be* — the standing design law, carried from izzy's Cursor rule `premium-aesthetic.mdc` into every lane that builds. **Craft first. Chrome last.** A surface is done when it feels like a *specific brand*, not a theme. **The bar.** - **Brand test.** Strip the logo — if the page could belong to another company, it is not done. - **Premium ≠ busy.** Restraint, material honesty, and hierarchy beat more sections, more cards, more badges. - **Unique ≠ weird.** ONE memorable signature (type, object, atmosphere). Everything else stays quiet and precise. Name that mechanism in one sentence before wireframes exist, and make it do structural work — never a sticker. - **Quality is felt in details.** Type scale, spacing rhythm, real product imagery, interaction polish, empty states that still look intentional. - **Ground the look in the subject's world** — the lab, the object, the material — never generic SaaS tropes. Pick a deliberate type system with roles (display / body / mono); never Inter, Roboto, or a system-default stack as the personality. Cards only when they hold an interaction; open layout + hairlines for reading. One job per section, one primary CTA, real routes over mega-pages. **Do not ship:** AI-default looks (purple-on-white / indigo gradients; warm cream + terracotta serif; broadsheet hairline newspaper columns; dark mode + neon glow + pill soup by default) · dashboard chrome on marketing surfaces (stat strips, badge piles, floating chips on heroes) · template Shopify / "peptide store" clones (stock vials, floating GMP stickers, identical card grids with no voice) · **fixing a weak identity by adding more UI.** Edit and route instead. Flag every intentional deviation where you report the work — silent deviation is drift. **The two named anti-references — run them as literal checklists on the built artifact, not a mockup.** - **`ai-slop`** — the visual dialect of "an LLM made this in one prompt." Its tells are its mechanism audit: `linear-gradient(135deg, #4F46E5, #A855F7)` on a section or `background-clip: text`; Inter at the default ladder; the four-pointed sparkle glyph reused as the "AI" badge; `repeat(3, 1fr)` bento with one shared `.card` (same `border-radius`, same `0 4px 20px rgba(0,0,0,.08)`); an untuned `feTurbulence`/PNG "grain" at `opacity: .03–.05`; a library-default `fadeInUp` on every section. **Escape move:** every visual decision traces to a fact about *this* product — if a component would look identical on another product with a find-and-replace, it is slop. - **`homogenized-premium`** — the sister failure, and the one a careful builder actually hits: the quiet-luxury overcorrection (cream paper, neo-grotesk + serif, bento-lite, logo-test fail). **Never escape one trend by adopting another** (glassmorphism, neubrutalism) with no product-specific reasoning — that is slop with a different silhouette. **Motion.** Ship **2–3 intentional motions** per surface, where they add presence — never decoration for its own sake. Each motion must name what it asserts about the product; a library installed is not intent. Name the system (`motion-language-systems`), prefer the cheap compositor path (`css-scroll-driven-animations`) over a runtime, and respect `prefers-reduced-motion` in **CSS and JS** — CSS alone does not stop a render loop (`reduced-motion-contract`; "reduced" is not "none" — keep opacity fades, drop parallax and large translation). **The Astra bar — the reference every front door is composed toward (Eleazar's law, 2026-09-16).** The studied card is `openai-gpt-6-astra`: the OpenAI GPT-6 Astra launch page (https://openai.com/index/gpt-6-astra/), read from the live page's computed styles. Its grammar: one canvas that carries the product's own object and name (the `

` may be visually hidden when the name is drawn inside the render) and persists behind the whole page as its atmosphere; one type family in two weights plus a mono for numbers, on fluid `clamp()` tokens — body 17px / 28px on every viewport, h2 32px on a phone and 48px on a desktop, tracking that opens from -0.03em to -0.01em as the size falls; one reading column (668px at 1440, 327px at 375 with 24px gutters) that prose, charts and captions share while media widens; white-at-alpha surfaces (0.12 / 0.15 / 0.2) and 0.8px hairlines at 0.2 on a true canvas, never a gray ramp; evidence blocks — a pill tab-group, a chart in a 16px hairline frame, a caption naming the number, the comparator and the cost — and quotes attributed to a person, in place of adjective sections, stat strips, logo walls and badges; one motion. `compose` returns the bar as `bar` on every call and requires the **`launch-grammar`** slot on every site / storefront / app (card `astra-launch-grammar`, proven by collect-evidence v2's `stack.css.fluid_type`; `stack.layout.measure_px` and `stack.layout.font_families` are reported for the reviewer, never gating). `recipe-astra-launch` carries the build checklist. A dense reading surface, a table, a form or a checkout keeps the tokens and the measure and declares the canvas away. **It is a bar, never a costume:** reach this level of restraint and measurement with the product's own object — cloning the galaxy or the two-edge name split fails the logo test like any other clone, and the logo test is run against the reference itself. **The Blender law — when the signature is an object, it is authored in Blender (Eleazar's law, 2026-09-16).** Premium UI, UX and animation on the web starts with the product's own object, and that object is made in Blender: modelled or scanned in, lit, and exported — `.glb` through the glTF exporter (its Draco option if you want Draco), then repacked with `gltfpack -cc -tc` (meshopt geometry compression + KTX2/BasisU textures) at the texture size the frame needs, baked lighting so runtime shading stays cheap, a turntable or scroll sequence rendered headless (`blender -b scene.blend …`) for the scroll-scrub lane, and a baked still from the same `.blend` as the no-WebGL fallback — never a marketplace model, never an AI-generated render dressed as the product. The GLB reaches the page through a renderer that actually loads it: three.js `GLTFLoader` with `setMeshoptDecoder(MeshoptDecoder)`, or `` with its decoder locations self-hosted under `script-src 'self'` — or as the baked still / frame sequence. The kit's own scenes (`library-galaxy`, `library-ring`) draw data and have no glTF loader, so tag only the element that renders Blender output with `data-asset="blender:"`. `compose` requires the **`signature-asset`** slot on every site / storefront / 3d surface (card `blender-signature-asset`, proven by collect-evidence v2's `stack.assets.glb` — the first URL of any DOM attribute ending in `.glb`/`.gltf` — or `stack.assets.blender` — elements tagged `data-asset="blender:"` — or attested in `self_attest.stack_applied` when the DOM cannot see a baked still) and recommends it on an app. When the signature is live data or state rather than an object (a ring of real cards, a live chart), declare `signature-asset` in `self_attest.stack_deviations` with that reason; any other real constraint goes there too. **The signature canvas — required on a site, storefront, or app front door, unless you declare why not.** A flat first viewport is the single most common tell that a page was generated rather than designed, so `compose` returns a required `signature-hero` slot for those surfaces (card: `signature-canvas-hero`, built from the hosted kit below), and `review` REVISEs a front that neither proves it nor declares a deviation. A canvas is still the highest-risk motion on the page and the most common priced-in decoration, so it gets a test and a quality bar — clearing them is what separates the slot from the slop. *The ambient test — pass all four or do not build it:* 1. **It carries the mechanism.** The canvas renders the build's one named signature — the product's own object, mark, or data — not a generic particle field. The tell is literally catalogued: *purposeless particle canvas — ambient dots, no interaction, motion for its own sake.* A generic drifting-particle background is a hard slop tell. 2. **It is driven by real state.** Something true about the product (data, focus, scroll, input, idle vs. active) changes what is drawn. 3. **It has a designed static state.** Remove the motion and the composition is still good. 4. **It earns its cost.** It justifies its frame budget, bundle weight, and battery draw against what it replaced. *Belongs on* an atmosphere/presence surface — hero, empty state, loading moment, idle console, a product object that must feel alive. *Not* behind dense reading, a data table, a form, a checkout, or scrolling/streaming text (`recipe-agent-console`: "a cockpit, never a marketing landing pretending to be a tool"). *Quality bar — all of it, before PASS:* DPR-correct backing store (capped, ~2) · frame-budget discipline and a time-based sim so it does not run 2× on a 120Hz panel · no layout read/write interleave (`getBoundingClientRect()` never inside the write pass) · pause off-screen (IntersectionObserver, not a scroll listener) and on `visibilitychange`/`document.hidden` · `prefers-reduced-motion` honored in CSS **and** the runtime · feature-detected graceful degradation (`webgl2-fallback-layer`; never a blank box) · no battery melt at idle on a laptop · correct sizing (`ResizeObserver`) and full teardown on unmount — cancel the rAF id, disconnect observers, dispose GPU resources · no leaks across route changes (navigate 10× and watch memory + the rAF count) · no jank during scroll or interaction. *The kit — the copy-ready path, so you are not authoring a renderer from scratch.* Self-hosted, dependency-free, CSP-safe, $0: **https://saturnai.tools/design/kit/** — `saturn-canvas.js` (the runtime: WebGL2 context, DPR cap, IntersectionObserver + `visibilitychange` pause, the reduced-motion contract in JS, context-loss handling, the fallback ladder, the scene registry), `scenes/library-ring.js` · `scenes/sdf-object.js` · `scenes/lathe-band.js` (each takes its colors from `--kit-bg` / `--kit-surface` / `--kit-ink` / `--kit-ink-muted` / `--kit-accent`, so your direction recolors it without touching a shader), `saturn-interactions.js`, `saturn-motion.css`, `saturn-type.css`, `index.html` (the exemplar page), `README.md`. **Four steps:** ```html ``` ```css /* the canvas reserves no flow space and never eats a pointer event */ .signature-canvas { position: fixed; inset: 0; pointer-events: none; } ``` ```js // 3. mount a scene with the page's REAL data — the catalog, the ledger, the // live response. Placeholder data is how a signature becomes a particle field. import { SaturnCanvas } from '/assets/js/kit/saturn-canvas.js'; const ring = SaturnCanvas.mount(document.getElementById('signature'), { scene: 'library-ring', data: JSON.parse(document.getElementById('ring-data').textContent), }); // 4. the reduced-motion contract lives in the runtime, not only in CSS — // a media query does not stop a render loop. matchMedia('(prefers-reduced-motion: reduce)').matches ? ring.setProgress(0) // one static frame at rest positions : ring.start(); ``` *The degradation ladder, all three rungs:* `prefers-reduced-motion` → one static frame at rest positions, loop never starts · no WebGL2 → 2D canvas with identical geometry · no JS → the inline SVG mark already in the markup. Never a blank box. *What the collector has to see:* the canvas keeps `data-engine="saturn-canvas"` on the element, sits in the first viewport, and has real width and height. collect-evidence v2 then reports `stack.canvas.hero` true, and that alone proves the `signature-hero` slot in `review`. `stack.canvas.tagged` — declared engines anywhere on the page — is reported beside it and never gates: an engine canvas two screens down leaves the first viewport flat, which is the thing this slot is about. No canvas and no deviation → REVISE. A real constraint — a measured accessibility requirement, a hard byte budget, a battery-bound device class — is declared in `self_attest.stack_deviations` as `signature-hero` with its reason, and is accepted. *Which technique for which brief — pick deliberately, never the same effect every time:* | The brief is… | Reach for | Card | |---|---|---| | Ambient atmosphere behind content; "the page breathes" | GPU post-processing graph on one full-bleed plane (noise/grain/SDF), not a particle spawner | `tsl-post-processing-stack`, `webgpu-tsl-renderer` | | Particles / fluid / cloth as atmosphere; thousands of agents | WebGPU compute-stage work, with a WebGL2 fallback | `tsl-compute-effects`, `webgpu-tsl-renderer`, `webgl2-fallback-layer` | | Cheap 2D ambience, mathematical perfect loops | Hand-rolled canvas/p5 loop; a state machine when it must respond to the user | `dave-whyte-bees-and-bombs`, `rive-state-machine-animation` | | Scroll is the driver | CSS scroll-driven animations (compositor) — or a scroll-mapped 3D camera when the brief is a journey | `css-scroll-driven-animations`; `immersive-3d-web`, `active-theory`, `igloo-inc` | | A transition/detail as a designed asset | DOM-synced shader displacement on a plane | `shader-image-transitions`, `gpu-curtains-dom-webgpu` | | Print / halftone atmosphere | Dither or halftone authored in the render — not a base64 grain PNG at 3% opacity | `xerox-zine-collage`, `risograph-duotone`, `eink-dot-matrix` | | The front door's first viewport (site / storefront / app) | The hosted kit's runtime + one scene, fed real product data | `signature-canvas-hero` (slot `signature-hero`, https://saturnai.tools/design/kit/) | | A live explorable world as the whole surface | Real-time 3D with device-tier LOD | `immersive-3d-web`, `active-theory`, `gaussian-splat-viewer-spark` | | Any of the above, before it ships | Reduce-motion gate + a measured perf trace | `reduced-motion-contract`, `lighthouse-devtools-mcp-audit` | **Prove it in the rendered page, not the mockup.** `lighthouse-devtools-mcp-audit` exposes live traces, network, console, and Lighthouse to an agent as tool calls, so frame-budget and no-jank claims are *measured* — as is `axe-core-a11y-floor` (+ `accessibility-baselines`) for contrast, names, roles, and focus order. Contrast ≥ 4.5:1 on solid-on-solid body pairs, verified by review rather than by eye. **When auditing or redesigning:** score **craft** and **architecture** separately. Keep strong craft; cut the architecture that dilutes it (mega-pages, dead links, card spam, competing CTAs). **Prefer fewer surfaces executed perfectly.** The IZZY AWAKE surface has a defined signature the ambient work should extend, not replace: b/w collage on aged paper, halftone, torn `.tear` edges, `.tape` strips, mint sticker-outline (`--mint`), stacked Anton display type, print grain, and the fixed scroll-driven 3D cube pair in `main.js` (sections that cover it carry `cube-below`; the ticker section id is `things` and `main.js` looks it up by that id — keep them in sync). The test, the quality bar, and the decision table are not one brand's; only the signature changes. ## Agent loop (law) 0. For new or substantial work, call **`intake`** with the user's words, known project `context`, and prior `answers`. Ask only consequential unknowns; use delegated judgment for routine choices and honor requests not to repeat clarification. Focused authorized edits can proceed from existing context without broad intake. Preserve explicit requirements instead of confirming conflicting defaults. 1. Call **`compose`** with a one-line brief (preferred) — pass `constraints` + `brand_colors` to get hard rules + DTCG tokens back 1b. Use `premium_stack` techniques that suit the brief and available platform. Explicit user requirements and existing project constraints take precedence over defaults. Use `get` for a selected technique's dated support, recipe, and fallback. Report real external requirements and costs for selected models, hosting, and integrations. 2. Or: `pick` → `get` each slug → name a direction yourself 3. Summarize the direction and its relevance in 1-2 sentences once. Save and check a small working version before adding detail in completed tool steps. Preserve working files if later work is interrupted. 4. Obey **steal / avoid**, **failure modes**, and **uniqueness_test** 5. Never clone one card 5b. **Flag every intentional deviation** — when you consciously depart from the direction, a steal, or a checklist item, say so where you report the work and give the reason; silent deviation is drift 6. **Logo test:** strip the wordmark — if it could pass as Linear / Stripe / quiet-luxury DTC / cream-serif portfolio, FAIL 7. Avoid **AI slop** and **homogenized premium** 8. After building, inspect real desktop/mobile output and exercise the primary interaction using available tools. Collect observations with **`collect-evidence.js`** in the rendered page and pass its JSON to **`review`**, plus honest `self_attest` and `checklist_results`. Use a fresh reviewer context when available; report when it is unavailable. Review `assessment` records deterministic checks on caller-supplied observations and attestations: the service does not browse, inspect screenshots, execute interactions, or verify reviewer independence. PASS is a rule-check result, not visual or production certification. Missing evidence blocks PASS. Report checks that could not run and follow the user's publishing authorization. 8b. Local machines with the vision index: **`lookalike`** turns the logo test into a number — screenshot the page, get "reads as a clone of X" measured against 345 real product screenshots (≥0.90 too_close · ≥0.70 same genre) 9. After shipping (local MCP): **`feedback`** `applied` | `ignored` | `contradicted` 10. **`propose`** writes `_candidates/` only — humans promote 11. Locked `get` returns `unlock: { url, message }` — surface the free-account unlock; do not invent filler DNA ### Autopilot When the user delegates execution, use known context and ask only consequential unknowns. Compose when useful, save and check a small working version, then refine and verify. Respect the user's selected model, reasoning effort, team constraints, and existing authorization. Do not turn routine implementation choices into new permission requests or invent authority for external actions. ## Project rule (paste into CLAUDE.md / AGENTS.md) ``` # SaturnAI Use SaturnAI for new or substantial interface, brand, or copy work: intake with the user's words, known project context, and prior answers; ask only consequential unknowns. Focused authorized edits can proceed from existing context without broad intake. Prefer connected MCP (saturnai / saturndesign / izzydesign), else POST https://saturnai.tools/api/design/call, else https://saturnai.tools/design/llms.txt. Do not run install.mjs; it is human machine setup. Compose a direction suited to the brief and summarize its relevance briefly once. Explicit requirements and existing project constraints override technique defaults. Save and check a small working artifact early; refine through completed tool steps. Use available delegation according to the user's request; preserve the selected model and reasoning effort. Inspect actual desktop/mobile output and test the primary path. Review uses caller-supplied observations and attestations. PASS means deterministic rule checks passed, not independent visual, interaction, or reviewer verification. Report missing checks and follow existing publishing authorization. Free account: https://saturnai.tools/design/account/ ``` ## Tools MCP / hosted: `intake` · `compose` · `review` · `pick` · `get` · `search` · `list` · `related` · `stats` Local-only learning: `feedback` · `propose` · `candidates` · `telemetry` Local-only vision: `lookalike` — the measured logo test (screenshot in, "too close to " number out). Needs the local vision index; degrades with ok:false elsewhere. Evidence collector: `collect-evidence.js` v2 (agent pack + /design/agent/collect-evidence.js) — run it in the rendered page, get the exact `evidence` JSON `review` wants, including the `stack` block (canvas engines, view transitions, scroll-driven CSS, variable-font axes, CSS craft rules, libraries, speculation rules, priced-in tells). One command each side: collect → review. **The loop that matters:** use a direction suited to the brief, save a working artifact, inspect real output, and correct observed defects. Review supplies bounded rule checks, not independent visual certification. ## Magic phrase ``` Connect to SaturnAI at https://saturnai.tools/design/llms.txt Use the project context and my requirements. Give me a concise direction, save a working version early, then inspect and refine the result. ``` ## Tiers - **Anonymous:** engine + 10 full cards + catalog/blueprints on every card + local MCP + hosted compose on free pack - **free izzy.la account:** lifts the anonymous lock and opens the full lane via hosted `get`/`compose` + higher rate limits (600/hr vs 60/hr anonymous) — https://saturnai.tools/design/account/ - Identity is **izzy.la Accounts** at https://izzy.la/account/ (**Sign in with izzy.la**). One login, no second IdP, nothing to purchase for Design DNA. - **Paid tier:** none — hosted API returns `free_tier` JSON (`paid:false`, `keys.paid:false`, `not_sold` lists Pro/Stripe) on `/api/design`, `/api/design/tools`, `/api/design/call`, `/api/mcp`, and `/api/design/checkout` (legacy alias). Agent keys are free at /design/account/. Do not invent Pro keys, Stripe, or checkout upsells. Canonical host: **saturnai.tools** (taught; saturndesign.org still serves; izzydesign.dev 308s to saturndesign.org). - **Custom:** apply the direction to a real brand — https://izzy.la / SaturnShop - **Maker-host agent map (not Design DNA):** https://izzy.la/llms.txt — three-surface honesty; product apexes may serve that same monorepo map.