Plugin System
Build, distribute, and install plugins that extend Soundie's capabilities.
🔧 Plugin system is in active development
The core API is stable. Distribution via the plugin registry is coming in v0.2.0.
What Plugins Can Do
Add sidebar tabs
Custom navigation entries with their own pages
Add theme presets
Ship .soundie-theme files bundled in the plugin
Extend the REST API
Register new HTTP endpoints on the local server
Emit WebSocket events
Publish custom events to connected clients
Access the library
Read/write playlists and tracks
Control the player
Play, pause, seek, queue tracks
Show notifications
System tray and in-app toasts
Store persistent data
Scoped key/value store per plugin
Plugin Manifest
Every plugin ships a plugin.json manifest at its root:
Plugin Entry Point
PluginContext API
Permissions
| Permission | Description |
|---|---|
| player:read | Read current player state and subscribe to events |
| player:control | Send play/pause/seek/volume commands |
| library:read | Read playlists, tracks, and metadata |
| library:write | Create, modify, and delete playlists |
| api:register | Register custom HTTP endpoints on the local API server |
| store:read | Read from the plugin's persistent key/value store |
| store:write | Write to the plugin's persistent store |
| notify | Show in-app toast and system tray notifications |
Permissions are declared in plugin.json and shown to the user before installation. The host only exports IPC functions for granted permissions — unapproved calls throw immediately.