While you wait·terminal · desktop·MIT
subway-surfer
Subway Surfers from headless Chrome, drawn and played in a pane. Videos too.

subway-surfer puts the real Subway Surfers in a pane next to your Claude Code chat. It runs the game’s web version in a headless Chrome, draws each frame in the pane and sends your keys back to the game, so you play it rather than watch it. Give it a video file or URL and it plays that instead.
Subway Surfers is SYBO’s game, and the mod is not affiliated with SYBO. The repository holds no copy of the game: it loads the web version from Poki. For a runner of its own with no browser and no network behind it, see cc-subway.
What it does
/surfopens the pane and starts the game. Click the pane, or pressctrl+xthentab, to give it your keys:aanddchange lanes,wjumps,srolls,estarts a round andqquits. The same controls sit as buttons under the picture.- In the terminal,
vcycles three views: full color (the game’s own pixels), ascii (a picture made of small glyphs) and characters (glyphs in the terminal’s own cells, each with a foreground and a background color). The first two need a terminal with the kitty graphics protocol. If the terminal refuses the picture 45 frames in a row, the pane drops to characters by itself. /surf ascii,/surf blocksor/surf braillechanges the glyphs the frames are drawn with./surf <file or URL>plays a video file or a media URL (mp4, mov, mkv, webm, gif, an m3u8 stream and a few more). Any other URL opens that web page in the same headless Chrome./surf stopends playback and closes the pane.- Three plugin options set the page
/surfopens (Poki’s Subway Surfers by default), the starting glyphs (ascii) and whether the game or video plays sound (on).
Install
Needs Claude Code 2.1.287 or later, plus Node.js 22 or later and Chrome, Chromium, Brave or Edge. Videos also need ffmpeg. The author has tested it only on macOS.
The repository has no marketplace file, so you run it from a clone with --plugin-dir. The README lists no install or build step beyond these two commands:
git clone https://github.com/refact0r/claude-surf
claude --plugin-dir ./claude-surf
Then type /surf.
How it works
/surf starts a separate Node process, the repository’s bin/surf.mjs. It drives the headless Chrome, or ffmpeg for a video, and prints frames that the hooks module draws in the pane. Keys, view changes and the pane’s size go back to that process over a Unix socket in your temp folder. To find Node, the mod asks /usr/bin/which first and then a zsh login shell, so your shell’s startup files may run.
Chrome loads the game from poki.com, so playing needs a connection, and a video URL is read from wherever it points. Chrome keeps a profile with your game progress in ~/Library/Caches/claude-subway-surfer/chrome-profile. Nothing runs while the pane is closed: closing it, /surf stop or ending the session tells the frame process to quit.
The mod handles only its own /surf command. It reads no prompts or tool calls, opens no files except a video you name, and never asks the model anything.
Limitations
- Tested only on macOS. The mod looks for Node through
/usr/bin/whichand/bin/zsh, which a standard Windows setup lacks, so there it stops with a message that no Node.js was found. - Without the kitty graphics protocol, only the characters view works, at the terminal’s cell resolution.
- Off the terminal, for example in the Desktop app’s Code tab, the code draws each frame as an SVG at most 64 columns wide and drops the view switch. The author shows it only in the terminal.
Similar Claude Mods
cc-shorts
Your YouTube Shorts feed in a pane, with sound, while Claude works. macOS only.
claude-pets
A pixel pet in a pane that reacts to your session and levels up as you work.
claude-pokemon
A pixel Pokémon above the prompt that follows Claude's tools, levels up and evolves.
Claude-sama
An unofficial kami mascot who reads above the prompt and reacts to what Claude is doing.
Popular Claude Mods
The whole directory →collision-guard
Asks before Claude edits a file another open chat just changed.
shared-session
Share a session by link: teammates join from their Claude Code and prompt it live.
claude-carbon
Estimated grams of CO2 for each answer and session, with a molecule and warming stripes.
replay-theater
A /replay pane that walks through the last turn's file edits, one diff per step.




