{
  "generated_at": "2026-06-04T01:42:14+00:00",
  "families": {
    "worlds": {
      "label": "Live Worlds",
      "kicker": "PLAYABLE PROOF",
      "blurb": "Full games and sims the studio built, deployed, and keeps revising. Walk in."
    },
    "learn": {
      "label": "Watch a Machine Learn",
      "kicker": "SHOW, DON'T CLAIM",
      "blurb": "Open a tab and watch real ML converge, live — hand-written numpy and self-play you can see think."
    },
    "tools": {
      "label": "Flagship Tools",
      "kicker": "THE ONES YOU'D KEEP OPEN",
      "blurb": "A deterministic floor, a local-LLM core, and your data never leaves the machine."
    },
    "toolbelt": {
      "label": "The Toolbelt",
      "kicker": "SMALL, SHARP, LOCAL",
      "blurb": "The long tail the agents dream up and ship — each does one thing well, on your GPU, for nothing."
    }
  },
  "products": [
    {
      "slug": "mirror-loop",
      "name": "Mirror Loop",
      "family": "worlds",
      "glyph": "◑",
      "status": "play",
      "hook": "A dystopian-lab RPG that learns your habits, predicts your choices, and re-orders the world to meet them.",
      "receipt": "adaptive narrative · learns you",
      "url": "https://mirror-loop.stateful-ai.com/"
    },
    {
      "slug": "petri",
      "name": "Petri",
      "family": "worlds",
      "glyph": "❖",
      "status": "play",
      "hook": "A living strategy world — civilizations rise, fight, and fall on a server-backed sim with a learned tactical layer.",
      "receipt": "live sim · learned tactics",
      "url": "https://petri.stateful-ai.com/"
    },
    {
      "slug": "esports-tycoon",
      "name": "Esports Tycoon",
      "family": "worlds",
      "glyph": "◓",
      "status": "play",
      "hook": "A dry-mockumentary management sim where you run the humans, not the matches — players remember, clash, carry pressure.",
      "receipt": "social memory · week to week",
      "url": "https://esports-tycoon-backend.stateful-ai.workers.dev/"
    },
    {
      "slug": "hamlet",
      "name": "Hamlet",
      "family": "worlds",
      "glyph": "✦",
      "status": "play",
      "hook": "A small town of LLM-driven souls who wake with secrets and grudges and improvise a soap opera that remembers.",
      "receipt": "emergent · day 1 bends day 3",
      "url": "https://stateful-ai.com/play/hamlet/"
    },
    {
      "slug": "parlor",
      "name": "Parlor",
      "family": "worlds",
      "glyph": "◐",
      "status": "play",
      "hook": "Social deduction where every other player is an LLM with a hidden role; the mole lies and the deception is emergent.",
      "receipt": "hidden role · emergent lies",
      "url": "https://stateful-ai.com/play/parlor/"
    },
    {
      "slug": "alibi",
      "name": "Alibi",
      "family": "worlds",
      "glyph": "⌕",
      "status": "play",
      "hook": "A jewel goes missing and three LLM suspects are in the room; question them and catch the one whose alibi cracks.",
      "receipt": "interrogate · catch the liar",
      "url": "https://stateful-ai.com/play/alibi/"
    },
    {
      "slug": "descent",
      "name": "descent",
      "family": "learn",
      "glyph": "∇",
      "status": "play",
      "hook": "A hand-written neural net bends its decision boundary live until two tangled clouds of points come apart clean.",
      "receipt": "numpy backprop · live",
      "url": "https://descent.stateful-ai.com/"
    },
    {
      "slug": "forage",
      "name": "forage",
      "family": "learn",
      "glyph": "⌖",
      "status": "play",
      "hook": "A pixel creature wakes up clueless in a maze and, episode by episode, learns a Q-policy until every arrow points at food.",
      "receipt": "Q-learning · 5% → 100%",
      "url": "https://forage.stateful-ai.com/"
    },
    {
      "slug": "cluster",
      "name": "cluster",
      "family": "learn",
      "glyph": "⊙",
      "status": "play",
      "hook": "A cinematic k-means: centroids glide to the heart of each group and hidden structure falls out of the noise — no labels.",
      "receipt": "unsupervised · no labels",
      "url": "https://cluster.stateful-ai.com/"
    },
    {
      "slug": "tell",
      "name": "tell",
      "family": "learn",
      "glyph": "♠",
      "status": "play",
      "hook": "A model teaches itself to bluff from nothing but the rules of Kuhn poker, converging to game theory's Nash optimum.",
      "receipt": "self-play → Nash · 0.0009",
      "url": "https://stateful-ai.com/play/tell/"
    },
    {
      "slug": "sigil",
      "name": "sigil",
      "family": "learn",
      "glyph": "◈",
      "status": "play",
      "hook": "Pick winners from pairs and Sigil trains a ranker that sorts a fresh batch by what you'll love — taste as a model on disk.",
      "receipt": "learned taste · ~79% vs 50%",
      "url": "https://stateful-ai.com/play/sigil/"
    },
    {
      "slug": "trellis",
      "name": "trellis",
      "family": "tools",
      "glyph": "⬡",
      "status": "play",
      "hook": "A local-first tutor that maps the hidden prerequisite structure of any topic and learns how you specifically forget.",
      "receipt": "living skill-graph · local",
      "url": "https://trellis.stateful-ai.com/"
    },
    {
      "slug": "brink",
      "name": "brink",
      "family": "tools",
      "glyph": "↯",
      "status": "play",
      "hook": "Name the scary money move; a Monte Carlo rolls your next two years thousands of times to show the odds you're still standing.",
      "receipt": "Monte Carlo · your numbers",
      "url": "https://brink.stateful-ai.com/"
    },
    {
      "slug": "tally",
      "name": "tally",
      "family": "tools",
      "glyph": "▤",
      "status": "cli",
      "hook": "Point it at a transactions CSV: where your money went, where it's heading, and what to do — without your data leaving.",
      "receipt": "local · data never leaves",
      "url": ""
    },
    {
      "slug": "crux",
      "name": "crux",
      "family": "tools",
      "glyph": "✕",
      "status": "cli",
      "hook": "A tutor that diagnoses the specific misconception behind your wrong answer and only calls it resolved once it's proven stuck.",
      "receipt": "diagnoses · proves the fix",
      "url": ""
    },
    {
      "slug": "whet",
      "name": "whet",
      "family": "tools",
      "glyph": "⌁",
      "status": "cli",
      "hook": "A skeptical local-LLM editor that pressure-tests a markdown brief, rewrites its weakest line, and proves the improvement.",
      "receipt": "pressure-tests · proves lift",
      "url": ""
    },
    {
      "slug": "wager",
      "name": "wager",
      "family": "tools",
      "glyph": "⚖",
      "status": "cli",
      "hook": "A calibration journal: log a bet with your confidence, let a model spar with the case you're wrong, score your 90%s.",
      "receipt": "are your 90% calls 90%?",
      "url": ""
    },
    {
      "slug": "delta",
      "name": "delta",
      "family": "tools",
      "glyph": "Δ",
      "status": "cli",
      "hook": "Your whole scattered workday in one openable Today.md: what needs you, what moved, and paste-ready draft replies.",
      "receipt": "one openable Today.md",
      "url": ""
    },
    {
      "slug": "resonance",
      "name": "resonance",
      "family": "tools",
      "glyph": "≈",
      "status": "cli",
      "hook": "Ask a fresh idea “what have I already thought about this?” — a semantic mirror over your own notes, code, and git.",
      "receipt": "semantic mirror · your GPU",
      "url": ""
    },
    {
      "slug": "chord",
      "name": "chord",
      "family": "tools",
      "glyph": "♫",
      "status": "cli",
      "hook": "Drop in a week of notes or a stack of tickets and a local model names the single through-line they share, with confidence.",
      "receipt": "names the through-line",
      "url": ""
    },
    {
      "slug": "rumor",
      "name": "rumor",
      "family": "tools",
      "glyph": "❝",
      "status": "cli",
      "hook": "Give it a URL; it reads the page against your interests and writes one opinionated paragraph in your voice — a curator.",
      "receipt": "curator, not a summary",
      "url": ""
    },
    {
      "slug": "spark",
      "name": "spark",
      "family": "tools",
      "glyph": "✲",
      "status": "cli",
      "hook": "One quirky daily writing prompt spun from three of your own interests, picked at random by your local GPU.",
      "receipt": "your interests · daily",
      "url": ""
    },
    {
      "slug": "hum",
      "name": "hum",
      "family": "tools",
      "glyph": "∿",
      "status": "cli",
      "hook": "A quiet hourly daemon that writes one line about what you were working on, so your weekly review becomes a `cat`.",
      "receipt": "weekly review = a cat",
      "url": ""
    },
    {
      "slug": "pulse",
      "name": "pulse",
      "family": "toolbelt",
      "glyph": "•",
      "status": "cli",
      "hook": "Your RSS firehose as one verdict-sentence per item, in your own voice, on your own GPU.",
      "receipt": "RSS → verdicts",
      "url": ""
    },
    {
      "slug": "drift",
      "name": "drift",
      "family": "toolbelt",
      "glyph": "•",
      "status": "cli",
      "hook": "A weekly paragraph on how your writing is quietly changing, instead of a diff you'll never read.",
      "receipt": "how your writing drifts",
      "url": ""
    },
    {
      "slug": "lattice",
      "name": "lattice",
      "family": "toolbelt",
      "glyph": "•",
      "status": "cli",
      "hook": "A concept graph over a folder of markdown notes — which of your ideas are secretly connected.",
      "receipt": "notes → concept graph",
      "url": ""
    },
    {
      "slug": "trail",
      "name": "trail",
      "family": "toolbelt",
      "glyph": "•",
      "status": "cli",
      "hook": "Wrap any shell command, get back a clean markdown timeline of what it actually did.",
      "receipt": "command → timeline",
      "url": ""
    },
    {
      "slug": "kindling",
      "name": "kindling",
      "family": "toolbelt",
      "glyph": "•",
      "status": "cli",
      "hook": "Scans your graveyard of half-finished drafts and ranks them by closeness-to-publishable.",
      "receipt": "drafts ranked to ship",
      "url": ""
    },
    {
      "slug": "hush",
      "name": "hush",
      "family": "toolbelt",
      "glyph": "•",
      "status": "cli",
      "hook": "Pipe a noisy log through it; a local model emits only the lines that actually matter, as JSON.",
      "receipt": "noisy log → signal",
      "url": ""
    },
    {
      "slug": "cipher",
      "name": "cipher",
      "family": "toolbelt",
      "glyph": "•",
      "status": "cli",
      "hook": "Swaps names for Alice/Bob/Carol so you can share a private draft for review, then decodes it right back.",
      "receipt": "anonymize · then restore",
      "url": ""
    },
    {
      "slug": "phrase",
      "name": "phrase",
      "family": "toolbelt",
      "glyph": "•",
      "status": "cli",
      "hook": "Pipe in a rambling note, get one tight line back at or under your character budget.",
      "receipt": "ramble → one tight line",
      "url": ""
    },
    {
      "slug": "signal",
      "name": "signal",
      "family": "toolbelt",
      "glyph": "•",
      "status": "cli",
      "hook": "Reads a week of commits across your repos and hands back one sharp observation about the shape of your work.",
      "receipt": "a mirror, not a summary",
      "url": ""
    },
    {
      "slug": "ember",
      "name": "ember",
      "family": "toolbelt",
      "glyph": "•",
      "status": "cli",
      "hook": "Feed it a log; a model surfaces the three moments that actually mattered, with line numbers and why.",
      "receipt": "the 3 moments that mattered",
      "url": ""
    },
    {
      "slug": "salt",
      "name": "salt",
      "family": "toolbelt",
      "glyph": "•",
      "status": "cli",
      "hook": "Single-passphrase AES-256-GCM encryption for the files you'd rather not leave plain on disk.",
      "receipt": "one passphrase · local",
      "url": ""
    },
    {
      "slug": "index",
      "name": "index",
      "family": "toolbelt",
      "glyph": "•",
      "status": "cli",
      "hook": "A grep-able `ls -lR`: every file as a markdown table row with its first line.",
      "receipt": "grep your filesystem",
      "url": ""
    },
    {
      "slug": "swatch",
      "name": "swatch",
      "family": "toolbelt",
      "glyph": "•",
      "status": "cli",
      "hook": "Point it at a folder of images, get one self-contained page of dominant 5-color palettes.",
      "receipt": "images → palettes",
      "url": ""
    },
    {
      "slug": "tide",
      "name": "tide",
      "family": "toolbelt",
      "glyph": "•",
      "status": "cli",
      "hook": "Wire one line into your shell and watch your terminal-uptime breathe as a tiny ASCII chart.",
      "receipt": "your week, breathing",
      "url": ""
    },
    {
      "slug": "atlas",
      "name": "atlas",
      "family": "toolbelt",
      "glyph": "•",
      "status": "cli",
      "hook": "Wander into any unfamiliar git repo and get a 30-second markdown briefing — no LLM needed.",
      "receipt": "any repo in 30s",
      "url": ""
    },
    {
      "slug": "orrery",
      "name": "orrery",
      "family": "toolbelt",
      "glyph": "•",
      "status": "cli",
      "hook": "Your week of git activity rendered as a slow-spinning ASCII solar system, each commit a pulse.",
      "receipt": "git as a solar system",
      "url": ""
    },
    {
      "slug": "cinder",
      "name": "cinder",
      "family": "toolbelt",
      "glyph": "•",
      "status": "cli",
      "hook": "Paste a meeting note; get up to three decisions and three follow-ups as strict, owner-tagged JSON.",
      "receipt": "notes → decisions JSON",
      "url": ""
    },
    {
      "slug": "tessera",
      "name": "tessera",
      "family": "toolbelt",
      "glyph": "•",
      "status": "cli",
      "hook": "Pipe any photo in, get a glyph mosaic out — ASCII art with swappable character ramps.",
      "receipt": "photo → glyph mosaic",
      "url": ""
    },
    {
      "slug": "glance",
      "name": "glance",
      "family": "toolbelt",
      "glyph": "•",
      "status": "cli",
      "hook": "One command: everything waiting on you right now — mentions, parked PRs, your next few hours — in 25 lines.",
      "receipt": "what needs you, now",
      "url": ""
    },
    {
      "slug": "vellum",
      "name": "vellum",
      "family": "toolbelt",
      "glyph": "•",
      "status": "cli",
      "hook": "Type a word, get a coherent fictional world: a framed map, named nations, their feuds, and a history.",
      "receipt": "a word → a whole world",
      "url": ""
    }
  ]
}