How simonepelosi/vibez works
vibez is a keyboard-driven terminal Apple Music player. The main workflow runs from the user through the CLI into the TUI, which searches and browses through a provider, then controls playback through a pluggable player. Apple Music supplies catalog and library data; playback may use Chrome/Widevine for full tracks or platform audio and preview backends. The README also documents vibe, discovery, and radio queue generation, lyrics, Last.fm scrobbling, MPRIS, themes, and equalizer support. Unsampled subsystem wiring is shown only where documented; several paths identify the enclosing source directory.
Main entry points: model.go Terminal UI · player.go Player interface · root.go CLI commands · provider.go Provider interface
Components 23
CLI and interface
- CLI commands
cmd/root.go - Terminal UI
internal/tui/model.go - TUI panels
internal/tui/views - Settings
internal/config/config.go - Themes and EQ
internal/tui
Music sources
- Provider interface
internal/provider/provider.go - Apple Music
internal/provider/apple/apple.go - MusicKit auth
internal/auth
Playback
- Player interface
internal/player/player.go - Chrome playback
internal/player/cdp/player.go - Chrome setup
internal/player/cdp/browser.go - Preview backends
internal/player/webkit/player.go - Local audio
internal/player/local/player_darwin.go
Discovery and queue
- Queue controls
internal/tui/model.go - Vibe engine
internal/vibe/agent.go - Lyrics lookup
internal/lyrics/lrclib.go
System integrations
- Last.fm client
internal/lastfm/client.go - MPRIS bridge
internal/player/mpris/server.go
Other components
- Listener
- Apple Music API
- Chrome / Widevine
- Last.fm API
- Desktop D-Bus
Connections 26
- Listener → CLI commands: runs commands
- CLI commands → Terminal UI: starts UI
- CLI commands → MusicKit auth: manages login
- CLI commands → Settings: loads settings
- Terminal UI → Settings: reads settings
- Terminal UI → TUI panels: renders panels
- Terminal UI → Provider interface: searches and browses
- Provider interface → Apple Music: implemented by
- Apple Music → Apple Music API: requests catalog
- MusicKit auth → Apple Music API: authenticates
- Terminal UI → Player interface: controls playback
- Player interface → Chrome playback: backend
- Chrome playback → Chrome setup: prepares browser
- Chrome setup → Chrome / Widevine: launches with DRM
- Player interface → Preview backends: preview backend
- Player interface → Local audio: local-file backend
- Terminal UI → Queue controls: manages queue
- Queue controls → Provider interface: fetches candidates
- Terminal UI → Vibe engine: parses vibe input
- Terminal UI → Lyrics lookup: looks up lyrics
- Terminal UI → Last.fm client: scrobbles listening
- Last.fm client → Last.fm API: sends signed requests
- Player interface → MPRIS bridge: publishes playback state
- MPRIS bridge → Desktop D-Bus: exports controls
- Desktop D-Bus → MPRIS bridge: dispatches media actions
- Terminal UI → Themes and EQ: provides theme and EQ panels