# Soulseek Search and download from the Soulseek network, through your own [slskd](https://github.com/slskd/slskd) daemon — inside Officer, with the API key held server-side so no device ever carries it. ## What you get - **Search** the network, with results grouped by peer and filterable by bitrate, size and free slots - **Transfers** — downloads and uploads, with queue position, retry and cancel - **Browse a peer's shares** as a tree, cached locally so it survives them going offline - **Favourites** — peers worth coming back to - **Rooms and chat**, joined and available - **Server status** — connect, disconnect and see what the daemon is doing Favourites and the cached browse tree are Officer's own: slskd has no concept of either. ## Requirements A running slskd instance Officer can reach, and its API key. ## Setup Install the plugin, open **/soulseek**, and fill in the connection panel — the daemon URL and the API key. The key is encrypted at rest and never sent to the browser. The plugin does **not** install or supervise slskd. Point it at one you already run. ## Permissions One permission, `soulseek`, grantable per role like any other app permission. It gates the whole surface. ## Notes - The connection is stored per-owner in the platform's `service_connections` table under the service name **`slskd`**, while the HTTP mount is **`/api/soulseek`**. Those two strings differ on purpose — see `PLUGIN.md`. - Live search results arrive by polling; the SignalR hub is not proxied.