Skip to main content

Synchronized audio player for Sendspin servers

Project description

sendspin

pypi_badge

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:

When using an explicit app (daemon, serve, or player), put it immediately after sendspin. For example, use sendspin daemon --name Kitchen, not sendspin --name Kitchen daemon.

Screenshot of the Sendspin terminal player

A project from the Open Home Foundation

Installation

Install as daemon (Linux):

curl -fsSL https://raw.githubusercontent.com/Sendspin/sendspin-cli/refs/heads/main/scripts/systemd/install-systemd.sh | sudo bash

With uv:

uv tool install sendspin

Support for Chromecast devices requires installation of extra dependencies:

uv tool install 'sendspin[cast]'

With pip:

pip install sendspin

Try it without installation

Run directly with uv:

Start client

uvx sendspin

Host a Sendspin party

uvx sendspin serve --demo
uvx sendspin serve /path/to/media.mp3
uvx sendspin serve https://retro.dancewave.online/retrodance.mp3

Updating

To update to the latest version of Sendspin:

If installed with uv:

uv tool upgrade sendspin

If installed with pip:

pip install --upgrade sendspin

If installed as systemd daemon:

The systemd daemon preserves your configuration during updates. Simply upgrade the package:

# Upgrade sendspin (the daemon installer uses uv by default)
uv tool upgrade sendspin

# Restart the service to use the new version
sudo systemctl restart sendspin

Your client name, audio device selection, and other settings in ~/.config/sendspin/settings-daemon.json are preserved during the update.

Note: You do not need to uninstall and reinstall when updating. Your configuration (client name, audio device, delay settings) is stored separately and will be preserved.

Configuration Options

Sendspin stores settings in JSON configuration files that persist between sessions. All command-line arguments can also be set in the config file, with CLI arguments taking precedence over stored settings.

Configuration File

Settings are stored in ~/.config/sendspin/:

  • settings-tui.json - Settings for the interactive TUI client
  • settings-daemon.json - Settings for daemon mode
  • settings-serve.json - Settings for serve mode

Example configuration file (TUI/daemon):

{
  "player_volume": 50,
  "player_muted": false,
  "static_delay_ms": 0,
  "last_server_url": "ws://192.168.1.100:8927/sendspin",
  "name": "Living Room",
  "client_id": "sendspin-living-room",
  "audio_device": "2",
  "audio_format": "flac:48000:24:2",
  "log_level": "INFO",
  "listen_port": 8927,
  "use_mpris": true,
  "use_hardware_volume": true,
  "hook_set_volume": "/usr/local/bin/set-avr-volume",
  "manufacturer": "Acme Corp",
  "product_name": "Living Room Speaker",
  "interface": "192.168.1.5"
}

Example configuration file (serve):

{
  "log_level": "INFO",
  "listen_port": 8927,
  "name": "My Sendspin Server",
  "source": "/path/to/music.mp3",
  "clients": ["ws://192.168.1.50:8927/sendspin", "ws://192.168.1.51:8927/sendspin"]
}

Available settings:

Setting Type Mode Description
player_volume integer (0-100) TUI/daemon Player output volume percentage
player_muted boolean TUI/daemon Whether the player is muted
static_delay_ms float TUI/daemon Extra playback delay in milliseconds
last_server_url string TUI/daemon Server URL (used as default for --url)
name string All Friendly name for client or server (--name)
client_id string TUI/daemon Unique client identifier (--id)
audio_device string TUI/daemon Audio device index, name prefix, or ALSA device name (--audio-device)
audio_format string TUI/daemon Preferred audio format (--audio-format, e.g., flac:48000:24:2)
log_level string All Logging level: DEBUG, INFO, WARNING, ERROR, CRITICAL
listen_port integer daemon/serve Listen port (--port, default: 8927)
use_mpris boolean TUI/daemon Enable MPRIS integration (default: true)
use_hardware_volume boolean TUI/daemon Control hardware/system output volume instead of software volume (--hardware-volume true/false). Default: on for daemon (if available), off for TUI
hook_set_volume string TUI/daemon Script to run for external volume control (--hook-set-volume). Receives the effective volume 0-100 as the last argument
hook_start string TUI/daemon Command to run when audio stream starts
hook_stop string TUI/daemon Command to run when audio stream stops
manufacturer string TUI/daemon Manufacturer name reported in the client hello (--manufacturer)
product_name string TUI/daemon Product name reported in the client hello (--product-name); defaults to auto-detected OS/platform name
interface string TUI/daemon IP address of the network interface to use (--interface)
visualizer boolean TUI Render the visualizer@v1 audio visualizer on launch (default: false). Toggle with v in the TUI
source string serve Default audio source (file path or URL, ffmpeg input)
source_format string serve ffmpeg container format for audio source
clients array serve Client URLs to connect to (--client)

