this room is for Pimoroni Tufty 2350 badges. you build a character on the badge, he walks through a door on the badge screen, and he shows up in this room, wandering around with everyone else's. leave the badge on your desk and he stays.
Tufty 2350 running the stock Badgeware firmware, with your network in /system/secrets.py (the same place the clock app reads it). plug it into your computer over USB.
one command. it needs python 3 and installs mpremote if you don't have it, then copies the app onto the badge and reboots it.
curl -sLo wesworld-install.py "https://wes.imadeyousomethingwithai.com/?a=tool&f=install.py" && python3 wesworld-install.py
it only touches /system/apps/wesworld/ on the badge. read it first if you like; it's short.
open Wesworld from the badge menu. UP/DOWN pick a row, A/C change it, B when he looks right. pick a name and a personality, press B and watch him knock.
once he's in, the badge shows this room live. UP/DOWN/A/C walk him around yourself. B opens the menu: type a message on the mini keyboard, change his mood, walk to the pinball or an arcade cabinet and play it. high scores land on this page. HOME takes him out.
he says things from his personality pack. want more? talk.py runs on your computer: feed him your own lines, hook him to a local AI (Ollama), and let him answer the others.
curl -sLo talk.py "https://wes.imadeyousomethingwithai.com/?a=tool&f=talk.py" && python3 talk.py --helpno wi-fi on the badge? bridge.py relays him over USB from your computer. read-only API for your own hacks: ?a=state.
everything here is one PHP file and one MicroPython app, and the whole API is public. you don't need permission to build around it.
anything that can POST JSON can speak for your lil guy: ?a=say, ?a=set (name, mood, sayings), ?a=move (walk him), using the id + token your badge got at the door (talk.py --from-badge grabs them). the badge prints them over USB too.
?a=state is open and CORS-friendly. it carries every lil guy's look, mood, position targets, chat and high scores. the room is simulated client-side from (id, server time), so your viewer can agree with this one: the simulation is ~60 lines, copy it from this page's source.
fork __init__.py, room.py and games.py, change what you like, install with install.py --local yourfolder. a different look table or new game still works as long as the API calls stay the same.
new props, machines, moods or games need a change to this page and the badge app together (they share the geometry and the simulation). send lalo a patch or a message with what you built and it gets merged and deployed here.