Terminal music library player written in C# using Tessera UI framework.
Listen to local MP3s in a fast keyboard-first TUI with playlists, search, timeline seeking, loudness meter, manual queue ordering, and a high-quality album-art visual mode.
- Manual playback queue:
enqueue tracks with
qand play them in chosen order withn(queue is consumed first). - Queue on startup: manual queue is cleared when the app starts.
- Multi-select in Library:
Shift+Up/Downrange-select andCtrl+Spacetoggle-select, then bulk add withaor bulk queue withq. - Visualizer quality upgrade: improved ASCII/detail mapping, higher-quality sampling, and better visual layout balance.
- UI consistency: timeline/audio meter panel sizing is now consistent across Library and Playlists views.
VibeVault currently imports and indexes MP3 files only.
| Capability | MP3 |
|---|---|
| Import from browser | Yes |
| Playback | Yes |
| Metadata read (title/artist/album/year/bpm) | Yes |
| Embedded cover art visual mode | Yes (if cover exists) |
| Dependency | Required | Purpose |
|---|---|---|
| .NET SDK 10.0+ | Yes | Build and run app |
| Docker (optional) | No | Reproducible release builds without local .NET install |
| Tessera | Yes | TUI framework |
| Microsoft.Data.Sqlite | Yes | Persistent library/playlists |
| TagLibSharp | Yes | MP3 metadata parsing |
ffplay / mpv / mpg123 / vlc |
Yes | Audio backend (auto-detected) |
ffmpeg or avconv |
Optional | Loudness analysis and embedded cover extraction |
| OS | Architectures |
|---|---|
| Linux | x64, arm64 |
| macOS | x64, arm64 |
| Windows | x64, arm64 |
Check out Tessera: https://georgetsouvaltzis.github.io/tessera/
curl -fsSL https://raw.githubusercontent.com/raula09/VibeVault/main/install.sh | bashiwr -useb https://raw.githubusercontent.com/raula09/VibeVault/main/install.ps1 | iexVibeVault now auto-falls back to ASCII UI glyphs on legacy Windows console hosts. Unicode glyphs stay enabled in modern terminals (Windows Terminal, VS Code terminal, WezTerm, and other xterm-like hosts).
- Force ASCII mode:
setx VIBEVAULT_ASCII 1 - Force Unicode mode:
setx VIBEVAULT_UNICODE 1
chmod +x scripts/publish-all.sh
./scripts/publish-all.sh v1.0.0Artifacts are written to dist/<version>/<rid>/.
Use this if you want reproducible publish output from a clean containerized toolchain.
chmod +x scripts/publish-all-docker.sh
./scripts/publish-all-docker.sh v1.0.0Artifacts are written to dist/<version>/<rid>/.
Docker is best for building and packaging. For running VibeVault itself (TUI + host audio backends), native install is usually better than running inside a container.
dotnet restore
dotnet run| Key | Action |
|---|---|
F1 / 1 |
Library view |
F2 / 2 |
Playlists view |
F4 / 4 |
Import browser |
v |
Toggle cover visual mode |
i |
Toggle visual render (ASCII / IMAGE) in visual mode |
Space |
Play/Pause |
n / p |
Next/Previous track (n in Library/Import/Visualizer; in Playlists use N for next) |
q |
Queue selected/focused track(s) in current view |
s |
Shuffle on/off |
+ / - |
Volume up/down |
c |
Cycle UI palette |
? |
Show/hide controls panel |
Ctrl+C |
Quit |
| Key | Action |
|---|---|
j / k or ↓ / ↑ |
Move selection |
Shift+Up/Down |
Range-select tracks |
Ctrl+Space |
Toggle focused track in selection |
Enter |
Play selected track |
q |
Queue selected track(s) in order |
a |
Add selected track(s) to playlist |
d / Delete |
Remove selected track from library |
Ctrl+F |
Start search |
Esc |
Clear search |
| Key | Action |
|---|---|
j / k |
Move playlist selection |
Tab / l / h |
Switch focus between playlists and tracks |
Enter |
Open playlist / play focused track |
q |
Queue focused playlist track |
n |
Create new playlist |
N |
Next track |
r |
Remove selected track from active playlist |
D |
Delete active playlist |
Ctrl+F |
Search playlist tracks |
| Key | Action |
|---|---|
j / k or ↓ / ↑ |
Move cursor |
Enter |
Open folder or import file |
Backspace |
Go up directory |
Space |
Single-select file |
Ctrl+Space |
Toggle marked file |
Shift+Up/Down |
Range-select files |
g |
Paste a shared Google Drive folder link and import MP3s |
Esc |
Exit import browser |
Terminal installer bootstraps one supported audio backend (ffplay, mpv, mpg123, or vlc) when none are available, then VibeVault auto-detects what is installed.
Configuration and data are stored in the VibeVault app-data directory.
| System | Base Path |
|---|---|
| Linux | ~/.config/VibeVault/ |
| macOS | ~/Library/Application Support/VibeVault/ |
| Windows | %APPDATA%\\VibeVault\\ |
| File | Description |
|---|---|
library.db |
SQLite library + playlists |
ui-settings.json |
Theme index, controls-panel visibility, visual render mode |
No license file is currently included in this repository.