Settings are automatically saved when changed through the TUI. You can also edit the JSON file directly while the client is not running.

Server Connection

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/sendspin

List available servers on the network:

sendspin servers list

Client Identification

If 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 to sendspin-<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 player uses your system's default audio output device. You can list available devices or select a specific device:

List available audio devices:

sendspin audio-devices list

This 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 2

Or by name prefix:

sendspin --audio-device "MacBook"

Or by raw ALSA device name (Linux):

sendspin --audio-device dmixer

This is useful for ALSA plugin devices (dmix, plug, etc.) that may not appear in the numbered PortAudio device list (though they may be shown in the ALSA devices section on Linux). For example, in a dual mono setup where two daemons share a single sound card via dmix, each daemon can target a different ALSA device that routes to a specific channel:

# Room 1: left channel via dmix
sendspin daemon --name "Living Room" --audio-device living_room

# Room 2: right channel via dmix
sendspin daemon --name "Kitchen" --audio-device kitchen

This requires an /etc/asound.conf with dmix and plug devices that route to the appropriate channels. See your ALSA documentation for details on configuring dmix.

This is particularly useful when running sendspin daemon on headless devices or when you want to route audio to a specific output.

Preferred Audio Format

By default, the player negotiates the best audio format with the server from the list of formats supported by your audio device (preferring FLAC over PCM). You can specify a preferred format to prioritize:

sendspin --audio-format flac:48000:24:2

The format string uses the pattern codec:sample_rate:bit_depth:channels:

  • codec: flac (compressed, preferred) or pcm (uncompressed)
  • sample_rate: Sample rate in Hz (e.g., 44100, 48000, 96000)
  • bit_depth: Bits per sample (16 or 24)
  • channels: Channel count (1 for mono, 2 for stereo)

The specified format is validated against the audio device on startup. If the device doesn't support it, the player will exit with an error.

System Volume Control

On Linux with PulseAudio/PipeWire, Sendspin can control your system output volume directly. Volume adjustments (keyboard shortcuts, server commands) change the system volume. The current system volume is read on startup — the player_volume and player_muted settings are only used when hardware volume is disabled.

Hardware volume is on by default in daemon mode and off by default in TUI mode. To override:

sendspin --hardware-volume true             # Enable for TUI
sendspin daemon --hardware-volume false     # Disable for daemon

If your real volume control lives on another device, you can hand volume changes off to a script instead:

sendspin daemon --hook-set-volume /usr/local/bin/set-avr-volume

The script receives the effective output volume as its last argument in the range 0-100. When the player is muted, Sendspin calls the script with 0 and keeps the last logical player_volume persisted separately so unmuting restores the previous level.

Because Sendspin cannot read back external device state from the hook, startup volume comes from the persisted player_volume and player_muted settings. Those settings are updated whenever Sendspin successfully applies a new volume through the hook. When hook_set_volume is configured, it takes precedence over PulseAudio/PipeWire hardware volume control.

Adjusting Playback Delay

The player supports adjusting playback delay to compensate for audio hardware latency or achieve better synchronization across devices.

sendspin --static-delay-ms 50

Note: A delay of 0ms works well in most cases. If audio is playing slightly too late, a small positive delay (e.g., 50ms) can help compensate for audio hardware latency. On compatible servers, delay can be configured remotely per player, so you shouldn't need to set this locally.

Daemon Mode

To run the player as a background daemon without the interactive TUI (useful for headless devices or scripts):

sendspin daemon

The 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 2

In daemon mode without --url, the client listens for incoming server connections and advertises itself via mDNS. The --name option (or name setting) is used as the friendly name in the mDNS advertisement, making it easy for servers to identify this client on the network.

Use --manufacturer and --product-name to override the device identity reported to the server in the client hello. This is useful when running the daemon in a container or on a custom device where the auto-detected OS name is not meaningful:

sendspin daemon --name "Living Room" --manufacturer "Acme" --product-name "Living Room Speaker"

Hooks

You can run external commands when audio streams start or stop. This is useful for controlling amplifiers, lighting, or other home automation:

sendspin --hook-start "./turn_on_amp.sh" --hook-stop "./turn_off_amp.sh"

Or with inline commands:

sendspin daemon --hook-start "amixer set Master unmute" --hook-stop "amixer set Master mute"

--hook-set-volume is separate from these stream lifecycle hooks. It is intended for external volume controllers and receives the effective output volume as its last argument.

Hooks receive these environment variables:

  • SENDSPIN_EVENT - Event type: "start" or "stop"
  • SENDSPIN_SERVER_ID - Connected server identifier
  • SENDSPIN_SERVER_NAME - Connected server friendly name
  • SENDSPIN_SERVER_URL - Connected server URL. Only available if client initiated the connection to the server.
  • SENDSPIN_CLIENT_ID - Client identifier
  • SENDSPIN_CLIENT_NAME - Client friendly name

