Case
aiosendspin -> sendspin-rs
Start the server first, then the client. The client discovers or looks up the server, initiates the WebSocket connection, advertises PCM as its only supported audio format, streams audio derived from almost_silent.flac, and compares canonical PCM hashes.
Server
aiosendspin
Client
sendspin-rs
Status
Passed
PCM hashes match exactly
Inspection
Summaries, logs, and builds
Matrix result
RAW{
"case_dir": "artifacts/results/data/macos__client-initiated-pcm__aiosendspin__to__sendspin-rs",
"client_exit_code": 0,
"client_impl": "sendspin-rs",
"reason": "PCM hashes match exactly",
"scenario_id": "client-initiated-pcm",
"server_exit_code": 0,
"server_impl": "aiosendspin",
"status": "passed"
}Server summary (JSON)
RAW{
"audio": {
"bit_depth": 16,
"channels": 1,
"clip_seconds": 5.0,
"duration_seconds": 5.0,
"fixture": "/Users/runner/work/conformance/conformance/repos/sendspin-cli/tests/fixtures/almost_silent.flac",
"frame_alignment_samples": null,
"frame_count": 40000,
"sample_rate": 8000,
"sent_audio_chunk_count": 200,
"sent_codec_header_sha256": null,
"sent_encoded_byte_count": 80000,
"sent_encoded_sha256": "b3481a3f75dea856a961e7842d12f8344c7147b3925f9f0b67c5445700bd4cf2",
"source_flac_sha256": "8fdda8244e318c63cd8b699fe461cd7cdddbb729327a0ba00d1bfdbe2192fe17",
"source_pcm_sha256": "9d447b5b270bc99b45bb9a616937e436c941ca56c477f9cbe16a93275a6b059e",
"trimmed_source_frames": 0
},
"client": {
"active_roles": [
"player@v1"
],
"client_id": "sendspin-rs-client-id",
"name": "sendspin-rs-client",
"supported_roles": [
"player@v1"
]
},
"discovery_method": "registry_advertised",
"implementation": "aiosendspin",
"initiator_role": "client",
"peer_hello": {
"payload": {
"client_id": "sendspin-rs-client-id",
"device_info": {
"manufacturer": "Sendspin Conformance",
"product_name": "sendspin-rs Conformance Client",
"software_version": "0.1.0"
},
"name": "sendspin-rs-client",
"player@v1_support": {
"buffer_capacity": 2000000,
"supported_commands": [
"volume",
"mute"
],
"supported_formats": [
{
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"sample_rate": 8000
}
]
},
"supported_roles": [
"player@v1"
],
"version": 1
},
"type": "client/hello"
},
"preferred_codec": "pcm",
"role": "server",
"scenario_id": "client-initiated-pcm",
"server_id": "aiosendspin-server",
"server_name": "aiosendspin server",
"status": "ok",
"stream": {
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"codec_header": null,
"sample_rate": 8000
}
}Server log
RAWINFO:aiosendspin.server.server:Starting Sendspin server on port 18933
INFO:aiosendspin.server.server:Sendspin server started successfully on 127.0.0.1:18933
WARNING:aiosendspin.server.server:No IP addresses available for mDNS advertising. Clients may not be able to discover this server. Consider specifying addresses manually via advertise_addresses.
{
"audio": {
"bit_depth": 16,
"channels": 1,
"clip_seconds": 5.0,
"duration_seconds": 5.0,
"fixture": "/Users/runner/work/conformance/conformance/repos/sendspin-cli/tests/fixtures/almost_silent.flac",
"frame_alignment_samples": null,
"frame_count": 40000,
"sample_rate": 8000,
"sent_audio_chunk_count": 200,
"sent_codec_header_sha256": null,
"sent_encoded_byte_count": 80000,
"sent_encoded_sha256": "b3481a3f75dea856a961e7842d12f8344c7147b3925f9f0b67c5445700bd4cf2",
"source_flac_sha256": "8fdda8244e318c63cd8b699fe461cd7cdddbb729327a0ba00d1bfdbe2192fe17",
"source_pcm_sha256": "9d447b5b270bc99b45bb9a616937e436c941ca56c477f9cbe16a93275a6b059e",
"trimmed_source_frames": 0
},
"client": {
"active_roles": [
"player@v1"
],
"client_id": "sendspin-rs-client-id",
"name": "sendspin-rs-client",
"supported_roles": [
"player@v1"
]
},
"discovery_method": "registry_advertised",
"implementation": "aiosendspin",
"initiator_role": "client",
"peer_hello": {
"payload": {
"client_id": "sendspin-rs-client-id",
"device_info": {
"manufacturer": "Sendspin Conformance",
"product_name": "sendspin-rs Conformance Client",
"software_version": "0.1.0"
},
"name": "sendspin-rs-client",
"player@v1_support": {
"buffer_capacity": 2000000,
"supported_commands": [
"volume",
"mute"
],
"supported_formats": [
{
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"sample_rate": 8000
}
]
},
"supported_roles": [
"player@v1"
],
"version": 1
},
"type": "client/hello"
},
"preferred_codec": "pcm",
"role": "server",
"scenario_id": "client-initiated-pcm",
"server_id": "aiosendspin-server",
"server_name": "aiosendspin server",
"status": "ok",
"stream": {
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"codec_header": null,
"sample_rate": 8000
}
}
INFO:aiohttp.access:127.0.0.1 [16/May/2026:05:35:19 +0000] "GET /sendspin HTTP/1.1" 101 0 "-" "-"
Client summary (JSON)
RAW{
"audio": {
"audio_chunk_count": 200,
"received_encoded_sha256": "b3481a3f75dea856a961e7842d12f8344c7147b3925f9f0b67c5445700bd4cf2",
"received_pcm_sha256": "9d447b5b270bc99b45bb9a616937e436c941ca56c477f9cbe16a93275a6b059e",
"received_sample_count": 40000
},
"client_id": "sendspin-rs-client-id",
"client_name": "sendspin-rs-client",
"implementation": "sendspin-rs",
"initiator_role": "client",
"peer_hello": null,
"preferred_codec": "pcm",
"reason": null,
"role": "client",
"scenario_id": "client-initiated-pcm",
"server": {
"active_roles": [
"player@v1"
],
"connection_reason": "playback",
"name": "aiosendspin server",
"server_id": "aiosendspin-server",
"version": 1
},
"status": "ok",
"stream": {
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"codec_header": null,
"sample_rate": 8000
}
}Client log
RAW{"audio":{"audio_chunk_count":200,"received_encoded_sha256":"b3481a3f75dea856a961e7842d12f8344c7147b3925f9f0b67c5445700bd4cf2","received_pcm_sha256":"9d447b5b270bc99b45bb9a616937e436c941ca56c477f9cbe16a93275a6b059e","received_sample_count":40000},"client_id":"sendspin-rs-client-id","client_name":"sendspin-rs-client","implementation":"sendspin-rs","initiator_role":"client","peer_hello":null,"preferred_codec":"pcm","reason":null,"role":"client","scenario_id":"client-initiated-pcm","server":{"active_roles":["player@v1"],"connection_reason":"playback","name":"aiosendspin server","server_id":"aiosendspin-server","version":1},"status":"ok","stream":{"bit_depth":16,"channels":1,"codec":"pcm","codec_header":null,"sample_rate":8000}}Server build log · python-adapters · built · 0.07s
RAWListing 'src'... Listing 'src/conformance'... Listing 'src/conformance/adapters'... Compiling 'src/conformance/adapters/__init__.py'... Compiling 'src/conformance/adapters/aiosendspin_client.py'... Compiling 'src/conformance/adapters/aiosendspin_server.py'... Compiling 'src/conformance/adapters/placeholder.py'... Compiling 'src/conformance/adapters/sendspin_jvm_client.py'... Compiling 'src/conformance/cli.py'... Compiling 'src/conformance/merge.py'... Compiling 'src/conformance/registry.py'... Listing 'src/sendspin_conformance.egg-info'... Listing 'scripts'... Compiling 'scripts/detect_regressions.py'... Compiling 'scripts/merge_results.py'... Compiling 'scripts/run_all.py'... Compiling 'scripts/setup_repositories.py'... Compiling 'scripts/setup_workspace.py'...
Client build log · sendspin-rs-client · built · 41.17s
RAW[92m Compiling[0m zerocopy v0.8.42 [1m[92m Compiling[0m crossbeam-utils v0.8.21 [1m[92m Compiling[0m block2 v0.6.2 [1m[92m Compiling[0m dispatch2 v0.3.1 [1m[92m Compiling[0m objc2-core-foundation v0.3.2 [1m[92m Compiling[0m block-buffer v0.10.4 [1m[92m Compiling[0m crypto-common v0.1.7 [1m[92m Compiling[0m getrandom v0.2.17 [1m[92m Compiling[0m serde_core v1.0.228 [1m[92m Compiling[0m parking_lot_core v0.9.12 [1m[92m Compiling[0m rand_core v0.6.4 [1m[92m Compiling[0m digest v0.10.7 [1m[92m Compiling[0m objc2-foundation v0.3.2 [1m[92m Compiling[0m objc2-core-audio-types v0.3.2 [1m[92m Compiling[0m cpufeatures v0.2.17 [1m[92m Compiling[0m bytes v1.11.1 [1m[92m Compiling[0m itoa v1.0.17 [1m[92m Compiling[0m ppv-lite86 v0.2.21 [1m[92m Compiling[0m scopeguard v1.2.0 [1m[92m Compiling[0m smallvec v1.15.1 [1m[92m Compiling[0m thiserror v1.0.69 [1m[92m Compiling[0m httparse v1.10.1 [1m[92m Compiling[0m rand_chacha v0.3.1 [1m[92m Compiling[0m lock_api v0.4.14 [1m[92m Compiling[0m thiserror-impl v1.0.69 [1m[92m Compiling[0m errno v0.3.14 [1m[92m Compiling[0m pin-project-lite v0.2.17 [1m[92m Compiling[0m utf8parse v0.2.2 [1m[92m Compiling[0m zmij v1.0.21 [1m[92m Compiling[0m getrandom v0.4.2 [1m[92m Compiling[0m anstyle-parse v0.2.7 [1m[92m Compiling[0m signal-hook-registry v1.4.8 [1m[92m Compiling[0m parking_lot v0.12.5 [1m[92m Compiling[0m rand v0.8.5 [1m[92m Compiling[0m http v1.4.0 [1m[92m Compiling[0m sha1 v0.10.6 [1m[92m Compiling[0m futures-macro v0.3.32 [1m[92m Compiling[0m tokio-macros v2.6.1 [1m[92m Compiling[0m crossbeam-epoch v0.9.18 [1m[92m Compiling[0m socket2 v0.6.3 [1m[92m Compiling[0m mio v1.1.1 [1m[92m Compiling[0m futures-task v0.3.32 [1m[92m Compiling[0m anstyle-query v1.1.5 [1m[92m Compiling[0m log v0.4.29 [1m[92m Compiling[0m futures-sink v0.3.32 [1m[92m Compiling[0m is_terminal_polyfill v1.70.2 [1m[92m Compiling[0m data-encoding v2.10.0 [1m[92m Compiling[0m anstyle v1.0.13 [1m[92m Compiling[0m colorchoice v1.0.4 [1m[92m Compiling[0m byteorder v1.5.0 [1m[92m Compiling[0m utf-8 v0.7.6 [1m[92m Compiling[0m serde v1.0.228 [1m[92m Compiling[0m cpal v0.17.3 [1m[92m Compiling[0m serde_json v1.0.149 [1m[92m Compiling[0m futures-core v0.3.32 [1m[92m Compiling[0m slab v0.4.12 [1m[92m Compiling[0m tungstenite v0.24.0 [1m[92m Compiling[0m futures-util v0.3.32 [1m[92m Compiling[0m anstream v0.6.21 [1m[92m Compiling[0m tokio v1.50.0 [1m[92m Compiling[0m crossbeam-deque v0.8.6 [1m[92m Compiling[0m typed-builder-macro v0.23.2 [1m[92m Compiling[0m serde_derive v1.0.228 [1m[92m Compiling[0m objc2-core-audio v0.3.2 [1m[92m Compiling[0m objc2-audio-toolbox v0.3.2 [1m[92m Compiling[0m coreaudio-rs v0.14.0 [1m[92m Compiling[0m crossbeam-queue v0.3.12 [1m[92m Compiling[0m crossbeam-channel v0.5.15 [1m[92m Compiling[0m mach2 v0.5.0 [1m[92m Compiling[0m clap_lex v1.0.0 [1m[92m Compiling[0m dasp_sample v0.11.0 [1m[92m Compiling[0m heck v0.5.0 [1m[92m Compiling[0m memchr v2.8.0 [1m[92m Compiling[0m strsim v0.11.1 [1m[92m Compiling[0m clap_builder v4.5.60 [1m[92m Compiling[0m clap_derive v4.5.55 [1m[92m Compiling[0m crossbeam v0.8.4 [1m[92m Compiling[0m tokio-tungstenite v0.24.0 [1m[92m Compiling[0m typed-builder v0.23.2 [1m[92m Compiling[0m uuid v1.22.0 [1m[92m Compiling[0m clap v4.5.60 [1m[92m Compiling[0m sha2 v0.10.9 [1m[92m Compiling[0m sendspin v0.2.0 (/Users/runner/work/conformance/conformance/repos/sendspin-rs) [1m[92m Compiling[0m conformance-sendspin-rs-client v0.1.0 (/Users/runner/work/conformance/conformance/adapters/sendspin-rs/client) [1m[92m Finished[0m `dev` profile [unoptimized + debuginfo] target(s) in 40.97s