feat(realtime): add speed=fast option and supportedSpeeds model capability - #13
Merged
AdirAmsalem merged 3 commits intoSep 24, 2026
Conversation
…ility
Add `decart::Speed { Fast }` with `toString(Speed)` -> "fast", an optional
`ConnectOptions::speed` that appends `speed=fast` to the signaling URL (omitted
when unset, so the default URL is byte-identical), and
`ModelDefinition::supportedSpeeds` advertising fast mode on lucy-2.5,
lucy-latest, lucy-vton-3.5 and lucy-vton-latest only. Requesting a speed on a
model without it logs a warning and still sends the parameter.
Extract the signaling URL construction into the pure detail helper
`buildStreamUrl` so it is unit-testable without LiveKit, and document
`resolution`/`speed` in the README and the warmup example.
Keep the pre-existing positional aggregate initializer shape of ConnectOptions compiling unchanged by placing the new optional speed field last, and pin that shape with a compile-check test.
AdirAmsalem
marked this pull request as ready for review
September 24, 2026 05:55
AdirAmsalem
deleted the
conductor/fast-mode-speed-fast-realtime-option-decart-cpp
branch
September 24, 2026 05:56
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Adds an optional realtime fast mode to the C++ SDK, matching the
speedoption in the other Decart SDKs.Fast mode (
speed=fast) serves the session from a higher-compute tier for lower latency and higher throughput; output quality is unchanged. It is currently available forlucy-2.5/lucy-latestandlucy-vton-3.5/lucy-vton-latest, in the US region only, and is billed at 2x the standard realtime rate for those models. Other models ignore the option (the SDK logs a warning). Omit it (the default) for standard mode.Callers can discover which models advertise fast mode through
ModelDefinition::supportedSpeeds. The README now documentsspeedalongside the previously undocumentedresolutionoption, andexamples/realtime_warmupopts in whenDECART_SPEED=fastis set.Usage
Verification
The realtime preset could not be linked on the authoring machine; CI on a supported distro runs
ctestfor it. CI pins LiveKit 1.11.0 because upstream's latest release is asset-less; unpin when fixed upstream.Live test (production signaling, 2026-09-23 ~15:05Z)
Ran the SDK's own URL builder and
SignalingChannel::openAndJoinagainstwss://api3.decart.ai/v1/streamwith a test key supplied viaDECART_API_KEY. Each run sentlivekit_join, receivedlivekit_room_info, and closed within about one second.model=lucy-2.5Speed::Fastmodel=lucy-2.5&speed=fastSpeed::Fastmodel=lucy-vton-3.5&speed=fastSpeed::Fastmodel=lucy-2.1&speed=fastCompatibility
Positional aggregate-initializer compatible: with
speedunset the signaling URL is unchanged (pinned by test); no model ids, aliases, defaults, or version change. The new fields are appended last, so existing positional aggregate initializers ofConnectOptionsandModelDefinitionremain compatible (pinned by test), while structured bindings (element count 11->12 and 5->6) and binary layouts change, so consumers must rebuild against this version.Open workspace in Conductor