Skip to content
snapetech-orgPublic

About

The extremely fast and effciient, feature-forward Soulseek web client, in Rust!. A richly enhanced fork of slskdN; making Fidelity, Discovery, and Community all first-class features.

Topics

Resources

Stars

21 stars

Watchers

0 watching

Forks

Latest commit

 

History

2,191 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

slskR

A fast, lightweight Rust daemon and web UI for Soulseek file sharing

Releases · Issues · Documentation · Community

slskR is a self-hosted Soulseek client written in Rust. It ships a daemon, a REST API, and a bundled web UI together. It is an independent implementation with its own configuration and release contracts, not a fork or wrapper.

For local MCP access, see the SnapeTech MCP integration guide.

Contents

Why slskR

  • Substantially lighter than the upstream client. In a matched idle benchmark, slskR used about 16x less CPU time and 85–89% less memory. A separate connected-idle run measured about 30x less CPU time and 85–95% less memory. See the performance analysis and the connected-idle report.
  • One process for the daemon, API, and UI. No sidecar or external web host.
  • API-first. Versioned /api/v0/* routes, OpenAPI, WebSocket events, webhooks, and TypeScript, Python, and Go clients.
  • Safe defaults. Loopback-only HTTP, authentication on by default, CSRF checks, virtual share paths, and scoped API tokens.
  • Runs anywhere. Linux, macOS, Windows, Docker, Kubernetes, Unraid, TrueNAS, Synology, and the major package managers.

Features

Each area has a focused guide with workflows, API examples, limits, and the configuration that applies.

Feature area What you get Guide
Search and discovery Global, user, room, and wishlist searches; result filters; discovery helpers. Search guide
Transfers Download/upload queue, resume, retry, rescue, path templates, multisource swarm, previews. Transfers guide
Shares and browse Bounded share index, regex filters, virtual paths, catalog, peer browse. Shares guide
Messaging, rooms, and users Private messages, rooms, watched users, contacts, notes, interests, bans. Messaging guide
Web UI and media Shipped React UI, player, previews, collections, share groups, listening parties. Web UI guide
Integrations Spotify, Lidarr, and the optional visualizer. Integrations guide
Mesh, DHT, and pods DHT rendezvous, TLS/QUIC mesh, pods, channels, room bindings, Gold Star Club. Mesh guide
API and automation Versioned routes, auth, events, webhooks, batch, metrics, typed clients. API guide
Data and operations SQLite persistence, database maintenance, logs, metrics, telemetry. Operations guide
Security and access Bind defaults, tokens, CSRF, rate limits, webhook policy, reverse proxies. Security guide
Localization Twelve UI locales, English fallback, locale-aware formatting. Localization guide
Performance Measured CPU and memory evidence, methods, and limits. Performance analysis

Also included:

  • Global, user, room, and scheduled wishlist searches with result filters, duplicate folding, hidden/blocked-user handling, and metadata-assisted follow-ups.
  • Auto-retry and rescue workers for failed, queued, slow, or stalled audio downloads, with bounded alternate-source searches.
  • Offset/resume, type-1 obfuscated and indirect peer fallback, completed-path templates, and hash-verified multisource swarms.
  • Share catalog, per-root file listing, peer browse, folder browse, and partial browse state.
  • Private-message acknowledgements, room join/leave, watched-user stats, contacts, notes, liked/hated interests, and username/IP bans.
  • Collections, share groups, playlist intake, player controls, local and peer previews, and listening parties.
  • Spotify OAuth, Lidarr status/wanted/import, and a local visualizer hook.
  • Mainline DHT, TLS mesh transport, QUIC control/data, pods, member-only channels, Soulseek-room bindings, hash metadata, and shadow-index discovery.
  • Versioned /api/v0/* routes, OpenAPI, bearer and X-API-Key auth, scoped tokens, WebSocket events, webhooks, batch operations, and metrics/telemetry.
  • TypeScript, Python, Go, and Rust clients.
  • Optional SQLite persistence, database cleanup/vacuum, runtime log levels, and health checks.
  • Loopback-first defaults, CSRF checks, rate limits, SSRF-resistant webhook targets, and OS keyring, systemd, file, memory, or env credential stores.
  • Twelve interface locales with English fallback and locale-aware date, number, and byte formatting.

Get started

Docker

SLSKR_API_TOKEN="$(openssl rand -hex 32)"
SLSKD_PASSWORD="$(openssl rand -hex 16)"

docker run -d --name slskr --restart unless-stopped \
  -p 5030:5030 -p 2234:2234/tcp -p 2234:2234/udp \
  -e SLSKR_API_TOKEN="$SLSKR_API_TOKEN" \
  -e SLSKD_PASSWORD="$SLSKD_PASSWORD" \
  -v slskr-state:/var/lib/slskr \
  ghcr.io/snapetech/slskr:latest

Open http://localhost:5030/, sign in as slskr with the generated password, then enter your Soulseek credentials.

Release binary

Download the archive for your platform from Releases, verify it against SHA256SUMS.txt, extract it, and put slskr on your PATH:

tar -xzf slskr-<version>-<target>.tar.gz
sudo install -Dm755 slskr /usr/local/bin/slskr
slskr serve

Feature maturity

The stable baseline is the Soulseek client, Web UI, REST API, and ordinary single-source transfers. Optional features such as persistence, integrations, mesh, DHT, pods, and multisource downloads need configuration or suitable peers. See Status and support boundaries, the feature map, and the feature guides.

Project status and contribution

slskR is an independent Rust implementation. It pursues compatibility with useful Soulseek workflows but is not a fork of any other client.

Support

License

GNU Affero General Public License v3.0. See LICENSE and NOTICE.

Local security scanning

Run ./scripts/security-scan-local.sh for local Semgrep CE and the Trivy scanners that fit this repository. The installed pre-commit hook runs Semgrep on staged source/config files only; Trivy runs on demand or in CI. See security-scanning.md. Use ./scripts/update-security-tools.sh to refresh local scanner data and the Trivy database.

About

The extremely fast and effciient, feature-forward Soulseek web client, in Rust!. A richly enhanced fork of slskdN; making Fidelity, Discovery, and Community all first-class features.

Topics

Resources

Stars

21 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages