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_biography --wasi \ 3s ▼
--input '{"id":"1","name":"Yussef Dayes"}' \
--allow-host "query.wikidata.org" --allow-host "en.wikipedia.org"
Installation
Copy any .wasm file to your Navidrome plugins folder:
cp wikimedia.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, created with the [XTP CLI]((https://docs.xtp.dylibso.com/docs/cli).
Bootstrapping a New Plugin
Use the XTP CLI to bootstrap a new plugin from a schema:
xtp plugin init \
--schema-file plugins/schemas/metadata_agent.yaml \
--template go \
--path ./my-plugin \
--name my-plugin
See the schemas README for more information about available schemas and supported languages.
For the simplest starting point, look at minimal. For a more complete example with HTTP requests, see wikimedia.
For full documentation, see the Plugin System README.