v0.41 · AI DJ

A DJ that actually asks what you want.

Press Ctrl+J and tell it what you are in the mood for. It reads the listening history spotatui already keeps on your machine, searches the catalogue, and queues what it finds. It is a conversation, not a one-shot prompt: it can ask a question before it plays anything, or answer one without queueing at all.

Ctrl+J
you   something like what I have been playing lately, nothing I already own
dj    Let me see what you have been on lately.
      - get_listening_history   30 days, 1397 plays
      - search_tracks           Take Me Back / Kygo, Max McNown  [owned]
dj    Kygo, Avicii and Dean Lewis all month. Six picks around that sound, none already yours.
      - queue_tracks            queued 6 tracks

you   actually more beats, less vocals
dj    Closer to Martin Garrix, or Alan Walker?
How a turn works

Up to four steps per turn.

Each step the model can search the catalogue, read your queue, queue tracks, or simply reply. Words with no tool calls end the turn, which is what an ordinary answer looks like. Every call shows up in the transcript as it runs.

Suggestions the catalogue cannot confidently match are dropped rather than approximated, so an invented track never lands in your queue as a near miss.

Four keys

Everything the DJ does has a key

Ctrl+J Open the DJ

A prompt and a transcript, inside spotatui. Type what you want, press Enter.

Ctrl+T Continuous auto-queue

Tops the queue up as tracks finish, keeping about six ahead. It refills at two, roughly 6 to 8 minutes of runway.

Ctrl+Y Vibe shift

Drops the tracks the DJ queued and changes direction, so a change of mind is audible now instead of six tracks from now.

Ctrl+O Only what you don't own

Rejects anything in your Liked Songs or in a playlist you own. Playlists you merely follow do not count.

Pick its brain

Bring your own model.

The first time you open the DJ it asks which AI to use and which of that AI's models, because the default backend spends a subscription you already pay for and the heaviest model burns through a plan fast. Ctrl+G reopens that picker at any time.

Agent CLI

claude, codex, agy, copilot, opencode, or anything headless. It spends the coding subscription you already pay for, so there is nothing extra to buy.

Needsno API key

Anthropic API

The Messages API directly, with a model id priced per token. Set the key in the environment rather than in plaintext YAML.

NeedsSPOTATUI_DJ_API_KEY

OpenAI-compatible

Any endpoint speaking the OpenAI chat format, which includes local models served by Ollama and LM Studio. Nothing leaves the machine.

Needsa base URL
Or DJ from your editor

The same tools, over MCP.

spotatui ships an MCP server, so Claude Code, Codex, Gemini CLI or any MCP client can read what you have been listening to, search, and queue. It publishes the same tool table the in-app DJ drives, so the two can never drift apart.

The socket binds loopback only, behind a token, and stays off until you set behavior.mcp_enabled: true.

one-line setup
# in Claude Code, Codex, or any plugin-capable agent
/plugin marketplace add LargeModGames/spotatui
/plugin install spotatui@spotatui
✓
Only aggregate names ever reach a model.

The DJ sends artist and track names summarised from the history already stored on your machine. No identifiers, no timestamps, no account details. Point it at a local model through Ollama or LM Studio and nothing leaves the machine at all.

Ships in the prebuilt release binaries: set a backend and press Ctrl+J. Building from source: --features ai-dj,mcp-server