Vibe code with an 80s arcade vibe.
An arcade running in your Claude Code status line, animated by whatever Claude is doing. It works, the arcade plays.
Ms. Pac-Man. Frogger. Or an aquarium and a safari, if you want something calmer. They play themselves β grab the joystick if you want, but you don't have to.
Every window is its own cabinet: its own game, its own creatures, its own score, played by whatever Claude is doing in that session.
Or WOPR, from WarGames, which types its way through the film while Claude works: the logon, the list of games, and a game of Global Thermonuclear War.
Twenty seconds of the attract reel, playing itself while Claude is idle. Still Β· MP4.
Paste this into Claude Code (the !
runs it as a shell command) or into any
terminal without the !
:
!git clone https://github.com/jystervinou/claude-code-arcade.git ~/.claude-code-arcade && bash ~/.claude-code-arcade/install.sh
Then fully quit your terminal app (βQ) and reopen it β terminals cache glyph lookups per process, so a new tab won't pick the sprite font up.
Needs Node (any recent version) and macOS or Linux. Nothing system-wide, no
sudo: it writes ~/.arcade/
, ~/.local/bin/arcade
, one font file in your user
font dir, and the statusLine
key in ~/.claude/settings.json
β backing up whatever was there. Undo it all with one command.
It checks all of those first and stops to ask if anything already there isn't
its own β an existing ~/.arcade
, another arcade
on your PATH, a statusline you're already using.
A new window doesn't start a game. It waits, the way a cabinet waits, and tells you how to put a coin in:
INSERT COIN Β· type !arcade start a1b2c3 at this prompt
That id belongs to the window showing it, so there's never a question of which
one you mean, and the !
runs it without leaving Claude Code.
arcade start put a coin in (the id is in the status line)
arcade stop game over
arcade reset start this window's game over (WOPR restarts the film)
arcade theme mspacman Ms. Pac-Man
arcade theme frogger Frogger
arcade theme wopr W.O.P.R., typing its way through WarGames
arcade theme aquarium ππ π‘π¦π¦π¦πͺΌ / π¦ππ³π¬ππ¦π’π¦π
arcade theme safari ππ¦©ππ¦π¦π¦‘π¦
/ ππ¦π¦π¦ππ¦ππ¦ππͺ
arcade demo on keep playing while Claude is idle
arcade play joystick (optional)
arcade off switch the arcade off; arcade on switches it back
arcade status every window: what it plays, what it has scored
Every command takes an optional session id: with one it applies to that window,
with none to all of them. arcade theme wopr
switches every window, arcade theme wopr a1b2c3
switches one. Any unique prefix of an id works.
Those are ordinary shell commands. Run them in any terminal, or straight from
the Claude Code prompt with a !
in front β !arcade theme frogger
runs it in
your session's shell without leaving Claude Code. The one exception is
arcade play
, which takes the keyboard over and so wants a spare terminal pane of its own.
Switch any time β it takes effect live.
She plays herself: laps the maze, eats the dots, runs from ghosts, doubles back
for fruit. Real arcade scoring β each window plays its own credit from zero, and
the best any credit has ever reached is kept as the high score (arcade status
).
arcade off
Stops the daemon and blanks the status line, without uninstalling anything: your theme, your scores and the font all stay where they are, and nothing runs in the background until you say so.
arcade on
Brings it back within a second β the status line starts the daemon again on its
next refresh. arcade status
says which way the switch is set.
Ms. Pac-Man and Frogger can be steered. The catch is that Claude Code owns every keystroke in its own window, so there are two ways in β neither is seamless, and the games are perfectly happy without you:
arcade play # in a SPARE terminal pane: β/β steer, β boost
arcade play global # F1 β, F2 β, F3 boost from any window (macOS)
global
needs a one-time Accessibility grant. If your F-row does brightness and volume β Apple's default β those keys aren't F1/F2/F3 at all, so press fn+F1/F2/F3, or turn on "Use F1, F2, etc. keys as standard function keys". It watches exactly those three keys, can't swallow them, and sends nothing anywhere. Either way she goes back to playing herself ~30s after you stop.
The installer sets this up for you; arcade font remove
drops back to Unicode
glyphs, and mspacman
plays fine either way.
The sprites are an original pixel font, and the trick is where they live:
U+1CC10β1CC16, in Unicode 16's
"Symbols for Legacy Computing Supplement" block (fittingly), which no font
shipped with macOS covers. When the terminal's font has no glyph for a real
codepoint, CoreText searches every installed font β and finds ours. (The
same hijack via Private Use Area codepoints does not work: macOS
deliberately skips PUA in automatic fallback. And overriding Apple Color
Emoji with a patched copy in ~/Library/Fonts
β the macmoji approach β is dead on macOS 26: the system copy always wins the name conflict.)
Each glyph is drawn one square per pixel on a 16Γ16 grid, with color layers baked in β her bow is genuinely red, not tinted.
Works on macOS and Linux. On Windows Terminal, stick to mspacman
or wopr
, neither of which needs a font at all.
A small daemon runs one world per open session and writes each window its own
frame every 200ms; statusline.sh
just prints the one belonging to its session.
Windows are keyed by the session_id
Claude Code passes to the status line, so
two windows of the same size are still two different games. The daemon shuts
itself down two minutes after the last window closes β or the moment you run
arcade off
.
The installer sets this for you:
"statusLine": {
"type": "command",
"command": "~/.arcade/statusline.sh",
"padding": 0,
"refreshInterval": 1
}
bash ~/.claude-code-arcade/uninstall.sh
Puts your old statusline back, removes the CLI and the font, keeps your scores
(add --purge
to drop those too). Then restart your terminal.
An independent hobby project, released under the MIT licence. Not affiliated with, endorsed by, or sponsored by Anthropic; "Claude" and "Claude Code" are Anthropic's trademarks, used here only to say what this plugs into.
The games it imitates belong to other people too β Ms. Pac-Man and Frogger to their respective rights holders, WarGames to its own β and nothing here is affiliated with any of them either. No original assets are used: the sprites are drawn from scratch and the WOPR screens are typed out as homage.