Skip to content

jaychempan/coding-with-beat

Repository files navigation

Coding With Beat

Python Platform Claude Code MCP Apple Music Version License Website

When was the last time you sang and danced while vibecoding?(上次 vibecoding 时又唱又跳是什么时候?)

Right. You can't remember.(对,你已经不记得了。)

A pixel-art DJ companion that lives inside Claude Code. It plays music, shows lyrics, celebrates when you commit, and panics with you when tests fail.

中文文档日本語


Features

  • MCP server — 21 tools so you can tell Claude "play some lofi", "skip this", "what's playing" and it just works.
  • Music sources — Apple Music (AppleScript, no GUI needed), local files (afplay), QQ Music (search + preview).
  • Pixel UI — Album art in half-block ANSI, GameBoy retro border, pseudo-spectrum equalizer.
  • DJ Buddy — A headphones-wearing pixel character that reacts to your coding state. Tests failing? It panics with you.
  • Vibe engine — CC hooks track what you're doing in real time and shift the mood. git commit? Victory pose. Tests explode? Panic mode.
  • Statusline — One line: face + current track + progress bar.
  • Focus mode — Built-in 25/5 Pomodoro timer shown in the statusline.

Installation

curl -LsSf https://raw.githubusercontent.com/jaychempan/coding-with-beat/main/bootstrap.sh | sh

Or manually:

git clone https://github.com/jaychempan/coding-with-beat.git
cd coding-with-beat
./install.sh

The installer configures Claude Code to use the HTTP MCP endpoint at http://127.0.0.1:8765/mcp, saves that URL to ~/.coding-with-beat/mcp-url, and on macOS starts a user LaunchAgent for the local MCP server. For debugging, you can run it by hand:

cwb server --host 127.0.0.1 --port 8765 --path /mcp

Open a new shell and a new Claude Code session. When (•_•) appears in the statusline, you're good.


Usage

Just talk to Claude

play some lofi
skip this track
what's playing
pause

/cwb command

/cwb play 周杰伦          # search and play
/cwb play lofi beats
/cwb next
/cwb pause
/cwb np                   # now playing
/cwb like
/cwb volume 70
/cwb watch                # live player (q to quit)
/cwb karaoke              # full-screen karaoke (q to quit)
/cwb lyrics               # lyrics window
/cwb bar auto             # statusline: auto / show / hide

Chinese works too — 下一首, 暂停, 在放什么, 收藏 are all valid.

watch / karaoke shortcuts

Key Action
Space Play / pause
n Next
p Previous
l Like
q Quit

Statusline

Once installed, a statusline appears at the bottom of Claude Code:

(•_•) ⚡  ▶ 雨爱 — 杨丞琳  ██████░░░░░░░░  [build]  ▃▆█▆▃  │ ♪ 不忍揭曉的劇情
Element Example Description
DJ face (•_•) (^_^) (T_T) Buddy's mood, shifts with coding events
Activity / · / (none) = tool call in last 15 s; · = last 90 s
Play icon / / ❚❚ Blinks while playing; ❚❚ when paused
Track 雨爱 — 杨丞琳 ██████░░░░░░░░ Title + artist + progress bar
Vibe [build] [focus] etc. Current coding vibe
Pomodoro 🍅 work 24:15 Only shown when focus mode is active
Beat wave ▁▂▃▄▅ Rises and falls each beat; dims when paused
Lyrics │ ♪ lyrics here Current LRC lyric

SSH Remote Claude Code

If Claude Code runs on a server while Apple Music runs on your local Mac, run the streamable HTTP MCP server on the Mac and reach it from the server through SSH reverse port forwarding:

# Local Mac: install and start the HTTP MCP LaunchAgent
./install.sh

# Local Mac: expose it to the server's 127.0.0.1:8765
ssh -N -R 127.0.0.1:8765:127.0.0.1:8765 user@server

# Server: install hooks/statusline and point them at the forwarded endpoint
./install.sh --mcp-url http://127.0.0.1:8765/mcp

The remote Claude Code session, /cwb, statusline, hooks, and cwb CLI all use the same HTTP MCP URL. As long as the SSH tunnel is up, commands like cwb play, cwb np, cwb next, cwb player, and cwb karaoke control the Mac-side music client.


CLI

cwb play [query]        # search and play, or resume
cwb pause               # pause
cwb next                # next track
cwb prev                # previous track
cwb np                  # now playing
cwb like                # like current track
cwb volume <0-100>      # set volume
cwb seek <t>            # seek: seconds (90) or mm:ss (1:30)
cwb mode <mode>         # shuffle | sequential | repeat | repeat_one
cwb player              # full pixel player
cwb watch               # live TUI (q to quit)
cwb karaoke             # full-screen karaoke (q to quit)
cwb lyrics              # lyrics window
cwb history [n]         # last n played tracks
cwb bar <show|hide|auto> # statusline visibility
cwb status              # current state
cwb server              # MCP streamable HTTP server

Music sources

Feature Apple Music Local files QQ Music
Now playing info ⚠ preview only
Play / pause
Next / prev
Seek ⚠ restart-based ⚠ preview only
Volume ⚠ coarse steps
Like / favorite
Cover art
Full playback ✓ subscription req. ✗ 30 s preview
Play modes

QQ Music has no official API. Search metadata comes from public endpoints; audio is played as 30-second preview clips via afplay. Full tracks require the QQ Music desktop app.


Uninstall

./uninstall.sh           # remove config, commands, PATH
./uninstall.sh --purge   # same + delete ~/.coding-with-beat/

License

MIT License — see LICENSE for details.

About

🎵(编程伴奏:Vibecoding 唱跳版) When was the last time you sang and danced while coding? A retro pixel DJ for Claude Code — plays music, shows synced lyrics, and 😱 panics when your tests fail. ongoing CodeX, Gemini, DeepSeek-TUI ... (https://codebeat.top/)

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors