Jellyfin plugin for the Retreivr resolution and acquisition network.
This plugin connects Jellyfin to a running Retreivr server so users can search music, inspect availability, and send acquisition work to Retreivr without leaving Jellyfin.
The plugin is not a downloader by itself. Retreivr Core remains the backend worker and Resolution API host.
The fastest way to get Retreivr running is the core release asset package:
- Retreivr core repo:
https://github.com/sudoStacks/retreivr - Release asset:
retreivr-docker-starter-<tag>.zip
That starter bundle contains the compose file, env example, config example, and runtime notes needed to launch Retreivr quickly with Docker.
Detailed setup notes for Jellyfin + Retreivr are in docs/SETUP.md.
Once Retreivr is running, configure this plugin with the Retreivr server root URL. In the common single-node setup, both fields should point to the same base URL:
Resolution API Base URL:http://RETREIVR_HOST:8000Retreivr Core Base URL:http://RETREIVR_HOST:8000
Optional API keys are only needed if you enabled auth on the Retreivr server.
Included now:
- backend status / health view inside the plugin page
Open Retreivr UIbutton using the configured core URL- basic in-plugin music search UI
- artist cards with album drilldown
- album cards with track drilldown and full-album download
- track cards with direct enqueue into Retreivr Core
- typed Resolution API client
- typed Retreivr Core client
- availability service aligned to Retreivr Section 3 status model:
verifiedpendingnot_foundlocal_only
- plugin controller endpoints for:
- health and backend status
- recording resolve
- bulk resolve
- Jellyfin item availability by item id
- Jellyfin item bulk availability
- proxied music search / album / track flows
- Retreivr Core download enqueue
- MusicBrainz provider-id extraction for Jellyfin items
- GitHub Actions tagged-release packaging workflow
This plugin is the first external consumer of the Retreivr Resolution API. Its job is to turn MusicBrainz-linked media inside Jellyfin into:
- availability indicators
- instant resolved-source playback eligibility
- download handoff into Retreivr Core
- future artist radio and music-video flows
The integration boundary is the Resolution API and selected Retreivr Core APIs, not Retreivr internals.
Not yet implemented:
- real Jellyfin UI injection for item badges
- playback interception / “play resolved source” flow
- artist radio UX
- music video browsing integration
For most installs:
Resolution API Base URL:http://retreivr.local:8000Retreivr Core Base URL:http://retreivr.local:8000
Optional auth is supported via bearer token / API key if you enable that on the Retreivr server.
Current controller routes:
GET /Plugins/Retreivr/healthGET /Plugins/Retreivr/statusGET /Plugins/Retreivr/resolve/recording/{mbid}POST /Plugins/Retreivr/resolve/bulkGET /Plugins/Retreivr/music/searchGET /Plugins/Retreivr/music/albums/searchGET /Plugins/Retreivr/music/albums/{releaseGroupMbid}/tracksPOST /Plugins/Retreivr/music/albums/{releaseGroupMbid}/downloadPOST /Plugins/Retreivr/music/enqueueGET /Plugins/Retreivr/items/{itemId}/availabilityPOST /Plugins/Retreivr/items/availability/bulkPOST /Plugins/Retreivr/items/{itemId}/download
With the current plugin page, you can already:
- confirm backend connectivity from Jellyfin
- open the configured Retreivr UI directly
- search artists/albums/tracks through Retreivr
- browse albums for an artist
- inspect track listings for an album
- queue track or album downloads into Retreivr
- normal pushes do not run CI
- manual builds are available through
workflow_dispatch - tags matching
v*build and package the plugin automatically - the release workflow stamps the assembly/build manifest version from the tag before packaging
- the release workflow rewrites
main/manifest.jsonon every tagged release so it always points at the newest versioned release asset and checksum
Use this stable repository URL in Jellyfin:
https://raw.githubusercontent.com/sudoStacks/retreivr-jellyfin-plugin/main/manifest.json
Do not use a versioned release-asset manifest URL in Jellyfin. The stable main/manifest.json file is the contract, and each tagged release updates that file to the newest plugin package automatically.
Installation path in Jellyfin:
- Dashboard
- Plugins
- Repositories
- Add repository
- Paste the manifest URL above
- Save
- Open
Catalog - Find
Retreivr - Install
- Restart Jellyfin
This repo was scaffolded in an environment without dotnet, so local compilation did not happen here. The intended packaging path is the tagged GitHub Actions release workflow.