Games·terminal·GPL-2.0-or-later
claude-doom
The original Doom engine and Freedoom, playable in a Claude Code pane with /doom.

claude-doom plays Doom in a pane inside Claude Code. It runs doomgeneric, a port of the original Doom source code, with the free game data of Freedoom Phase 1, so no commercial Doom files are involved. Nothing goes to the model: playing costs zero tokens. It is an alpha (0.1.0-alpha.2) for Apple Silicon Macs only.

What it does
- The real engine. doomgeneric is built from the original Doom source, and the levels, monsters and art come from Freedoom Phase 1 0.13.0, a freely licensed replacement for the game’s data.
- Keyboard play. Click the strip below the game to give it the keyboard. W and S move, A and D turn, Q and E strafe, Space fires, F opens doors, 1 to 7 pick a weapon, M opens the menu, Tab shows the automap and P pauses. Esc hands the keyboard back to Claude.
- Pane controls. Pause, Restart game and Close game buttons, also available as
/doom pause,/doom restartand/doom close. Restart begins episode 1, map 1, on medium difficulty.
For multiplayer, intermission runs Doom deathmatch through Odamex while Claude works.
Install
Needs Claude Code 2.1.287 or later, plus a Mac with Apple Silicon on macOS 14 or later, Node.js 22 or later, and a terminal with true color and mouse reporting, ideally at least 110 columns by 50 rows.
claude plugin marketplace add ChaseWNorton/claude-doom
claude plugin install doom@faros-labs
The plugin installs as doom. Its marketplace entry points to the prebuilt Apple Silicon release ZIP, so nothing is compiled on your machine. The author runs Claude Code with the fullscreen renderer on, which is what lets the pane receive clicks:
CLAUDE_CODE_NO_FLICKER=1 claude
Run /doom, then click the keyboard strip below the game.
The README’s Play the alpha section also offers a standalone ZIP. Its launcher, scripts/play.sh, checks the engine’s checksum and runs Claude Code 2.1.278, the version the author tested, installing it into the extracted folder if it is missing.
How it works
/doom starts a small Node bridge from the plugin folder. The bridge launches the compiled engine, reads its 320×200 framebuffer through a pipe and converts it to half-block terminal pixels. The mod asks the bridge for a frame every 50 ms, so the picture tops out at 20 frames a second, and redraws only when the frame has changed. Your key presses travel back to the engine the same way.
The bridge listens only on 127.0.0.1, on a random port, behind a random token per game, and the mod refuses any other address. That local traffic is the only thing its network calls reach. Nothing is downloaded while you play: the engine and the Freedoom data arrive inside the release ZIP, fetched from the repo’s GitHub releases when you install. Game frames never enter the conversation, and the mod hooks no prompts or tool calls.
Closing the pane or ending the session stops the engine. A bridge left without a client exits after 60 seconds.
Limitations
- Apple Silicon Macs only. The release has no Intel Mac, Linux or Windows build.
- The author tested it only on Claude Code 2.1.278 and warns that other versions may need adapter changes.
- No sound, and saves and settings are deleted when the game closes.
- Key repeat stands in for held keys, so movement is less precise than in a game window.
- Terminal only. In the Desktop app’s Code tab the pane shows just a note asking you to run
/doomin the terminal. - Doom is id Software’s. The author states this is an independent experiment, not an official Anthropic, id Software or Freedoom product.
More mods
The whole directory →Bugdex
Failing tests become wild bugs. Fixes earn XP, regression tests catch them.
cc-arcade
Nine games and a pet above the prompt, playable while Claude works. Zero tokens.
cc-dino
The offline T-rex above the prompt: jump cacti while Claude works, with a leaderboard.
cc-pokedex
Creatures spawn from your prompts. Catch them and raise a partner as Claude works.



