mirror of
https://github.com/navidrome/navidrome.git
synced 2026-01-03 06:15:22 +00:00
Minimal Navidrome Plugin Example
This is a minimal example demonstrating how to create a Navidrome plugin using Go and the Extism PDK.
Building
- Install TinyGo
- Build the plugin:
go mod tidy tinygo build -o plugin.wasm -target wasip1 -buildmode=c-shared ./main.go zip -j minimal.ndp manifest.json plugin.wasm
Or using the examples Makefile:
cd plugins/examples
make minimal.ndp
Installing
Copy minimal.ndp to your Navidrome plugins folder (default: <data-folder>/plugins/).
Configuration
Enable plugins in your navidrome.toml:
[Plugins]
Enabled = true
# Add the plugin to your agents list
Agents = "lastfm,spotify,minimal"
What This Example Demonstrates
- Plugin package structure (
.ndp= zip withmanifest.json+plugin.wasm) - Implementing
nd_get_artist_biographyas a MetadataAgent capability - Basic JSON input/output handling with the Extism PDK
Extending the Example
To add more capabilities, implement additional exported functions:
nd_get_artist_mbid- Get MusicBrainz ID for an artistnd_get_artist_url- Get external URL for an artistnd_get_similar_artists- Get similar artistsnd_get_artist_images- Get artist imagesnd_get_artist_top_songs- Get top songs for an artistnd_get_album_info- Get album informationnd_get_album_images- Get album images
See the full documentation in /plugins/README.md for input/output formats.