This page contains software development kits (SDK), libraries, and code samples to help you get started using Sendspin in your projects.
-
C#/.NET - Sendspin.SDK - Nuget Package
- Used by windowsSpin
-
C++ - sendspin-cpp
- Used by ESPHome
-
Go - sendspin-go
-
JavaScript - sendspin-js
- Used by Music Assistant's web interface, Google Cast receiver for Sendspin, sendspin-audio.com live demo
-
Python - aiosendspin
- Used by Music Assistant, sendspin-cli
-
Rust - sendspin-rs
- Used by Music Assistant Desktop App
-
Swift - SendspinKit
Sendspin client implementation guide
A Sendspin client is an application that can receive synchronized audio and metadata via the Sendspin protocol. Example products for the player role are any products that produce audio signals (aux, optical, analog), or connected speakers. For metadata, example products could be a wall tablet, that once included, can show the album art, metadata and offer controls for the music.
By default, the server will discover clients on the network. It is possible for clients to connect to servers directly without being discoverable. This is meant for scripts and other non-permanent processes, is not a recommended approach, and won't be covered by this guide.
Components of a Sendspin Client
A client needs to contain the following components to participate in a Sendspin network.
- mDNS server allows servers to discover the client on the network.
- HTTP WebSocket server allows servers to initiate a connection with the client.
- Sendspin core handles the communication over the websocket connection and produces a stream of time stamped audio or metadata.
The following components are optional, depending on the roles that the client wants to fulfill:
- Metadata sink is your logic to process metadata of the current song.
- Audio sink is your logic to handle the timestamped audio.
- User interface to allow the user to control the Sendspin stream.

SDK architecture
All SDKs implement Sendspin core, to handle incoming and outgoing messages. Some SDKs will also include an mDNS server, HTTP WebSocket server and an audio sink to play the audio. These are all different modules, with seperated concerns, that are up to the client to consume as needed.
Contributing
Sendspin is open source and welcomes contributions. Visit Sendspin on GitHub and the Music Assistant Discord to get involved.