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.
- 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.
curl -LsSf https://raw.githubusercontent.com/jaychempan/coding-with-beat/main/bootstrap.sh | shOr manually:
git clone https://github.com/jaychempan/coding-with-beat.git
cd coding-with-beat
./install.shThe 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 /mcpOpen a new shell and a new Claude Code session. When (•_•) appears in the statusline, you're good.
play some lofi
skip this track
what's playing
pause
/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.
| Key | Action |
|---|---|
Space |
Play / pause |
n |
Next |
p |
Previous |
l |
Like |
q |
Quit |
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 |
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/mcpThe 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.
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
| 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.sh # remove config, commands, PATH
./uninstall.sh --purge # same + delete ~/.coding-with-beat/MIT License — see LICENSE for details.
