Pokébus — the whole workspace rides one bus

Pokébus — one bus, one map, the whole room
Pokébus — one bus, one map, the whole room

August 2026 · from the workshop

Slack · Cloudflare Workers · a game the whole room plays at once

Most chat games are solo toys you play next to other people. Pokébus is one bus, one map, one shared journey: the entire workspace boards together, votes on where to go next, and rides through Kanto as a group.

Nobody is driving unless somebody drives. The bus sits parked until a human starts boarding, which opens a five-minute all-aboard window and pings the room. Then it departs for whichever exit won the vote, travels for a while, and parks somewhere new. Wild encounters only spawn while the wheels are turning, in a channel you opt into, so the game is never shouting at people who just want to work.

Everything happens on one live card that rewrites itself as the journey moves — parked, boarding, traveling, arrived — with the current riders shown as a row of avatars and their lead Pokémon. When the bus parks, a PvP window opens and you can battle whoever rode with you.

Under the hood it’s TypeScript on Cloudflare Workers: Durable Objects hold the journey, battles, trades, raids and spawns; KV holds game state; D1 holds the roster. There’s no server to babysit and no cron job — a single Durable Object is the world, and it wakes itself up when it needs to.

I built it for a reason that isn’t really about Pokémon. A workspace is a room, and rooms need something to do together that isn’t work. The fastest way I know to turn a channel full of strangers into a group is to hand everyone the same rules and a reason to sit at the same table.

Pallet Town, rendered as a pixel scene for a bus stop

Want to ride? The bus runs in my Slack. Join, open #world-map, and hit Get on the bus — if it’s parked, you’re the one who gets to drive.

🎟️ Join the Slack and ride the bus →

How Pokébus works (the full explainer) →