Swing Music is a blazingly fast and beautiful, self-hosted music streaming server. Like a cooler Spotify ... but bring your own music.
Features
- Daily Mixes - curated everyday based on your listening activity
- Metadata normalization - a clean and consistent library
- Album versioning - normalized albums and association with version labels (eg. Deluxe, Remaster, etc)
- Related artist and albums
- Folder view - Browse your music library by folders
- Beautiful browser based UI
- Silence detection - Combine cross-fade with silence detection to create a seamless listening experience
- Collections - Group albums and artists based on your preferences
- Statistics - Get insights into your listening activity
- Last.fm scrobbling
- Multi-user support
- Cross-platform - Windows, Linux, MacOS (coming soon), arm64, x86
Installation
On Linux or MacOS run the command below to install Swing Music:
curl -fsSL https://setup.swingmx.com | bash
To run Swing Music on Windows, download the portable build from the downloads page and run it.
The app should start at http://localhost:1970 by default. Open the URL in your browser to configure and use Swing Music.
Using Docker Compose
Here's a sample Docker compose file:
services:
swingmusic:
image: ghcr.io/swingmx/swingmusic:latest
container_name: swingmusic
ports:
- "1970:1970"
volumes:
- /path/to/music:/music
- /path/to/config:/config
environment:
- SWINGMUSIC_PORT=1970
- SWINGMUSIC_DEVICE_NAME=Host name here
restart: unless-stopped
The SWINGMUSIC_DEVICE_NAME sets the name this server reports to connected clients. To use a different port, change both SWINGMUSIC_PORT and the ports mapping to match (e.g. 2001:2001 with SWINGMUSIC_PORT=2001).
Using Docker CLI
docker pull ghcr.io/swingmx/swingmusic:latest
Then run:
docker run --name swingmusic -p 1970:1970 -e SWINGMUSIC_PORT=1970 -e SWINGMUSIC_DEVICE_NAME="Host Name Here" -v /path/to/music:/music -v /path/to/config:/config --restart unless-stopped ghcr.io/swingmx/swingmusic:latest
Replace the following with appropriate values:
/path/to/music- Your music directory on the host/path/to/config- Path to create Swing Music configs on the hostHost Name Here- Your host device name
You can change the Swing Music port by updating both the -p mapping and SWINGMUSIC_PORT to the same value (e.g. -p 2001:2001 -e SWINGMUSIC_PORT=2001).
Options
Options flags can be passed when starting the app in the terminal to tweak runtime settings or perform tasks. You can use the -h flag to see all supported options.
Contributing and Development
Swing Music is looking for contributors. If you're interested, please join us at the Swing Music Community group on Telegram. For more information, take a look at https://github.com/swing-opensource/swingmusic/issues/186.
License
This software is provided to you with terms stated in the AGPLv3 License or any later version. Read the full text in the LICENSE file located at the root of this repository.
Contributors
Shout out to the following code contributors who have helped maintain and improve Swing Music:
Metadata
Release files for swingmusic 3.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 30.2 MB
Release files / swingmusic-3.0.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | swingmusic-3.0.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 3.3 MB |
| Tags | CPython 3.14 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
25b0755fcf4ce475aacaa20a96dac5f0d79a8fb74eb8265ce3615695eda8460c
|
|
BLAKE2b-256 checksum How to use checksums |
c886f58e9fdbbdbb935780c02f2ee63595e7c41f48390bd1e9bdbd9e4a1d2ca8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 12, 2026.
Transparency logRelease files / swingmusic-3.0.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | swingmusic-3.0.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 3.0 MB |
| Tags | CPython 3.14 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
5f2f7e1d21ad0b39972564cdc1b6ce088f1a37a55ab2ab0593369072347a1e62
|
|
BLAKE2b-256 checksum How to use checksums |
69a4a3846fed671f46a135e10aad2831b3dd71a5bf98f87f88ec48f253ef8631
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 12, 2026.
Transparency logRelease files / swingmusic-3.0.1-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | swingmusic-3.0.1-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
a0c5ab4a0153b134e530efdd879f4f639bee68f02a688ebf8e968c18eb04674d
|
|
BLAKE2b-256 checksum How to use checksums |
fa4dc80904ff7f161b24ab34075cf31522cf12b132ab0449994a37fd30a50550
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 12, 2026.
Transparency logRelease files / swingmusic-3.0.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | swingmusic-3.0.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 3.3 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
76651c8d1813b13b9544cfe7c8d750a4e21fe266bc98ba14269b815577e94b4b
|
|
BLAKE2b-256 checksum How to use checksums |
1b2afd19a898b6d0c002aad50f57d5e660be16d39b014121e1096d30020df0e7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 12, 2026.
Transparency logRelease files / swingmusic-3.0.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | swingmusic-3.0.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 3.0 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
bc7ed3ba776bd08bc9abeb3bee225220c628014423dad5ceedc1f90f366782d4
|
|
BLAKE2b-256 checksum How to use checksums |
4c8155e440f18b392e4e7e6e17950a6a76d8b984dc2cbad496b80b44f06efc36
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 12, 2026.
Transparency logRelease files / swingmusic-3.0.1-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | swingmusic-3.0.1-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
51f81f8a2e7f15359da8ca7a505c88f720cb5072a6c1db8be33123030d6ab378
|
|
BLAKE2b-256 checksum How to use checksums |
f9983d2e2f3109bdcec8e863b563ff3fc45b1af070b44b30505be9a67f1200a7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 12, 2026.
Transparency logRelease files / swingmusic-3.0.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | swingmusic-3.0.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 3.3 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
bc2eb6830989247124ddbacd4226707df4f69cc66a40ef2da4a96cc85748d551
|
|
BLAKE2b-256 checksum How to use checksums |
f19bca47f846c7382beb05d97f90f3fa66c858bec4500670d2e2fe1e482a50d5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 12, 2026.
Transparency logRelease files / swingmusic-3.0.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | swingmusic-3.0.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 3.0 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
f026bfb15778c9d883f1c80e1e96a42fcb6776b43ed785c40f62723a514727ea
|
|
BLAKE2b-256 checksum How to use checksums |
abce0a62802de49964a48d3cd7cb57865ef3d073a2aea4726aa5a78ef2afcfaf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 12, 2026.
Transparency logRelease files / swingmusic-3.0.1-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | swingmusic-3.0.1-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
c04a373cdb35a2ec765976c98629ab84723b96e3ce88f3a59400a28aa78fb8ea
|
|
BLAKE2b-256 checksum How to use checksums |
a609f6e07916eb18fc920bc31a850a7cd50354cc4bcc876073de882b62b976c0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 12, 2026.
Transparency logRelease files / swingmusic-3.0.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | swingmusic-3.0.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 3.0 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
3df7d7694038b5f9b3e5f12120a4c782a743dc5492eac39010a2cca5b2b09e15
|
|
BLAKE2b-256 checksum How to use checksums |
a9ff1ee037b835d05c5cd7c3e609a1a9fbf9cc8252870dd73f8ed06a3f9e9681
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 12, 2026.
Transparency logRelease files / swingmusic-3.0.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | swingmusic-3.0.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 2.8 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
cd49fd7bdd307f93874e83cb6879b545c806d241e98b2a196e454de5c5384e74
|
|
BLAKE2b-256 checksum How to use checksums |
f0e5b3aad8c55c0fc405025e982472edf0a3cec6fb5eb9ba6c8e11e4e001c877
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 12, 2026.
Transparency logRelease files / swingmusic-3.0.1-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | swingmusic-3.0.1-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
e08cd2028bb6e28984916c86b1d25ecd0dfd436d8e2159721b8f6400e76d7897
|
|
BLAKE2b-256 checksum How to use checksums |
ccf87f495616c661f767cf06974af800cd70ada492637ec18f892548f31c13d2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 12, 2026.
Transparency log