jpochyla/psst — an open-source project — sits at 9.5k GitHub stars. Fast and multi-platform Spotify client with native GUI
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
A fast Spotify client with a native GUI written in Rust, without Electron.
Psst is still very early in development, lacking in features, stability, and general user experience.
It's fully cross-platform, supporting Windows, Linux, and macOS.
Contributions are welcome!
Note: A Spotify Premium account is required.
ℹ️ As of February 2026, Spotify changed developer access, and Psst now requires your own Spotify Developer Client ID for Web API features (search, library, playlists). Register an app at the Spotify Developer Dashboard (redirect URI: http://127.0.0.1:8888/login and enable Web API), then enter its Client ID on Psst's sign-in screen.
Download
GitHub Actions automatically builds and releases new versions when changes are pushed to the main branch.
You can download the latest release for Windows, Linux, and macOS from the GitHub Releases page.
Platform
Download Link
Linux (x86_64)
Download
Linux (aarch64)
Download
Debian Package (amd64)
Download
Debian Package (arm64)
Download
macOS
Download
Windows
Download
Unofficial builds of Psst are also available through the AUR and Homebrew.
Building
On all platforms, the latest Rust stable (at least 1.65.0) is required.
For platform-specific requirements, see the dropdowns below.
Linux
Our user-interface library, Druid, has two possible backends on Linux: GTK and pure X11, with a Wayland backend in the works.
The default Linux backend is GTK.
Before building on Linux, make sure the required dependencies are installed.
OpenBSD support is still a WIP, and things will likely not function as intended.
Similar to Linux, Druid defaults to GTK while also providing a pure X11 backend.
Furthermore, bindgen must be able to find LLVM through the expected environment variable.
Only OpenBSD/amd64 has been tested so far.
doas pkg_add gtk+3 cairo llvm
export LIBCLANG_PATH=/usr/local/lib
In case rustc(1) fails building bigger crates
memory allocation of xxxx bytes failed
error: could not compile `gtk`
Caused by:
process didn't exit successfully: `rustc --crate-name gtk [...]` (signal: 6, SIGABRT: process abort signal)
warning: build failed, waiting for other jobs to finish...
try increasing your user's maximum heap size:
ulimit -d $(( 2 * `ulimit -d` ))
Build from Source
cargo build
# Append `--release` for a release build.
Run from Source
cargo run --bin psst-gui
# Append `--release` for a release build.
Build Installation Bundle (i.e., macOS .app)
cargo install cargo-bundle
cargo bundle --release
Roadmap
Vorbis track playback
Browsing saved albums and tracks
Save / unsave albums and tracks
Browsing followed playlists
Search for artists, albums, and tracks
Podcast support
Media keys control
Open Spotify links through the search bar
Audio volume control
Audio loudness normalization
Genre playlists and "For You" content
Dark theme
Credits support
Resilience to network errors (automatically retry timed-out requests)
Managing playlists
Follow/unfollow
Add/remove tracks
Reorder tracks
Rename playlist
Playlist folders
Playback queue
React to audio output device events
Pause after disconnecting headphones
Transfer playback after connecting headphones
Better caching
Cache as many WebAPI responses as possible
Visualize cache utilization
Total cache usage in the config dialog
Show time origin of cached data, allow to refresh
Trivia on the artist page, Wikipedia links
Downloading encrypted tracks
Reporting played tracks to Spotify servers
OS-specific application bundles
UI
Rethink the current design, consider a two-pane layout
Left pane for browsing
Right pane for current playback
Detect light/dark OS theme
Robust error states, ideally with a retry button
Correct playback highlight
Highlight now-playing track only in the correct album/playlist
Keep highlighted track in viewport
Paging or virtualized lists for albums and tracks
Grid for albums and artists
Robust active/inactive menu visualization
Save playback state
Development
Contributions are very welcome!
Here's the basic project structure:
/psst-core - Core library, takes care of Spotify TCP session, audio file retrieval, decoding, audio output, playback queue, etc.
/psst-gui - GUI application built with Druid
/psst-cli - Example CLI that plays a track. Credentials must be configured in the code.
Privacy Policy
Psst connects only to the official Spotify servers and does not call home.
Caches of various things are stored locally and can be deleted anytime.
User credentials are not stored at all; instead, a re-usable authentication token from Spotify is used.
Thanks
This project would not exist without the following:
Big thank you to librespot, the Open Source Spotify client library for Rust. Most of psst-core is directly inspired by the ideas and code of librespot, although with a few differences:
Spotify Connect (remote control) is not supported yet.
Psst is completely synchronous, without tokio or other async runtime, although it will probably change in the future.
Psst is using HTTPS-based CDN audio file retrieval, similar to the official Web client or librespot-java, instead of the channel-based approach in librespot.
druid native GUI library for Rust.
ncspot cross-platform ncurses Spotify client written in Rust, using librespot.
TopGit's last sync did not record any GitHub topics for jpochyla/psst. GitHub topics appear in the right sidebar of a repository page; that's the authoritative place to check.
How active is development on jpochyla/psst?
The most recent commit recorded on jpochyla/psst was 2 months ago, based on the GitHub push timestamp. The repository has 273 forks — one of the better signals of community interest.
How many stars does jpochyla/psst have?
jpochyla/psst has 9.5k GitHub stars — refresh the page for the live number, or check github.com/jpochyla/psst. TopGit mirrors GitHub's count but does not claim minute-by-minute accuracy.
What language is jpochyla/psst written in?
jpochyla/psst is written primarily in Rust. GitHub's language field is based on the largest share of bytes in the default branch.
Where do I read more about jpochyla/psst?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/jpochyla/psst is the definitive source.
Read full README in the tab above.
Still deciding about psst?
One click hands the question to an AI along with this page — see what it says about psst.