Navidrome Plugin Examples

This folder contains example plugins for Navidrome that demonstrate how to build metadata agents using the plugin system.

Building

Prerequisites

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.