Connect to any Sendspin server and instantly turn your computer into an audio target that can participate in multi-room audio.
Sendspin CLI includes three apps:
sendspin- Terminal client for interactive usesendspin daemon- Background daemon for headless devicessendspin serve- Host a Sendspin party to demo Sendspin
Run directly with uv:
Start client
uvx sendspinHost a Sendspin party
uvx sendspin serve --demo
uvx sendspin serve /path/to/media.mp3
uvx sendspin serve https://retro.dancewave.online/retrodance.mp3With uv:
uv tool install sendspinInstall as daemon (Linux):
curl -fsSL https://raw.githubusercontent.com/Sendspin/sendspin-cli/refs/heads/main/scripts/systemd/install-systemd.sh | sudo bashWith pip:
pip install sendspinInstall from source
git clone https://github.com/Sendspin-Protocol/sendspin.git
cd sendspin
pip install .After installation, run:
sendspinThe player will automatically connect to a Sendspin server on your local network and be available for playback.
By default, the player automatically discovers Sendspin servers on your local network using mDNS. You can also connect directly to a specific server:
sendspin --url ws://192.168.1.100:8080/sendspinList available servers on the network:
sendspin --list-serversIf you want to run multiple players on the same computer, you can specify unique identifiers:
sendspin --id my-client-1 --name "Kitchen"
sendspin --id my-client-2 --name "Bedroom"--id: A unique identifier for this client (optional; defaults tosendspin-<hostname>, useful for running multiple instances on one computer)--name: A friendly name displayed on the server (optional; defaults to hostname)
By default, the player uses your system's default audio output device. You can list available devices or select a specific device:
List available audio devices:
sendspin --list-audio-devicesThis displays all audio output devices with their IDs, channel configurations, and sample rates. The default device is marked.
Select a specific audio device by index:
sendspin --audio-device 2Or by name prefix:
sendspin --audio-device "MacBook"This is particularly useful when running sendspin daemon on headless devices or when you want to route audio to a specific output.
The player supports adjusting playback delay to compensate for audio hardware latency or achieve better synchronization across devices.
sendspin --static-delay-ms -100Note: Based on limited testing, the delay value is typically a negative number (e.g.,
-100or-150) to compensate for audio hardware buffering.
To run the player as a background daemon without the interactive TUI (useful for headless devices or scripts):
sendspin daemonThe daemon runs in the background and logs status messages to stdout. It accepts the same connection and audio options as the TUI client:
sendspin daemon --name "Kitchen" --audio-device 2If you experience synchronization issues or audio glitches, you can enable detailed logging to help diagnose the problem:
sendspin --log-level DEBUGThis provides detailed information about time synchronization. The output can be helpful when reporting issues.
This player is highly experimental and has several known limitations:
- Format Support: Currently fixed to uncompressed 44.1kHz 16-bit stereo PCM
- Configuration Persistence: Settings are not persistently stored; delay must be reconfigured on each restart using the
--static-delay-msoption
For headless devices like Raspberry Pi, you can install sendspin daemon as a systemd service that starts automatically on boot.
Install:
curl -fsSL https://raw.githubusercontent.com/Sendspin/sendspin-cli/refs/heads/main/scripts/systemd/install-systemd.sh | sudo bashThe installer will:
- Check and offer to install dependencies (libportaudio2, uv)
- Install sendspin via
uv tool install - Prompt for client name and audio device selection
- Create systemd service and configuration
Manage the service:
sudo systemctl start sendspin # Start the service
sudo systemctl stop sendspin # Stop the service
sudo systemctl status sendspin # Check status
journalctl -u sendspin -f # View logsConfiguration: Edit /etc/default/sendspin to change client name, audio device, or delay settings.
Uninstall:
curl -fsSL https://raw.githubusercontent.com/Sendspin/sendspin-cli/refs/heads/main/scripts/systemd/uninstall-systemd.sh | sudo bashThe Sendspin client includes a mode to enable hosting a Sendspin Party. This will start a Sendspin server playing a specified audio file or URL in a loop, allowing nearby Sendspin clients to connect and listen together. It also hosts a web interface for easy playing and sharing. Fire up that home or office 🔥
# Demo mode
sendspin serve --demo
# Local file
sendspin serve /path/to/media.mp3
# Remote URL
sendspin serve https://retro.dancewave.online/retrodance.mp3
# Without pre-installing Sendspin
uvx sendspin serve /path/to/media.mp3