aioresonate
Async Python library implementing the Resonate Protocol.
For a WIP reference implementation of a server using this library, see Music Assistant
CLI Client
Note: The CLI client is currently included in the
aioresonatelibrary for development purposes. Once the Resonate Protocol stabilizes, it will be moved to a separate repository and package. This will require users to uninstallaioresonate[cli]and install the new CLI package separately.
This repository includes a highly experimental CLI client for testing and development purposes.
Quick Start
Run directly with uv:
uvx --from "aioresonate[cli]" resonate-cli
Installation
With pip:
pip install "aioresonate[cli]"
With uv:
uv tool install "aioresonate[cli]"
Install from source
git clone https://github.com/Resonate-Protocol/aioresonate.git
cd aioresonate
pip install ".[cli]"
After installation, run:
resonate-cli
The CLI client will automatically connect to a Resonate server on your local network and be available for playback.
Configuration Options
Client Identification
If you want to run multiple CLI clients on the same computer, you can specify unique identifiers:
resonate-cli --id my-client-1 --name "Kitchen"
resonate-cli --id my-client-2 --name "Bedroom"
--id: A unique identifier for this client (optional; defaults toresonate-cli-<hostname>, useful for running multiple instances on one computer)--name: A friendly name displayed on the server (optional; defaults to hostname)
Audio Output Device Selection
By default, the CLI client uses your system's default audio output device. You can list available devices or select a specific device:
List available audio devices:
resonate-cli --list-audio-devices
This displays all audio output devices with their IDs, channel configurations, and sample rates. The default device is marked.
Select a specific audio device:
resonate-cli --audio-device 2
This is particularly useful for headless devices or when you want to route audio to a specific output.
Adjusting Playback Delay
The CLI supports adjusting playback delay to compensate for audio hardware latency or achieve better synchronization across devices.
Setting delay at startup:
resonate-cli --static-delay-ms -100
Note: Based on limited testing, the delay value is typically a negative number (e.g.,
-100or-150) to compensate for audio hardware buffering.
Adjusting delay in real-time:
While the client is running, you can use the delay command:
delay- Show current delay valuedelay <ms>- Set absolute delay (e.g.,delay -100)delay + <ms>- Increase delay (e.g.,delay + 50)delay - <ms>- Decrease delay (e.g.,delay - 25)
The synchronization will seamlessly adjust to the new delay value within a couple of seconds.
Debugging & Troubleshooting
If you experience synchronization issues or audio glitches, you can enable detailed logging to help diagnose the problem:
resonate-cli --log-level DEBUG
This provides detailed information about time synchronization. The output can be helpful when reporting issues.
Limitations & Known Issues
This client is highly experimental and has several known limitations:
- Platform Support: Only tested on Linux; macOS and Windows support untested
- Format Support: Currently fixed to uncompressed 44.1kHz 16-bit stereo PCM
- CLI User Experience: The CLI is pretty bare bones for now
- Configuration Persistence: Settings are not persistently stored; delay must be reconfigured on each restart using the
--static-delay-msoption
Metadata
Release files for aioresonate 0.13.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| aioresonate-0.13.2.tar.gz | 79.1 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aioresonate-0.13.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 166.4 kB
Release files / aioresonate-0.13.2.tar.gz
| Download URL | aioresonate-0.13.2.tar.gz |
|---|---|
| Size | 79.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0ce684bfcd01266524c93b238807bb29bd869c72b680e137b0bcacff8b40d2d0
|
|
BLAKE2b-256 checksum How to use checksums |
1f32d53abb28d05d4e4a90189bd4d64358dd772f0c27a11f57b01d4e58d8a72f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Nov 26, 2025.
Transparency logRelease files / aioresonate-0.13.2-py3-none-any.whl
| Download URL | aioresonate-0.13.2-py3-none-any.whl |
|---|---|
| Size | 87.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8d30dbb1f75c6fe9d29b02d7e29ce849b7d4a5d62145c37c696ac8dc6633598a
|
|
BLAKE2b-256 checksum How to use checksums |
f22f212c271494fbd97d6bc3ec8956acae9b015303519982c6bbfadbd0009a06
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Nov 26, 2025.
Transparency logSecurity for aioresonate 0.13.2
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for aioresonate-0.13.2.tar.gz
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 Nov 26, 2025.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.