You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Carey Metcalfe 359e391fcc Implement recursive downloading of folders 3 weeks ago
.github/workflows Advertising (and testing) Python 3.9 support 11 months ago
bin Removing shebang and executable flag from explicit python files 11 months ago
cgi-bin Removing shebang and executable flag from explicit python files 11 months ago
docs Allow renaming users with the CLI 9 months ago
supysonic Implement recursive downloading of folders 3 weeks ago
tests Added test for #221 1 month ago
.coveragerc Updates for Travis and codecov 4 years ago
.gitignore add .vscode to gitignore 11 months ago
LICENSE Setting a license 8 years ago First throw at automatic database migrations 3 years ago Usage doc 9 months ago
ci-requirements.txt Tweaking test workflow 11 months ago
config.sample CRLF -> LF 9 months ago Switch to using `zipstream-ng` to generate and stream zip files 3 weeks ago
supysonic-daemon.service Docs update + systemd service file for the daemon 2 years ago


Supysonic is a Python implementation of the Subsonic server API.

Build Status codecov Python

Current supported features are:

  • browsing (by folders or tags)
  • streaming of various audio file formats
  • transcoding
  • user or random playlists
  • cover art
  • starred tracks/albums and ratings
  • Last.FM scrobbling
  • Jukebox mode

Supysonic currently targets the version 1.10.2 of the Subsonic API. For more details, go check the API implementation status.


Full documentation is available at


Use the following commands to install Supysonic, create an admin user, define a library folder, scan it and start serving using Gunicorn.

$ pip install git+
$ pip install gunicorn
$ supysonic-cli user add MyUserName
$ supysonic-cli user setroles --admin MyUserName
$ supysonic-cli folder add MyLibrary /home/username/Music
$ supysonic-cli folder scan MyLibrary
$ gunicorn -b "supysonic.web:create_application()"

You should now be able to enjoy your music with the client of your choice!

But using only the above commands will use a default configuration and especially storing the database in a temporary directory. Head over to the documentaiton for full setup instructions, plus other options if you don't want to use Gunicorn.

Note that there's also an optional daemon that watches for library changes and provides support for other features such as the jukebox mode.

Development stuff

For those wishing to collaborate on the project, since Supysonic uses Flask you can use its development server which provides automatic reloading and in-browser debugging among other things. To start said server:

$ export FLASK_APP="supysonic.web:create_application()"
$ export FLASK_ENV=development
$ flask run

And there's also the tests:

$ python test
$ python test --test-suite tests.with_net