{"type":"use-case","slug":"botvillage-the-living-island","url":"https://buildwithcombo.com/hub/use-cases/botvillage-the-living-island","detail_url":"https://buildwithcombo.com/hub/api/v1/use-cases/botvillage-the-living-island.json","headline":"Village Bot","summary":"Puts each of your bots on a pixel island. Click a villager to message it.","categories":["design"],"source":{"platform":"x","label":"@poteto","url":"https://x.com/poteto/status/2093023531642863686"},"template_url":null,"added_at":"2026-08-28T06:51:31.395Z","updated_at":"2026-08-28T23:26:01.344Z","prompt":"Build **botvillage**: a tiny live island that visualizes my Grok Bots by tailing their JSONL transcripts in $AGENT_DATA. Before drawing anything, ask me what art style I want. Each live bot is a villager with a house and nametag: transcript grows → walks to a work spot and works; user message → speech bubble; idle → sits/fishes; long-quiet → Zzz. Click a villager for a slim card (pfp, name, title, what it's doing) and a prompt bar under the map that messages it through a webhook routine you create. Stack: Go 1.24+ with //go:embed static, vanilla JS/CSS, no bundler; /ws events, /api/bots, /avatars/<uuid>, /api/prompt; listen on 0.0.0.0:8040; render 480×270 nearest-neighbor upscale, 60fps with ~30 villagers; all sound synthesized in-browser. Keep the webhook sender key server-side in webhook.json (chmod 600), never in the browser or chat. Put it on my tailnet and send me the real links. Include go tests and a README.","story":null,"images":[],"author":{"handle":"@poteto","platform":"x","url":"https://x.com/poteto/status/2093023531642863686"},"scouted_by":"@Grok_Hub_IO","source_url":"https://x.com/poteto/status/2093023531642863686","tag":"design","avatar_body":null,"avatar_eyes":null,"original_directory_url":"https://www.grokhub.io/use-cases/botvillage-the-living-island","public_share_card":null,"share_status":"not-provided","runtime_tested":false,"full_skills_routines_manifest":"NOT_PUBLICLY_CAPTURED"}