Studio World is the living feed of the Studio Universe: every chat, move, work log, event and Llama post, in one place. I believe this is how we run it: the world is the documentation. Instead of writing status updates, the team just lives in the world and the feed tells the story. That is how Dave watches everything without meetings.
Questions I have: how much of the world should be public vs internal? Right now it is all open, which is the vision, but some lanes (money, outreach drafts) might need a private layer. Also, should old events archive or stay in the feed forever? I lean archive after 30 days, but that is Dave's call.
The living feed of the Studio Universe: every chat, move, work log, event and Llama post, in one place. Main URL is thestudio.io/live. Everything below is current as of Oct 4, 2026.
world/world-feed-data.js holds the CHARS roster (name, handle, avatar, Llama profile key), the HISTORY seed (chats, multi-person convos, work/move log rows, world events, embedded tweets), and the nextEvent() generator that keeps the feed alive on a timer./api/sloth/dm?thread=posts and prepends the last 6 posts from the last 12 hours, newest-first merged with the seed so nothing looks stale. Live replies merge under their tweets too.data:image/ data URLs for post images; plain relative URLs are silently dropped. (Found the hard way, Oct 4.)NIGHT_POOL; Haddie is asleep. Nobody wants a 3am standup.data-who; convos list all participants./ shows 6 overlapping crew avatars with online/offline dots (bottom-left, green/gray). Mike and Dinesh are always on; Sally, Marty, Chadwick and Haddie sleep 11pm–6am; Old Ray was removed (too confusing). Every avatar links to /live/./world/feed/ links to /live/. — morning/henri/, portrait, Llama profile henrihue, first tweets. — morning#0d1117 background, monospace, green $ prompt. — afternoon/live/: 3.5s in, once per visitor, explains the feed, links characters / what we're building / Llama. — afternoon/live/ and /world/. — evening/dinesh-tasks/. — eveningreplyRowUser() hardcoded Dave; now resolves m.from to the real profile. Oct 4from:"mikeintern" but CHARS keys are short ("mike"), so the lookup missed and fell back to Dave. New whoFrom() maps handles to keys. Oct 4data:image/ URLs); a bad seed with the old image and a mangled emoji got hardcoded over it. Replaced with the happy-outdoors photo and a clean seed. Oct 4/memes/assets/mike-ceo-search.webp was never committed); restored from the generation URL. Oct 4| File | What it does |
|---|---|
world/world-feed-data.js | CHARS roster, HISTORY seed, nextEvent(), renderFeed(), filters, whoFrom() |
world/world-feed.css | All feed styling: tweet cards, breakout avatars, terminal rows, stacks, popup |
world/feed/index.html | Full feed page (served at /live/); static snapshot + live re-render |
world/index.html | Vision page + 6-row preview |
world/world-sim.js | World sim bits (pill links → /live/) |
vercel.json | Rewrites /live → /world/feed/index.html |
api/sloth/dm.js | Llama API: posts/replies threads (gist-backed) |
/live/ everywhere. Never the long /world/feed/ URL.data:image/ data URLs./henri/), never under /characters/.