cd /news/developer-tools/show-hn-claude-code-arcade Β· home β€Ί topics β€Ί developer-tools β€Ί article
[ARTICLE Β· art-117061] src=github.com β†— pub= topic=developer-tools verified=true sentiment=Β· neutral

Show HN: Claude Code Arcade

Developer jystervinou released Claude Code Arcade, a tool that runs animated 80s-style arcade games such as Ms. Pac-Man and Frogger in the Claude Code status line, driven by Claude's activity. The tool, available via a GitHub repository, requires Node and macOS or Linux, and can be installed with a single command that writes to user directories and settings. It supports multiple themes, per-window sessions, and optional joystick control, with commands to start, stop, and customize games.

read6 min views1 publishedAug 31, 2026
Show HN: Claude Code Arcade
Image: Michielbdejong (auto-discovered)

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.

── more in #developer-tools 4 stories Β· sorted by recency
── more on @jystervinou 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain β€” perfect for shipping the agent you just read about.

$git push zahid main
β†’ Live at https://your-agent.zahid.host βœ“
Get free account β†’ Pricing
from €0/mo Β· no card required
LIVE [news/show-hn-claude-code-…] indexed:0 read:6min 2026-08-31 Β· β€”