An opencode TUI sidebar plugin that shows what's playing right now. Supports Apple Music, Spotify, and YouTube Music on macOS and Linux.
Now Playing
Daft Punk - Get Lucky
playing on Spotify
Paused:
Now Playing
Daft Punk - Get Lucky
paused on Spotify
Nothing playing:
Now Playing
♪ Not playing
Missing dependency:
Now Playing
⚠ brew install media-control
Paste below into your OpenCode.
Install and configure opencode-now-playing by following the instructions here:
https://raw.githubusercontent.com/stevejkang/opencode-now-playing/refs/heads/main/docs/installation.md
Install the platform dependency:
# macOS
brew install media-control
# Linux
sudo apt install playerctl
# or, if using Homebrew on Linux:
brew install playerctlIf the dependency isn't found, the plugin shows an install prompt instead of playback info.
One config file. Restart. Done.
~/.config/opencode/tui.json
{
"$schema": "https://opencode.ai/tui.json",
"plugin": ["opencode-now-playing"]
}opencode resolves the npm package on startup automatically.
{
"plugin": [["opencode-now-playing", {
"refreshInterval": 5000
}]]
}| Option | Default | Description |
|---|---|---|
refreshInterval |
5000 |
Polling interval in milliseconds (fallback when streaming connection breaks) |
Streams playback state in real-time. Falls back to polling (up to 3 retries) if the connection drops.
- macOS: Calls media-control CLI, which taps into the macOS MediaRemote framework. Any app registered in the system Now Playing center works: Apple Music, Spotify, YouTube Music in a browser, etc.
- Linux: Uses playerctl with
--followmode for real-time MPRIS event streaming. YouTube Music is detected automatically when playing in Chrome, Firefox, or any Chromium-based browser. - Windows: Coming soon.
| What | Why it matters | |
|---|---|---|
| 🎧 | Multi-source | Apple Music, Spotify, YouTube Music, anything in system Now Playing |
| ⚡ | Real-time streaming | No stale data, instant track changes via native event APIs |
| 🔄 | Polling fallback | Connection drops don't kill the widget, retries up to 3 times |
| 🌐 | Browser detection | YouTube Music in Chrome/Firefox just works, no extra setup |
| 🖥 | Cross-platform | macOS and Linux today, Windows next |
- opencode with plugin support (
@opencode-ai/plugin>= 1.4.3) - macOS:
brew install media-control - Linux:
sudo apt install playerctlorbrew install playerctl
Skip npm. Copy the source files directly:
mkdir -p ~/.config/opencode/plugins/opencode-now-playing/backends
cp src/tui.tsx src/types.ts src/format.ts src/backend.ts \
src/detector.ts src/constants.ts \
~/.config/opencode/plugins/opencode-now-playing/
cp src/backends/macos.ts src/backends/linux.ts \
~/.config/opencode/plugins/opencode-now-playing/backends/Register the local path:
{
"plugin": ["./plugins/opencode-now-playing/tui.tsx"]
}git clone https://github.com/stevejkang/opencode-now-playing.git
cd opencode-now-playing
bun installRun tests:
bun testEdit, restart opencode, see changes live.
MIT