CLAUDE ARENA
LIVE · this demo is running right now

Your Claude Code sessions,
as a living world.

Every project is a tribe. Every session is an avatar that marches out and works. Every subagent is a drone. Tools become resources to harvest, errors make units stumble, compaction summons a storm. It draws itself — live — from your Claude Code hooks.

6
0
0
↑ that's a real game running. drag to pan · scroll to zoom · swap the skin.

You spin up four agents across three projects. Then you watch text scroll.

Claude Arena turns that firehose into something you actually want to glance at. Leave it open on a second monitor and check on it like a fish tank — except the fish are your own sessions grinding through your real work. It's an ambient, curatable record of where your attention actually went.

Three worlds. One backend.

Same simulation, same data, three completely different ways to look at it. Swap any time — the toggle's right up there in the hero.

RTS skin — top-down bases and harvesting units

RTS

Top-down StarCraft energy. Command centers, hex resource nodes, little visored workers with marching legs, and territory that visibly grows as a project levels up.

Aquarium skin — coral reefs and fish

🐠 Aquarium

A cozy reef tank. Bases are coral, units are fish, tools are anemones, light shafts drift through the water. The leave-it-open-and-feel-calm mode.

Cyber skin — neon grid and glowing nodes

Cyber

Dark grid, neon everything, glowing motion trails, energy conduits pulsing packets between nodes. Engineered to look unfairly good in a screenshot.

Every hook becomes a move.

The whole thing is a state machine fed by Claude Code's hook events. Nothing scripted, nothing faked — your actual workflow choreographs the world.

SessionStarta worker awakens — spawns from the base in a burst
UserPromptSubmitthat worker perks up with a ! — new orders
PreToolUse · Bashmarches to the gas geyser to run commands
PreToolUse · Edit/Writeharvests mineral crystals — building things
PreToolUse · Read/Grepheads to the watchtower to scout
PreToolUse · Taskspawns a drone that fans out — your subagent
PostToolUsehauls the resource home, +1, stockpile grows
PostToolUse · errorthe unit stumbles in a puff of red
SubagentStopa drone zooms back to base and merges
Stopthe worker heads home and takes a nap (z)
SessionEndit salutes and walks back in — but its work counts forever
PreCompacta memory storm swirls units around the base

It grows. That's the point.

This isn't a dashboard that resets when you blink. The server keeps lifetime stats per tribe — tools harvested, sessions ever run, subagents deployed — and each tribe levels up. Higher level means bigger territory, more outlying buildings, taller coral, a longer neon perimeter.

Leave it running a week and your busiest repo becomes a sprawling capital while that thing you touched twice stays a humble outpost.

Curate your tribes.

Click any base. Rename it, give it a motto, pick its color and one of twelve procedural crests. async-armada becomes Async Armada, Breaker of Builds and stays that way. Build your little lore. Nobody's stopping you.

Names default from your folder, prettified — my-cool-app → "My Cool App".

How it actually works.

A hook drops a line in a file, a tiny local server reads the file, your browser draws a world. That's the whole trick. Zero dependencies — Node built-ins and a canvas.

Claude Code  ──fires a hook on every event──▶  arena-hook.sh
                                            (tiny, fast, never blocks Claude)
                                                     │ appends one line
                                                     ▼
                                        ~/.claude/claude-arena/events.ndjson
                                                     │ tailed + normalized
                                                     ▼
   server.js  ──static UI + live SSE stream──▶  your browser
   (lifetime tribe stats)                   (one sim · three skins · all canvas)

🔒 Private by construction

The server binds to 127.0.0.1 only. The browser is told that something happened — event type, project name, tool name — but never what. Your prompt text and tool output never leave the server. Nothing is sent anywhere; there's no analytics. The arena genuinely doesn't need to know what you're working on to draw a fish.

Install in 30 seconds.

Node 18+. No npm install, no build step, no account. It backs up your settings before touching anything.

# 1. wire the capture hook into Claude Code (backs up settings first)
node install.js

# 2. start the arena
node server.js

# 3. open it
open http://localhost:4787

Then go use Claude Code like you normally would. The world fills itself in.