mirror of
https://github.com/navidrome/navidrome.git
synced 2026-02-02 06:24:14 +00:00
Navidrome Plugin Examples
This folder contains example plugins for Navidrome that demonstrate how to build metadata agents using the plugin system.
Building
Prerequisites
- TinyGo (recommended) or Go 1.23+
- Extism CLI (optional, for testing)
Build all plugins
make
This will compile all example plugins and place the .wasm files in this directory.
Build a specific plugin
make minimal.wasm
make wikimedia.wasm
Clean build artifacts
make clean
Available Examples
| Plugin | Description |
|---|---|
| minimal | A minimal example showing the basic plugin structure |
| wikimedia | Fetches artist metadata from Wikidata, DBpedia, and Wikipedia |
Testing with Extism CLI
You can test any plugin using the Extism CLI:
# Test the manifest
extism call minimal.wasm nd_manifest --wasi
# Test with input
extism call minimal.wasm nd_get_artist_biography --wasi \
--input '{"id":"1","name":"The Beatles"}'
For plugins that make HTTP requests, use --allow-host to permit access:
extism call wikimedia.wasm nd_get_artist_url --wasi \
--input '{"id":"1","name":"The Beatles"}' \
--allow-host "query.wikidata.org"
Installation
Copy any .wasm file to your Navidrome plugins folder:
cp minimal.wasm /path/to/navidrome/plugins/
Then enable plugins in your navidrome.toml:
[Plugins]
Enabled = true
Folder = "/path/to/navidrome/plugins"
And add the plugin to your agents list:
Agents = "lastfm,spotify,wikimedia"
Creating Your Own Plugin
See the minimal example for the simplest starting point, or wikimedia for a more complete example with HTTP requests.
For full documentation, see the Plugin System README.