Visualizer

The TUI includes a real-time audio visualizer driven by the visualizer@v1 role. All analysis is computed on the server and streamed to the TUI, time-aligned to the audio playhead. It shows:

  • Spectrum bars — frequency magnitude across the range, tinted by overall loudness (and by the album-artwork palette when the server provides one).
  • Beats timeline — a beats (NNN BPM): strip with the estimated tempo; downbeats render differently from regular beats.
  • Peaks timeline — a peaks: strip of energy onsets (transients like drum hits), independent of the beat grid, with glyph height scaled by onset strength.
  • Pitch — the perceived musical note (e.g. A4) with an arrow pointing at its position on the spectrum, shown whenever a pitch is detected.
  • Dominant frequency — an f_peak: readout with an arrow marking the loudest frequency on the spectrum.

Lower rows are dropped first on short terminals, keeping the spectrum visible.

Toggle the visualizer by pressing v in the TUI. Your preference is saved in settings and remembered on next launch.

Debugging & Troubleshooting

If you experience synchronization issues or audio glitches, you can enable detailed logging to help diagnose the problem:

sendspin --log-level DEBUG

This provides detailed information about time synchronization. The output can be helpful when reporting issues.

Network Interface Binding

On machines with multiple network interfaces (e.g., a home server with both a LAN and a WAN/internet interface), you can restrict Sendspin to a specific interface using --interface:

sendspin --interface 192.168.1.5
sendspin daemon --interface 192.168.1.5

The --interface option takes the IP address of the interface to use. This affects:

  • mDNS discovery: only servers advertising on that interface will be found.
  • Daemon listening mode (no --url): the incoming-connection server binds only to that IP, so servers on other interfaces (e.g., the WAN) cannot connect.

This is useful when you want Sendspin to be accessible only on your LAN, not on the internet-facing interface.

Install as Daemon (systemd, Linux)

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 bash

The 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 logs

Configuration: Edit ~/.config/sendspin/settings-daemon.json to change client name, audio device, or other settings.

Uninstall:

curl -fsSL https://raw.githubusercontent.com/Sendspin/sendspin-cli/refs/heads/main/scripts/systemd/uninstall-systemd.sh | sudo bash

Sendspin Party

The 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
# Connect to specific clients
sendspin serve --demo --client ws://192.168.1.50:8927/sendspin --client ws://192.168.1.51:8927/sendspin

Multi-Worker Mode

For serving many concurrent listeners, use --workers to run multiple server processes behind a reverse proxy:

sendspin serve --demo --workers 4

This spawns 4 worker processes on consecutive ports starting from --port (default 8927), so ports 8927-8930. Place a reverse proxy (e.g., nginx, Caddy) in front with load balancing across these ports.

