koan is a terminal-based music player designed for high-quality local and streamed audio playback. Written in Rust with a Ratatui interface, it supports bit-perfect output, automatic sample-rate switching, gapless transitions, and fast music library indexing.
The player combines local files with music hosted by Subsonic-compatible servers such as Navidrome. It also offers ReplayGain, synced lyrics, album art, visualizers, flexible format strings, file organisation, full-text search, and comprehensive queue management.
This is free and open source software.
Installation
A standard Cargo installation failed.
$ cargo install koan-cli
This was resolved by using the supplied lockfile, which pins lofty to version 0.23.3.
$ cargo install koan-cli --locked

A few configuration steps are needed:
$ koan config init

I then edited the configuration file.

I then instructed koan to index my library.
$ koan scan
In Operation
Here’s an image of koan in action.

In the example below, I’m playing an album in MP3 format. The software supports a wide variety of formats, including FLAC, MP3, AAC, Vorbis, Opus, ALAC, WAV, AIFF, CAF, Ogg, MKV, WebM, and MP4.
The interface is simple but effective, with album art, a library browser, fuzzy track picker, lyrics panel, and mouse support.
The term gapless playback can sometimes cause confusion. It simply means that one track flows into the next without a pause, allowing seamless transitions between songs. This is particularly important for albums designed so that tracks run together. And it is by no means limited to classical music. Electronic music, concept albums, and progressive rock can all be badly disrupted when artificial gaps are inserted between tracks.
For me, gapless playback is close to essential. If a music player does not support it, there is a very good chance it will go straight in the bin, regardless of how impressive its other features might be. The good news is that koan supports gapless playback. That combined with bit-perfect audio playback means it ticks a couple of essential boxes.
What else does the software offer?
Key Features
- Integrates with Subsonic and Navidrome servers for synchronisation and streamed playback.
- Combines local and remote tracks in a unified music library.
- ReplayGain track and album modes with peak limiting and configurable pre-amplification.
- Radio mode generates continuous playlists using artist similarity and genre matching.
- Full-text library search powered by SQLite FTS5.
- Queue management with multi-item selection, reordering, session persistence, and undo and redo history.
- Displays synced and plain-text lyrics obtained from LRCLIB.
- Includes numerous spectrum, waveform, oscilloscope, and animated visualisation modes.
- foobar2000-compatible format strings for custom displays and file organisation.
- GraphQL API and headless server mode for external control.
- Model Context Protocol server for integration with compatible AI clients.
Summary
koan is an impressive terminal music player with an unusually broad feature set. Its support for bit-perfect and gapless playback immediately sets it apart from many terminal-based alternatives, while the unified handling of local files and Subsonic-compatible servers makes it suitable for large or distributed music libraries.
The Ratatui interface is responsive and easy to navigate, and features such as ReplayGain, synced lyrics, full-text search, album art, flexible format strings, and numerous visualisers make Koan feel far more substantial than a minimalist command-line player.
ps_mem reports memory usage of around 34 MB, making the music player well suited to even very low-spec systems.
Website: github.com/radiosilence/koan
Support:
Developer: James Cleveland
License: MIT License
koan is written in Rust. Learn Rust with our recommended free books and free tutorials.
Related Software
| Terminal-Based Music Players | |
|---|---|
| musikcube | Sublime audio engine, library, player and server written in C++ |
| tap | The lightest music player with gapless playback |
| Tizonia | Powerful cloud music player based on OpenMAX IL 1.2 written in C and C++ |
| cmus | Great set of features including the essential gapless playback |
| termusic | Music Player TUI written in Rust |
| kew | Music player written in C |
| spectrum | Simple and intuitive music player for tech enthusiasts |
| ncmpc | Frugal Music Player Daemon client |
| ncmpy | Music Player Daemon client |
| MOC | Designed to be powerful and easy to use |
| RMuP | Simple music player lacking gapless playback |
| Siren | Extremely frugal with system resources |
| grump | CLI audio player written in Go |
| Gomu | Another Go music player |
| mpvc | mpc-like control interface for mpv |
| RustPlayer | Audio and radio player written in Rust |
Read our verdict in the software roundup.
Explore our comprehensive directory of recommended free and open source software. Our carefully curated collection spans every major software category.This directory is part of our ongoing series of informative articles for Linux enthusiasts. It features hundreds of detailed reviews, along with open source alternatives to proprietary solutions from major corporations such as Google, Microsoft, Apple, Adobe, IBM, Cisco, Oracle, and Autodesk. You’ll also find interesting projects to try, hardware coverage, free programming books and tutorials, and much more. Discovered a useful open source Linux program that we haven’t covered yet? Let us know by completing this form. |


Please read our Comment Policy before commenting.