PMDA ships as a single container with the web app, PostgreSQL, and Redis already inside.
docker run -d \
--name pmda \
--restart unless-stopped \
-p 5005:5005 \
-e PMDA_AUTH_ENABLED=1 \
-e PMDA_MEDIA_CACHE_ROOT=/cache \
-v /srv/pmda/config:/config \
-v /srv/pmda/cache:/cache \
-v /srv/music:/music:rw \
-v /srv/pmda/review:/dupes:rw \
-v /srv/pmda/export:/export:rw \
meaning/pmda:latestOpen http://localhost:5005, create your admin account, then configure in Settings:
- one or more Standard source folders
- optional Incoming folders
- Duplicates and Incomplete targets
- optional Export root and AI providers
PMDA is ready to scan as soon as folders are configured.
| 🔎 Match albums | Cross-check tags, track structure, durations, AcoustID, MusicBrainz, Discogs, Last.fm, and Bandcamp. |
| 🧠 Use OCR and AI only when needed | Read covers with Tesseract, confirm ambiguous art with vision, and use web search for missing reviews or context. |
| ♻️ Clean the library | Detect duplicates, identify incomplete albums, move them to review folders, and keep everything reversible. |
| ⚡ Publish a fast catalog | Serve a PostgreSQL-backed library with Redis hot cache and SSD-backed artwork/media cache. |
| Browse, play, like, rate, build playlists, recommend albums, and compare listening taste across users. | |
| 🧱 Export anywhere | Build a clean hardlinked, symlinked, copied, or moved export tree for Plex, Jellyfin, or Navidrome. |
- Multi-folder source management with optional incoming/drop-zone workflows
- Automatic duplicate detection with restorable move history
- Automatic incomplete-album detection and quarantine
- Classical-aware matching for composer, work, conductor, orchestra, ensemble, and soloists
- Review surfaces for duplicates, incompletes, pipeline trace, and scan history
- Built-in player, playlists, likes, recommendations, concerts, and user accounts
- Mobile-friendly web UI and installable PWA shell
- Exported library generation for downstream media servers
Metadata providers
- MusicBrainz
- Discogs
- Last.fm
- Bandcamp
- AcoustID
AI providers
- OpenAI API
- OpenAI Codex runtime
- Anthropic
- Google Gemini
- Ollama
PMDA uses deterministic signals first, then escalates to OCR, vision, or LLMs only when ambiguity remains or advanced enrichment is enabled.
PMDA can be used in two ways:
- Primary app: PMDA scans, matches, publishes, plays, and recommends directly.
- Middleware: PMDA cleans and exports a library that Plex, Jellyfin, or Navidrome can index downstream.
PMDA is designed for serious self-hosted music libraries:
- large collections
- mixed metadata quality
- duplicate-heavy or incomplete-heavy sources
- users who want automation without losing reviewability
- users who want a faster published library than raw folder browsing
meaning/pmda:latestmeaning/pmda:beta
Docker Hub: meaning/pmda


