A retro arcade for your terminal — pure Python, zero dependencies, curses-based. Six fully playable games and three ambient companions share one launcher: Bookshelf, Wonder, and Polyglot, with 70 language pairs for learning while you work. Drop-in Claude Code and Codex hooks can surface a curated book quote, a daily wonder, or a language phrase every Nth tool call — configurable cadence (5 / 10 / 20) so the wisdom lands without breaking your flow.
python3 -m bookshelf.skill.cadence 10 # one quote per 10 tool callsTopics: python · terminal · curses · arcade · retro-games · games · cli · claude-code · codex · bookshelf · polyglot · language-learning · ascii-art · chiptune
A large-sprite terminal space shooter with a full-size ship, asteroid obstacles, enemy craft, carrier bosses, punchier blast/impact effects, CC0 sci-fi SFX, campaign stages, and endless survival.
An original large-sprite 16-bit terminal fighter with selectable warriors, CPU pressure, best-of-three rounds, jumps, crouches, throws, sweeps, blocking, meter, specials, and finishers.
python3 -m kombat_game # or: terminal-kombatAn endless runner with 10 selectable dinosaurs, 3 rotating biomes, a charge-based roar mechanic, and retro audio.
Classic Nokia snake for your terminal. Wall collisions, speed progression, and bonus food.
Classic endless block stacking with standard wall kicks, one next-piece preview, and level-based speed-up.
Play White against a built-in rule-based engine on a full-screen pixel-art board with easy, medium, and hard difficulty levels.
A terminal book discovery app with 983 books across eight genres: fiction, history, motivation, philosophy, psychology, romance, science, and startup. Browse, search, collect favorites, and explore quotes.
The ambient hook surfaces a curated quote every Nth tool call — inline in your Claude Code or Codex session:
Pick a mood — funny, heartwarming, weird, or inspiring — and pull one fresh fact or story from the internet for the day. Caches the day's pick so re-opens are instant, falls back to a bundled curated set when offline. Doubles as a Claude Code + Codex ambient hook (once daily by default).
python3 -m wonder # or: wonderPick one of 70 language pairs and Polyglot installs a Claude Code + Codex hook that surfaces a phrase from that pair every Nth tool call — at least 250 items per pair (more than 18,000 total). Switching pairs never re-edits settings.json; only the active-pair config flips.
python3 -m polyglot # or: polyglot — opens the 70-pair cabinet
python3 -m polyglot.skill.installer status # see what's installed and which pair is active
python3 -m polyglot.skill.cadence 10 --both # one phrase per 10 events on both Claude and Codex- Python 3.10+
- macOS or Linux with a curses-capable terminal
- macOS for audio playback (optional — game works without sound)
- Windows is not currently supported.
git clone https://github.com/Amal-David/terminal-arcade.git
cd terminal-arcade
pip install -e .Newer Pythons (e.g. Homebrew's python@3.13 / python@3.14) refuse a bare pip install to protect the system install. Either use pipx, a venv, or pass --user --break-system-packages:
# Option A — pipx (recommended; isolates the install)
brew install pipx
pipx install -e .
# Option B — venv
python3 -m venv .venv && source .venv/bin/activate
pip install -e .
# Option C — user install with the override
pip install --user --break-system-packages -e .pip writes the launchers (arcade, dino-run, snake-game, tetris, chess-game, star-blast, terminal-kombat, bookshelf, wonder, polyglot) into Python's user-script directory, which is not on PATH by default on macOS. Add it permanently:
# macOS / Linux — add to ~/.zshrc (or ~/.bashrc) and reload your shell
echo 'export PATH="$(python3 -m site --user-base)/bin:$PATH"' >> ~/.zshrc
source ~/.zshrcUser script directories:
| OS | Script directory |
|---|---|
| macOS | $(python3 -m site --user-base)/bin |
| Linux | $(python3 -m site --user-base)/bin |
Prefer not to touch PATH? Run the modules directly instead — this always works after pip install -e .:
python3 -m terminal_arcade # full launcher (or: arcade)
python3 -m dino_game
python3 -m snake_game
python3 -m tetris_game
python3 -m chess_game
python3 -m star_blast
python3 -m kombat_game
python3 -m bookshelf
python3 -m wonder
python3 -m polyglotThe module form (python3 -m ...) always works after pip install -e .. The short script names (arcade, dino-run, etc.) only work if the user script directory is on your PATH — see the install notes above if command not found.
# Full arcade launcher (recommended — always works)
python3 -m terminal_arcade
# or, if user scripts are on PATH: arcade
# Direct shortcuts
# Dino Run
python3 -m dino_game # or: dino-run
# Snake
python3 -m snake_game # or: snake-game
# Tetris
python3 -m tetris_game # or: tetris
# Chess
python3 -m chess_game # or: chess-game
# Star Blast
python3 -m star_blast # or: star-blast
# Terminal Kombat
python3 -m kombat_game # or: terminal-kombat
# The Bookshelf
python3 -m bookshelf # or: bookshelf
# Wonder
python3 -m wonder # or: wonder
# Polyglot
python3 -m polyglot # or: polyglotpython3 -m unittest discover -s tests -v








