Jellyfin Universal Repository combines plugin manifests from multiple repositories and serves a manifest for Jellyfin clients.
Add this URL as a plugin repository in the Jellyfin administrator dashboard:
https://obelo.us/upr
To add the repository:
- Sign in to the Jellyfin administrator dashboard.
- Open Dashboard > Plugins > Repositories.
- Remove an older Universal Plugin Repo URL, if you added one.
- Add
https://obelo.us/upras the repository URL. - Save the repository and refresh the plugin catalogue.
The old GitHub-hosted manifest is deprecated. See deprecation.md for details.
The catalogue includes a badge for plugins with an exact Jellyfin 12 ABI.
Check a plugin's supported ABI before installing it. A plugin that does not provide a compatible version might not work with your Jellyfin server.
The service performs these steps:
- Reads manifest sources from
sources.txt. - Fetches the upstream JSON manifests.
- Filters sources and plugin versions for the requesting Jellyfin version.
- Normalizes plugin metadata and removes self-dependencies.
- Downloads and normalizes plugin images.
- Writes a manifest for the requesting Jellyfin user agent.
- Serves the manifest from
/upr.
The server stores generated files in the plugins directory. It refreshes known user-agent manifests hourly and removes agents that have not been seen for about one month.
npm installnpm startBy default, the server listens on 0.0.0.0:3000. Set these environment variables to change the listener:
HOST=127.0.0.1 PORT=3000 npm startRun the update script from the repository root:
node update.jsThis writes a manifest for the universal agent to plugins/manifest.universal.json. To generate a manifest for a specific Jellyfin server version, pass false and the version as arguments:
node update.js false 10.11.0.0To remove existing images and download them again, pass true instead:
node update.js true 10.11.0.0The update script uses the third field in each sources.txt entry to select compatible sources. Use *.* for all versions or a comma-separated list for specific versions.
Each source entry uses this format:
manifest URL | repository URL | Jellyfin version constraint
For example:
https://example.com/manifest.json | https://github.com/example/plugin | 10.11,12.0
When you add a source:
- Add the entry to
sources.txtin alphabetical order. - Run
node update.jsto check that the source can be fetched and processed. - Review the generated files and open a pull request.
This project distributes metadata and download information from third-party plugin repositories. Installing a plugin means trusting the plugin author and the code they publish.
Review a plugin's source repository before installing it. Adding a repository to this catalogue does not make the plugin safe or imply that the project has audited its code.
index.js: starts the HTTP server and serves manifests and images.update.js: fetches sources and generates manifests.fetch-worker.js: fetches upstream manifests in worker threads.manifest-worker.js: transforms and serializes manifest data.sources.txt: lists upstream manifest sources and version constraints.plugins/: contains generated manifests and image assets.