A music player for the terminal that keeps playing after you detach.
Playback runs in a background server. Open the interface, pick a track, press q to close it, and reattach from any pane later.
Plays local files and live radio from one shared queue, with a JSON CLI and event stream for scripts and agents.
Installbrew install rath/tap/vtamp120 × 28 cells. Your library and queue, together.
View full resolutionCaptured in Ghostty + tmux · Catppuccin Mocha · Real library, high-resolution album art
Your soundtrack.
Not another window.
We loved the little player that lived on our desktop. These days, we live in a terminal. The music should feel at home here, too.
Album covers come through in high resolution with Sixel or Kitty graphics, automatically detected when you attach. Ghostty + tmux uses Kitty; Sixel in tmux requires support from both tmux and the outer terminal. Color halfblocks keep the artwork visible when pixel graphics aren’t available.
Make it feel like your terminal. Choose from nine color themes, including cozy Catppuccin Mocha, light Latte, Rosé Pine, and the original green Classic. Press t to preview, then Enter to save for your next attachment. Mocha is the default.
$ vtampDrop in.
A server starts if you need one. Your library, queue, and album art are right there.
qStep out.
The interface closes. The server keeps playing. Get your pane back for the work in front of you.
$ vtampPick up.
Attach again from another pane. Same music. Same queue. Exactly where it is now.
One shared queue. As many interfaces as you need.
Listen from another machine.
A server can run without an audio device and send what it plays as an Ogg Opus stream instead. Start it with --headless on the machine that holds the music, a Mac or a Linux box. The queue, the library, and the CLI work as before, and a server that plays through its own speakers can cast as well with --cast.
Listen with mpv or ffmpeg over SSH, open the stream in a player with --cast-http, or start a local vtamp with --remote: it plays the remote server through your speakers and shows its queue in the TUI.
# On the machine with the music, macOS or Linux
vtamp server start --headless
# From any machine with mpv
ssh music-box vtamp cast listen | mpv -
# Or a local vtamp, after forwarding the socket over SSH
vtamp server start --remote /tmp/music-box.sock
Ogg Opus · 48 kHz stereo · 128 kbit/s · Each track start, seek, and resume begins a new logical stream.
Your Mac knows what’s playing.
Reach for the media keys you already know. Play, pause, or skip a track with the player tucked away—even after you detach from tmux.
Your track, artist, and album cover appear in macOS Now Playing. Control Center puts playback within reach, without opening a terminal.
Meet the macOS controlsDepending on your keyboard settings, hold Fn for media keys.
Now playing, in your tmux bar.
Close the player and keep the current track in sight. The optional tmux plugin shows the song title and elapsed / total time, right in your status bar.
Pause and the track stays visible. Stop playback or shut down the server and it disappears. Choose the width, add the artist, and place it wherever you like.
Set up the tmux plugin"work"▶ Training Montage· 0:56 / 3:39Put #{vtamp} in your status format before loading the plugin. No clock or date required.
set -g status-right \
'"#{=21:pane_title}" #{vtamp}'
A spectrum in fourteen styles.
Press v to show a read-only spectrum of what the server is playing, and V to switch between fourteen styles: bars, gradient, mono, mirror, dots, waterfall, radial, fire, ridge, sparks, squares, smooth, trail, and stereo.
Every style takes its colors from your theme. Audio is analyzed only while the spectrum is shown; when playback pauses or stops, it settles and stops redrawing.
See every spectrum styleGood with keys.
Great with commands.
Agents can find tracks, line up what plays next, and edit the queue without interrupting the current song.
Preview a batch edit before applying it. Set a sleep timer and let the server handle the rest.
Explore the agent CLILocal files. A local socket. No account, API key, or cloud in the middle.
vtamp now --jsonSee what’s playing.vtamp library search --artist "DAY6" --jsonFind the right tracks.vtamp sleep set 30mStop in 30 minutes.vtamp cast status --jsonCast format, URL, and listener count.$ vtamp now --json{
"version": 14,
"ok": true,
"data": {
"status": "playing",
"position_ms": 102000,
"remaining_ms": 117000,
"queue_revision": 42
}
}Response excerpt · current track and settings, without the full queue.Press play.
Then get on with it.
Bring a folder of music and a terminal.
vtamp takes care of the rest.
macOS · Homebrew or Rust 1.90+ · local audio files
AAC / ALAC m4a, MP3, FLAC, WAV, Ogg Vorbis


