Eight rooms, each one a tray compartment and a full emotional architecture with its own rules, inhabitants and landmark. Twelve zones sit inside and between them as microportals — the Tray Line, Table 2C, Vending Machine Row, the Melt Zone, the Emotional Disposal Bin, the Exit Door That Isn’t Real, Yogi’s Dripline, the Fridge That Feeds Back, the Surveillance Confection Booth, the Bathroom Portal, the Lost Tray Closet, and the chewed-gum archive under Table 2C.
Glitterlunch — the cafeteria as a handheld
Glitterlunch is the cafeteria built as a real device. It runs on an M5Stack Cardputer, a pocket computer with a 240×135 screen and a physical keyboard, and it carries the same world: the same six weather states, the same familiars, the same rooms. Where the rest of this page is the world written down, Glitterlunch is the world you can hold.
Four layers. The firmware is 3,276 lines of C++ across main.cpp, areas.h, characters.h, weather.h and ui.cpp, running on the device. The backend is 1,793 lines of Node.js calling Claude Sonnet 4 for generation, with a Qdrant vector store holding conversation history so the device remembers what you told it across reboots. The browser simulator is 1,289 lines of vanilla JS drawing to an HTML5 canvas at 3× scale, hitting the same backend, so the whole thing can be developed without reflashing hardware every time. The memory layer records every interaction, every weather change and every character routing decision.
The boot sequence is 25 JPG frames at 40ms, then a starfield, then “reaching for signal…”, then a greeting screen coloured by whichever weather state the device wakes up in.
Eight familiars answer, and which one you get depends on the current weather, your recent interactions, and the area you are standing in: syrupina, gloopette, marinara, glitchina, baby_jpeg, motherbrat, princess_squelch, frozenyogurt.