Quickstart: VinylKit CLI
Installation
There are a few ways to install VinylKit. Pick the one that fits your setup:
Option 1: Standalone Installer
To get VinylKit running without manually setting up Python or package managers:
- macOS & Linux (Bash/Zsh):
bash curl -fsSL https://vinylkit.app/install.sh | bash - Windows (PowerShell):
powershell irm https://vinylkit.app/install.ps1 | iex
Option 2: Python / Developer Tool (uv)
For developers and power users who already have Python and uv installed:
uv tool install git+https://github.com/alaninspace/vinyl-kit.git
[!TIP]
Migrating fromuvto a standalone executable? If you already have VinylKit installed globally viauv, make sure to runuv tool uninstall vinylkitbefore installing the standalone version to avoid systemPATHconflicts!
For alternative installation options—including manual PyInstaller downloads, PyApp bootstrappers, Homebrew, and Scoop—see the full Download & Install Guide.
Setup & Configuration
VinylKit needs to know where your music library is, where you put your new recordings, and how to talk to Discogs.
1. Set your Library Location
This is where your tagged and organized music library will live.
Bash:
vinylkit config set library_root ~/Music/VinylLibrary
PowerShell:
vinylkit config set library_root "D:\Music\VinylLibrary"
2. Set your Recordings Location (The "Inbox")
This is where you place your new vinyl recordings (e.g. 01.flac, 02.flac) before tagging them. Setting this lets you run commands without typing the folder path every time.
Bash:
vinylkit config set recordings_root ~/Recordings/Vinyl
PowerShell:
vinylkit config set recordings_root "C:\Temp\RecordedVinyl"
3. Authenticate with Discogs
See the Authentication Guide for detailed steps.
Quick Start (Personal Access Token):
# Bash / PowerShell
vinylkit config set discogs_token "YOUR_TOKEN"
[!TIP]
For a full list of all settings (backups, custom filenames, tagging modes), see the Configuration Guide.
4. Advanced Artwork Collection
By default, VinylKit only downloads the primary cover. You can enable full collection:
# Bash / PowerShell
# Download all images from the release
vinylkit config set collect_all_artwork true
# Customize the artwork subdirectory name
vinylkit config set artwork_subdir "Scans"
5. Folder Structure & Naming
You can control exactly how your library is organized and how deep the folders are by changing the naming_pattern.
Available Placeholders: {artist}, {album}, {year}, {id}, {track_number}, {title}, {label}, {catalogue_number}, {side}, {genre}, {style}, {country}, and more. See the Configuration Guide — naming_pattern for the full list.
Examples:
- Standard Chronological (Default):
Artist / Year - Album / Track - Title
# Bash / PowerShell
vinylkit config set naming_pattern "{artist}/{year} - {album}/{track_number} - {title}"
- Deep Parentheses:
Artist / Album (Year) / Track - Title
# Bash / PowerShell
vinylkit config set naming_pattern "{artist}/{album} ({year})/{track_number} - {title}"
- Flat Album Folders:
Year - Artist - Album / Track - Title(One folder per album)
# Bash / PowerShell
vinylkit config set naming_pattern "{year} - {artist} - {album}/{track_number} - {title}"
- Completely Flat: Everything in one folder
# Bash / PowerShell
vinylkit config set naming_pattern "{year} - {id} - {artist} - {album} - {track_number} - {title}"
Common Workflows
If you configure your recordings_root, tagging files becomes much simpler because you don't have to specify the path every time.
Scenario: Tagging and Moving a New Recording
If you just finished recording an album and the files are in your default recordings folder:
# Bash / PowerShell
# 1. Scan to see the files in your Recordings folder
vinylkit scan
# 2. Tag, Create release_info.txt, and Rename/Move to library in one go
# (Example: Jeff Mills - Kat Moda EP)
vinylkit tag --id 165
Scenario: Tagging a specific folder
To tag files outside your default recordings folder, specify the path in the command:
Bash:
# Explicit path provided: --rename is NOT automatic in this workflow, must be added
# (Example: Krafty Kuts - Lost Plates E.P.)
vinylkit tag ~/Downloads/vinyl-rip --id 56903 --rename
PowerShell:
# Explicit path provided: --rename is NOT automatic in this workflow, must be added
# (Example: Krafty Kuts - Lost Plates E.P.)
vinylkit tag "C:\Some\Other\Folder" --id 56903 --rename
Scenario: Batch tagging multiple releases
[!IMPORTANT]
Configuration Requirement: Batch tagging requires setting yourrecordings_root(see Step 2 under Setup & Configuration), because the command scans this directory for folders named with Discogs IDs.
Name your folders with the Discogs ID so VinylKit can pick it up automatically. Three formats are supported:
- Bracket suffix:
Album Name [12345] - Bare numeric:
12345 - URL-style prefix (copy-paste from the Discogs URL):
12345-Artist-Album-Title
Then tag them all at once:
# Bash / PowerShell
# Tag, rename, and move to library
vinylkit tag --batch --auto-move
# Tag and rename in place (don't move to library)
vinylkit tag --batch --no-move
Available Commands
Here is what you can run:
scan— View audio files and their tagging status.tag— Tag files using a Discogs Release ID or interactive search, with optional rename/move.rename— Move already-tagged files into your library structure (dry-run by default).migrate— Migrate an existing library to the new folder structure.auth— Manage Discogs authentication (login, identity).config— View and update persistent settings.cache— List and clear cached Discogs API responses.collection— Download your Discogs collection as CSV.
For full syntax, options, and search tips, see the User Guide — Command Reference.
Next Steps
- User Guide — In-depth command reference, tagging details, and workflows.
- Examples Guide — Real-world scenarios and command combinations.
- Configuration Guide — Full list of all settings with defaults and examples.
Where is my config?
Your settings and keys live in a standard config file on your system:
- Windows:
%LOCALAPPDATA%\vinylkit\vinylkit\config.toml - macOS:
~/Library/Application Support/vinylkit/config.toml - Linux:
~/.config/vinylkit/config.toml
Running uv tool install --force will not delete or reset these files.