Spotify from your terminal

A full-featured Spotify CLI with 30+ commands. Play music, manage queues, discover tracks — and CI rejects your code if you weren't listening to music when you wrote it.

Playback Control

Play, pause, skip, volume, shuffle, repeat. Full control over Spotify without leaving the terminal.

Discovery

AI-friendly search, mood queues, and autopilot presets (chill, flow, hype, focus, party, upbeat, melancholy, ambient, workout, sleep) powered by your listening history.

Queue Management

Add tracks, view upcoming songs, and auto-fill your queue using Spotify's recommendation engine.

Interactive Player

A visual TUI player with progress bar, album art, and keyboard controls. Like Spotify, but in your terminal.

Daemon Mode

Background playback with spotifyd, macOS media key integration, and Control Center sync via nowplaying.

Vibe Check CI

Every commit must include the song you were listening to. CI enforces it. No music, no merge.

# Install globally
composer global require the-shit/music

# Set up Spotify credentials
spotify setup

# Authenticate
spotify login

# Play something
spotify play "Killing In the Name"

# See what's playing
spotify current

# Launch interactive player
spotify player

What is this?

This is the-shit/music — a Spotify CLI built on Laravel Zero. It controls your music from the terminal — play, pause, skip, queue, discover, the whole thing.

But here's the thing: every commit must include the Spotify track you were listening to when you wrote the code.

A git hook auto-injects the currently playing song into your commit message. CI runs a vibe check on every push. No track URL? Rejected. No exceptions. Merge commits get a pass because even we aren't that unhinged.

The result is the vibes page — a living soundtrack of the entire codebase, auto-generated after every commit. You're looking at every song that was playing when every line of code was written.

🎵
Pre-commit hook reads Spotify API, injects track into commit message
🚨
Vibe Check CI scans every commit for a Spotify URL. No music, no merge.
💻
DJ Hook blocks your AI coding assistant from running commands if Spotify isn't playing
♻️
Vibes page regenerates automatically on every push to master