Hermes Playground 🌐
The agent MMO. A browser 3D world where you walk around, talk to Hermes Agent NPCs, run quests, level up, and meet other builders. Built for the Nous Research × Kimi hackathon 2026.
╔═══════════════════════════════════════════════╗
║ H E R M E S P L A Y G R O U N D ║
║ ║
║ walk · quest · learn · build · play ║
╚═══════════════════════════════════════════════╝
Pitch
Docs are boring. Agents are abstract. Communities need shared space.
So Hermes turns onboarding into a multiplayer RPG world. You don't read about Hermes Agent — you play it. Five worlds, six enterable buildings, a town full of NPCs that explain memory/tools/routing through quests, and presence multiplayer so other builders are walking around the same Agora as you.
Try it
git clone https://github.com/outsourc-e/hermes-workspace
cd hermes-workspace
pnpm install
pnpm dev
# open http://localhost:3001/playground in two browser tabs
For real cross-device multiplayer (no setup, hosted hub):
# Just run pnpm dev. The .env already wires VITE_PLAYGROUND_WS_URL to a
# Cloudflare Worker + Durable Object hub at:
# wss://hermes-playground-ws.myaurora-agi.workers.dev/playground
# Open /playground in two devices on different networks — they'll meet there.
pnpm dev
Want your own hub?
cd playground-ws-worker
pnpm install
pnpm wrangler login
pnpm deploy # → wss://hermes-playground-ws.<your-subdomain>.workers.dev
# Then set VITE_PLAYGROUND_WS_URL + VITE_PLAYGROUND_STATS_URL in .env.production.
Local sidecar (no cloud):
# terminal A
pnpm playground:ws # ws://localhost:8787
# terminal B
VITE_PLAYGROUND_WS_URL=ws://localhost:8787 pnpm dev
Demo flow (60 seconds)
- Land on title, enter a builder name, tweak the avatar, then enter the Training Grounds.
- Walk to Athena, accept the Hermes Sigil, then open the kit and equip the Training Blade + Novice Cloak.
- Send one local chat message, then visit the Archive Podium to explain docs, memory, and iteration recall.
- Follow the quest tracker to the Forge Gate, ask Athena or Pan to build something, and trigger the tutorial-complete celebration.
- Step through the unlocked Forge Gate, show the short "Generating world..." payoff, then arrive in the Forge with ambient audio live.
- Attack the rogue model with Strike / Dash / Bolt and briefly show the low-HP pulse if you let it hit back.
- Open a second tab or device to show multiplayer presence, nearby builders, remote nameplate ping, and live chat.
Hackathon Submission
Hermes Playground turns agent onboarding into a social RPG loop. Instead of reading a wall of docs, builders walk a shared world, meet Hermes-themed NPCs, learn movement, gear, chat, memory, and build rituals, then step through the Forge Gate into a live multiplayer builder realm. It frames Hermes Workspace as a place you inhabit, not just a tool you open.
30-60 second demo script
- "This is Hermes Playground, our multiplayer onboarding RPG for the Nous Research × Kimi hackathon."
- "A new builder starts in the Training Grounds, learns the five-step loop, and gets guided by Athena, Iris, and Pan."
- "The quest tracker, journal, gear, chat, and docs/memory beats all map to real Hermes builder habits."
- "When the last tutorial step lands, the Forge Gate unlocks and we generate a world-intro line through the NPC route."
- "Now we’re in the Forge, where prompts become tools, combat becomes benchmark play, and other builders can meet you live in-zone."
Tweet draft
Hermes Playground turns AI-agent onboarding into a multiplayer RPG: move, gear up, chat, learn docs + memory, then unlock the Forge and build live with friends nearby. Built for the @NousResearch × @Kimi_Moonshot hackathon. #HermesWorkspace #AIAgents
What to capture
- Title screen with personalized builder greeting, avatar customizer, and enter flow.
- Training Grounds with quest tracker, objective arrow, inventory/equip panel, and archive briefing modal.
- Tutorial-complete celebration modal followed by the Forge Gate unlocking with glow/particles.
- "Generating world..." overlay and first arrival in the Forge with ambient audio/combat visible.
- Two-player multiplayer moment showing nearby builders chip, live chat, and a remote nameplate ping.
What's inside
| Worlds | Agora, Forge, Grove, Oracle Temple, Benchmark Arena |
| Enterable buildings | Tavern, Bank, Smithy, Inn, Apothecary, Guild Hall |
| NPCs | Athena, Apollo, Iris, Nike, Pan, Chronos, Hermes, Artemis, Eros + 5 Agora keepers (Dorian, Leonidas, Midas, Cassia, Selene, Hestia) |
| Skills | Promptcraft, Worldsmithing, Summoning, Engineering, Oracle, Diplomacy |
| Items | 10+ collectible quest artifacts |
| Quests | Multi-chapter campaign through every world |
| Multiplayer | BroadcastChannel (same-machine) + WebSocket (any-device) via Cloudflare Worker + Durable Object hub. World-scoped fan-out, server-pushed live counts, 5 Hz presence with skip-when-still, token-bucket rate limit. |
| LLM dialog | Free-form chat with each NPC — type into the dialog box, gets persona-wrapped LLM reply via /api/playground-npc. Falls back gracefully if the gateway is offline. |
Controls
| Action | Input |
|---|---|
| Walk | Click ground · WASD |
| Talk | Click NPC · E |
| Camera | Arrow keys / [ ] zoom |
| Sprint | Shift |
| Skills | 1–6 |
| Journal | J |
| World Map | M |
| Chat focus | T |
Architecture
/playground (route)
├── playground-screen.tsx orchestrator + HUD wiring
├── playground-world-3d.tsx R3F scene, NPC/Bot/Remote players, interiors
├── playground-environment.tsx reusable scenery/landmark primitives
├── playground-hud.tsx stat orbs (RuneScape style)
├── playground-sidepanel.tsx right rail tabs (inv/skills/quests/worlds/settings)
├── playground-actionbar.tsx skill hotbar
├── playground-chat.tsx chat dock
├── playground-dialog.tsx branching NPC dialog cards
├── playground-journal.tsx quest journal
├── playground-map.tsx full-screen world map modal
├── playground-minimap.tsx radar
└── hooks/
└── use-playground-multiplayer.ts BroadcastChannel + WebSocket transport
scripts/playground-ws.mjs tiny WS relay (run with `pnpm playground:ws`)
Stack: TanStack Start + React Three Fiber + Drei + Three.js, ws (Node), BroadcastChannel API.
No external 3D assets — everything is procedurally drawn from primitives so the entire 3D world ships in <250 KB and runs on any laptop.
Stylized > photoreal
We chose stylized indie 3D over photoreal AAA. Reasoning:
- Browser. Single-developer. Hackathon clock.
- Anyone can join from any device, instantly.
- "Genshin-lite for agents" reads as intentional, not unfinished.
- Future work: Ready Player Me avatars + Mixamo animations + r3f-postprocessing for the next-tier visual jump.
Multiplayer
Two transports run in parallel inside one client hook:
- BroadcastChannel — same-origin tabs find each other instantly with zero server.
- WebSocket — tiny stateless relay (
scripts/playground-ws.mjs) for cross-device. Same wire format.
Wire schema (mirrors what a future Colyseus / Durable Object server will use):
type PresenceWire = { kind: 'presence'; id; name; color; world; interior; x; y; z; yaw; ts }
type ChatWire = { kind: 'chat'; id; name; color; world; text; ts }
type LeaveWire = { kind: 'leave'; id }
Deploy options for the WS relay are listed in memory/goals/2026-05-03-playground-mmorpg/multiplayer-deploy.md (Fly.io / Render / Railway).
Roadmap
- Free-roam click-to-walk world
- 5 worlds + 6 enterable buildings
- 14+ NPCs with branching dialog and quest hooks
- Stat orbs, side panel tabs, quest tracker
- Multiplayer presence MVP (BroadcastChannel + WS)
- Animated title screen + onboarding card
- Public WS deploy (Fly.io / Render)
- Ready Player Me avatar integration
- Mixamo animation pipeline
- Voice via LiveKit per zone
- Server-authoritative combat
- Per-world WS room sharding
Credits
- Built on Hermes Workspace and Hermes Agent.
- Inspired by RuneScape, PlayROHAN, Lost Ark, and Skyrim. No assets copied — everything is original primitives + Hermes Greek-mythology theming.
- Hackathon: Nous Research × Kimi 2026.
License
MIT. Same as Hermes Workspace.