Note: --client is not supported with --workers.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sendspin-7.4.0.tar.gz (130.9 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

sendspin-7.4.0-cp313-cp313-win_amd64.whl (133.3 kB view details)

Uploaded CPython 3.13Windows x86-64

sendspin-7.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (138.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

sendspin-7.4.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (139.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

sendspin-7.4.0-cp313-cp313-macosx_11_0_arm64.whl (132.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

sendspin-7.4.0-cp313-cp313-macosx_10_13_x86_64.whl (131.1 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

sendspin-7.4.0-cp312-cp312-win_amd64.whl (133.3 kB view details)

Uploaded CPython 3.12Windows x86-64

sendspin-7.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (138.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

sendspin-7.4.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (139.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

sendspin-7.4.0-cp312-cp312-macosx_11_0_arm64.whl (132.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

sendspin-7.4.0-cp312-cp312-macosx_10_13_x86_64.whl (131.1 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

File details

Details for the file sendspin-7.4.0.tar.gz.

File metadata

  • Download URL: sendspin-7.4.0.tar.gz
  • Upload date:
  • Size: 130.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sendspin-7.4.0.tar.gz
Algorithm Hash digest
SHA256 ac72bbfeb3b5a9f85a8869658121276251512652ea5db73b7db6ec39cec38a94
MD5 9c64e1efc4e50a883e15ccb82ea7efd8
BLAKE2b-256 18b648d52c75f1098ebf6cec3f2e19212e388960b9e2b7788da7dcffc73fa2bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for sendspin-7.4.0.tar.gz:

Publisher: release.yml on Sendspin/sendspin-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sendspin-7.4.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: sendspin-7.4.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 133.3 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sendspin-7.4.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 58c89f36cea49cb44b8a65f100ce618f65c1acd88e906f3efed71f23f6fb9a6d
MD5 a99505c41bbb1621a7a5bf28a4b6a87b
BLAKE2b-256 531df212e45aa55e50458777a79eb877e15fe31cd223f20305702a79ad0beb51

See more details on using hashes here.

Provenance

The following attestation bundles were made for sendspin-7.4.0-cp313-cp313-win_amd64.whl:

Publisher: release.yml on Sendspin/sendspin-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sendspin-7.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for sendspin-7.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 93a31b81b55d2c074a363cd35b58314b165bb869badd25e632c0a81bcb86cf61
MD5 b35ce02837fc48b75f528fb92ef98622
BLAKE2b-256 f9732a38c1f2e589a94ce1002cc3a50e8393295f71557aa2aa28b828eff3387e

See more details on using hashes here.

Provenance

The following attestation bundles were made for sendspin-7.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on Sendspin/sendspin-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sendspin-7.4.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for sendspin-7.4.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 e3dc0a0e3032bb7ae1b827c55d7005ae85a55c3567df7d199887664f40d0d49e
MD5 7a626142bb4b70c48fa9996f08be385a
BLAKE2b-256 8d36bf5e164d4bcf3eec29782c304e04e23d1ff82902dd3695dc823d6b6cada7

See more details on using hashes here.

Provenance

The following attestation bundles were made for sendspin-7.4.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:

Publisher: release.yml on Sendspin/sendspin-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sendspin-7.4.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sendspin-7.4.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1ffcbf0c4a9cc68bb609b8d445718659022d8f62ce4cd418cb26d06675d9a577
MD5 2b6f12ab35b7e993d12a99dce677c408
BLAKE2b-256 da500779669494731f482a65b1e20cd7fef7c7c770bff556066a39424526f6a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for sendspin-7.4.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on Sendspin/sendspin-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sendspin-7.4.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for sendspin-7.4.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 1d9e3a664bdf015946c5a96faacaf9db69fcbc2bdcc464dc0f39762537e7707f
MD5 118c5ca5e45172fcd30101a8963d4410
BLAKE2b-256 49abaccb54d34ec9aa67eb065cb7829dcc63774c66fb554b2cc216f3a9431a12

See more details on using hashes here.

Provenance

The following attestation bundles were made for sendspin-7.4.0-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: release.yml on Sendspin/sendspin-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sendspin-7.4.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: sendspin-7.4.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 133.3 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sendspin-7.4.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 189eeb97b968286af15d5a1c8de424d436d72256e304cb9cc431e7fa133a5ed8
MD5 c28b6b87f2397ddfcf47a8766e176371
BLAKE2b-256 f3060cfa64f64aada0ee157e9a761a70803dfe1c28d5bd80e75b2ef760740cbf

See more details on using hashes here.

Provenance

The following attestation bundles were made for sendspin-7.4.0-cp312-cp312-win_amd64.whl:

Publisher: release.yml on Sendspin/sendspin-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sendspin-7.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for sendspin-7.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 12fd6a0aacf41ec30797b10636043af2cad90eae59ea3bf7a1655a11912ff254
MD5 f52a9ab641310f48f7b26654b0ece7a9
BLAKE2b-256 adf1cfd2720e4736650ead36f9a030abd958f6e8efb0c01d264d975324786567

See more details on using hashes here.

Provenance

The following attestation bundles were made for sendspin-7.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on Sendspin/sendspin-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sendspin-7.4.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for sendspin-7.4.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 fb973ccebe707b717f6dd0e0f249359e990b1073dcabf3a7b9ffdebcf7db091b
MD5 86340858c00a3bd6f16cc9cf15153d02
BLAKE2b-256 2d0d154a191e9f5a273fe080f2058aaf527b364b28326287e5b603bde4acd1dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for sendspin-7.4.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:

Publisher: release.yml on Sendspin/sendspin-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sendspin-7.4.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sendspin-7.4.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3e3ec6b888303db7a0ac3010eaaa0bf0eba128b23b07a7aa6cc20fe844176bf4
MD5 ff8284ade0f2d2fd2a51f26f7ebe5993
BLAKE2b-256 fc8c2f279c8e994990f5f19e3a98bb7ae1f80be0086aef2f49baeea7a5a34c69

See more details on using hashes here.

Provenance

The following attestation bundles were made for sendspin-7.4.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on Sendspin/sendspin-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sendspin-7.4.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for sendspin-7.4.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 5b9e89a3be028b40b6449643f4f1d3ff29c843e633ca3b881b23f358ff369571
MD5 045e17251ed6f3fb9f8585de4cf4b054
BLAKE2b-256 5b4acc8dcfffbeac36a27a048ec00dda6b33c058d5146a87a043442b9325ee56

See more details on using hashes here.

Provenance

The following attestation bundles were made for sendspin-7.4.0-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: release.yml on Sendspin/sendspin-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page