Release migration#
DeviceIOHub rename#
Update services/xr-media-hub/ to services/device-io-hub/, the
xr-media-hub distribution to device-io-hub, and the xr_media_hub import
and command to device_io_hub. Rename xr_media_hub.yaml to
device_io_hub.yaml and XR_MEDIA_HUB_NO_WEB_CLIENT to
DEVICE_IO_HUB_NO_WEB_CLIENT. The rename has no compatibility aliases.
Operator-visible runtime changes#
DeviceIOHub no longer falls back to embedded LiveKit development credentials. Set
api_keyandapi_secretindevice_io_hub.yaml, or injectLIVEKIT_API_KEYandLIVEKIT_API_SECRETthrough the environment.Boolean service settings now require YAML booleans or the strings
true,false,yes,no,on,off,1, or0(case-insensitive). Numeric1/0, null values, and arbitrary strings now fail at startup instead of being interpreted by Python truthiness. This applies to vLLM eager, tool, and scheduling flags, Nemotron-Omni BF16 selection, voice-gatelistening_chime, lab-monitoringcapture_marker_scans, and tea-workflowcomplete_on_skip.Return audio is paced before IPC by the built-in voice transport and bounded independently for each participant in DeviceIOHub.
return_audio_max_buffer_sdefaults to 3 seconds; a custom or faulty producer that exceeds the queued-audio duration limit loses its oldest queued frames. The built-in voice transport requires at least0.12to maintain its 120 ms reserve. Increase the value for intentionally bursty custom producers, or decrease it for a tighter memory and latency bound when using a compatible custom producer.
Local speech service#
The local speech service changed from Piper to Pocket TTS with no compatibility
alias. Replace the piper_tts model preset, piper_tts_server command, and
services/piper-tts/ path with pocket_tts, pocket_tts_server, and
services/pocket-tts/. Pocket TTS voice names differ from Piper voice names;
the checked-in profiles use the CC0 bill_boerst voice.
Removed SDK compatibility surfaces#
This release removes deprecated SDK aliases and the standalone Pipecat compatibility package. Update out-of-tree code as follows:
Removed surface |
Replacement |
|---|---|
|
Import |
|
Put application behavior in an |
|
Configure |
|
Construct |
|
Configure |
|
Import the unchanged tuning model from |
|
Subscribe to the application query topic carrying |
|
Subscribe to application topics carrying |
|
Publish a finite |
|
Configure |
|
Construct services through |
|
Pass additional readiness callables through |
|
Let |
|
|
|
Import public names directly from |
|
Select with |
|
Select with |
Recorded |
Use |
|
Subtract the offset in the caller and use |
|
Read the canonical exported-frame location from |
|
Initialize |
Implicit development credentials from |
Pass a |
Pipecat remains an internal implementation detail of xr-ai-voice; applications
no longer assemble or subclass its frame processors.
The source directories now match their Python imports:
agent-sdk/xr-ai-hub-client/ became agent-sdk/xr-ai-hub/ and
agent-sdk/xr-ai-agent-runtime/ became agent-sdk/xr-ai-runtime/. Distribution
names remain xr-ai-hub-client and xr-ai-agent-runtime, so package dependency
names do not change.
If upgrading a checkout that already downloaded model weights, follow the model-cache migration to reuse the ignored caches rather than downloading them again.