-
egress v2: add
passthroughto theencodingoneof onStartEgressRequestandExportReplayRequest; remove the unusedEgressHandler.UpdateEgressRPC and thelivekit.UpdateEgressRequestmessage - #1716 (@frostbyte73) -
add
RoomEndReasonenum and report it on room-ended telemetry:AnalyticsEvent.room_end_reasonandWebhookEvent.room_end_reasonnow say why a room ended (ROOM_END_API_DELETE,ROOM_END_IDLE_TIMEOUT,ROOM_END_SERVER_SHUTDOWN,ROOM_END_SUPERSEDED,ROOM_END_OPEN_FAILED), so room-end volume can be broken down by cause the way participant disconnects already are - #1748 (@paulwe) -
TransferSIPParticipantnow returnsTransferSIPParticipantResponseinstead ofgoogle.protobuf.Empty, carrying the transfer id, status, a newSIPTransferReasonand the SIP status when the outcome came from a SIP response.SIPTransferInfogains the samereason. This changes the generated method signature: a transfer that reports a non-successful status without an error means the transfer did not complete. - #1730 (@genseric-ghiro) -
Moved egress passthrough option to an encoding preset. - #1718 (@frostbyte73)
-
Add
agent_job_started/agent_job_endedwebhook events and ajobfield onWebhookEvent- #1711 (@erikhortsch) -
utils/list: mutations involving a node the list does not own — removing or moving an unlinked node, inserting an already-linked node, or inserting relative to an unlinked mark — are now no-ops, as incontainer/list. Previously an unlinked node's zeroed hook madeRemove/MoveToFront/MoveToBackclear the list's head and tail, silently stranding every remaining element, and re-inserting a linked node forked the list. - #1753 (@paulwe) -
utils.PromisegainsThen(func(T, error)), registering a callback to run when the promise resolves. Callbacks run on the goroutine that callsResolve, in registration order; registering on an already-resolved promise runs the callback inline on the caller.NewPromiseno longer allocates the done channel up front —Done()already created it lazily. - #1747 (@paulwe) -
Add an
error_codelabel to thelivekit_psrpc_error_totalmetric. - #1699 (@paulwe) -
Add realtime (speech-to-speech) reporter methods to gatewayobs, regenerated from cloud-observability schema/gateway.yaml realtime billing columns (#502). - #1663 (@russellmartin-livekit)
-
agent simulation: add
concisenessandconversation_progressiontoSimulationRun.RunMetrics- #1742 (@u9g) -
Add
background_noise,low_quality_microphone, andpacket_losstoSimulationRun.Create.Request, so an audio simulation run can impair the simulated user's audio. - #1723 (@u9g) -
Add
to_user_overridetoCreateSIPParticipantRequestto override the user part of theToheader, and warn whenTo/Viaare set in the SIP headers map. - #1717 (@genseric-ghiro) -
Remove extraneous format specifier from log string. - #1682 (@alexfish8)
-
Move the config observer into utils/configutil and drop the stuttering Config prefix. utils.ConfigObserver, utils.ConfigBuilder, utils.ConfigDefaulter and utils.NewConfigObserver remain as aliases. - #1712 (@paulwe)
-
Track holder goroutines of stuck locks (all RWMutex readers up to 8) and resolve their current stacks - #1701 (@erikhortsch)
-
Add data track subscription to sync state - #1703 (@boks1971)
- feat: add simulation/redaction fields to MetricsRecordingHeader - #1679 (@chenghao-mou)
- agent simulation: homogenizes Turn/Job/Run LLM/TTS/STT/Conversation metrics shapes - #1673 (@Bobronium)
-
Fix recursive call to CreateSIPInboundTrunkRequest.ValidateResult. - #1669 (@alexfish8)
-
agent simulation JobMetrics: add TTS.cer, add STT/TTS words/chars counts, replace
jobs_failedwithjobs_measured- #1670 (@Bobronium)
-
agent: add
llm_node_tpsandllm_node_ttfstoMetricsReport, and anAgentFalseInterruptionevent toAgentSessionEvent- #1661 (@Bobronium) -
agent_simulations: add JobMetrics/RunMetrics to SimulationRun — per-job quality metrics grouped by - #1644 (@Bobronium) pipeline stage (stt/llm/tts/conversation, plus a per-turn timeline and headline accuracy/experience scores) and run-level aggregates. Unset optional fields mean "not measured";
-
Add validation method variants that include information about soft errors. - #1667 (@alexfish8)
-
add redaction flag in Job - #1657 (@chenghao-mou)
-
Add wait_until_answered to ConnectWhatsAppCallRequest. - #1653 (@anunaym14)
- Support cloud agent attributes in CRUD operations - #1636 (@rektdeckard)
-
Enabling soft fail for sip validation - #1650 (@alexlivekit)
-
Add PTF_USER_DATA to the PacketTrailerFeature enum for arbitrary per-frame user data. - #1639 (@chenosaurus)
-
Introduce a participant RPC protobuf registry for well-known LiveKit RPCs. - #1618 (@dennwc)
-
Add codec config to inbound and outbound SIP trunks. - #1620 (@dennwc)
-
agent dev protocol to send down ServerInfo - #1638 (@davidzhao)
- agent simulation: add SimulationMode to the Create request and run info, so a - #1627 (@Bobronium) run can request audio mode. Unspecified stays TEXT, so existing callers are unaffected.
- feat(inference): add default thresholds in session created message - #1598 (@chenghao-mou)
- Add custom event protobuf for agent remote session - #1588 (@toubatbrian)
- feat(agents): add function call start event - #1571 (@chenghao-mou)
- Adding ability to specify media timeout per CreateSIPParticipant request and per Dispatch Rule. - #1534 (@alexlivekit)
-
feat(eot): add eot prediction event and usage - #1566 (@chenghao-mou)
-
Adding a test for EvaluateDispatchRule - #1555 (@alexlivekit)
-
Wrap SIP validation errors with typed psrpc codes (
InvalidArgumentfor unsupported dispatch rule and inbound trunk auth,FailedPreconditionfor outbound trunk missing numbers) so Twirp surfaces them as 4xx instead of 500. Also fixSIPStatus.GRPCStatus()fallback ladder which compared the wrong variable. - #1565 (@hechen-eng) -
Fix SIP trunk-level MediaEncryption being silently dropped on outbound and inbound calls. The early
req.Upgrade()/rule.Upgrade()calls pinnedMedia.Encryptionto the (legacy) request/rule field before the trunk's MediaEncryption was merged, causing INVITEs to omit SRTP when only the trunk had it configured. - #1540 (@hechen-eng) -
Add optional authentication realm to SIPInboundTrunk. - #1558 (@dennwc)
-
Allow setting a list of SIP codecs for SDP. - #1530 (@dennwc)
-
fix: ensure we don't reject tokens on unknown fields - #1536 (@davidzhao)
- feat(agents): add session events for amd - #1526 (@chenghao-mou)
-
Add turn detection protobufs - #1485 (@chenghao-mou)
-
fix change set for eot changes - #1515 (@chenghao-mou)
- Dropping use of an affinity function in CreateSIPParticipant - #1456 (@alexlivekit)
- Add PayloadTrailerFeature to TrackInfo and AddTrackRequest - #1438 (@chenosaurus)
- Added NoRandomness field to individual dispatch rule" - #1426 (@alexlivekit)
-
update text message protocol for http endpoints - #1407 (@longcw)
-
Adding feature_flags field to InternalTransferSIPParticipantRequest, InternalCreateSIPParticipantRequest, and EvaluateSIPDispatchRulesResponse - #1382 (@alexlivekit)
- Add numbers field to SIPDispatchRuleInfo for filtering calls by called number - #1351 (@civilcoder55)
-
Add auto_subscribe_data_track to StartSession. - #1366 (@boks1971)
-
Add TextMessageRequest and TextMessageResponse - #1349 (@longcw)
-
Add featureinfo nested field for reporting noise cancellation feature specific metadata - #1367 (@1egoman)
-
Option to control auto subscribe of data tracks. - #1365 (@boks1971)
-
Changing the wording on duplicate dispatch rule error message - #1343 (@alexlivekit)
-
Allow passing ClientParams to SIP RPC client. - #1356 (@dennwc)
-
Store repair ssrc in TrackInfo for migration purposes. - #1348 (@boks1971)
-
Data tracks initial protocol definition. - #1327 (@boks1971)
-
Cancellation counts for join/publish/subscribe. - #1321 (@boks1971)
-
add option to only use IPv4 for webhooks - #1296 (@davidzhao)
-
Redact metadata, attribute, participant name from logs. - #1309 (@boks1971)
-
Adding more SIP return codes and updating SIP-to-grpc return code mapping - #1305 (@alexlivekit)
-
Switch to new header validation for SIP commands - #1279 (@alexlivekit)
-
Added warning prints to SIP headers - #1238 (@alexlivekit)
-
removed observability field - #1294 (@davidzhao)
-
rename ListUpdate "del" field to "rename" - #1203 (@rektdeckard)
-
Utilities for phone number functionality - #1206 (@nishadmusthafa)
-
Adding a call_context field to SIPCallInfo - #1188 (@nishadmusthafa)
-
Added DisplayName field to CreateSIPParticipantRequest - #1216 (@alexlivekit)
-
Adding get and update apis for livekit phone numbers - #1179 (@nishadmusthafa)
-
allow credentials to be stored in SIP tokens - #1213 (@davidzhao)
-
Unifying data types for phone numbers - #1190 (@nishadmusthafa)
-
Adding an rpc to record call context using SipCallInfo - #1189 (@nishadmusthafa)
-
Adding public apis for Livekit Phone Numbers feature - #1146 (@nishadmusthafa)
-
Use OpenTelemetry types. Pass tracer options. - #1177 (@dennwc)
- Adding SIP Protocol generated call id to SipCall - #1119 (@nishadmusthafa)
-
Add webhook for aborted participant connection. - #1166 (@boks1971)
-
Updating how ListSIPInboundTrunkRequest filtering occurs by normalising phone number that are being compared - #1126 (@nishadmusthafa)
-
Allow adding, removing items and clearing list fields. - #1142 (@dennwc)
-
Allow clients to specify video layers mode. - #1158 (@boks1971)
-
adding detailed responses to the trunk match logic which can help with decisions on blocking - #1101 (@nishadmusthafa)
-
E2E reliability for data channel - #1099 (@cnderrauber)
-
ensure access token do not contain sensitive credentials - #1097 (@davidzhao)
-
WHIP internal signalling to be able to support WHIP in OSS. - #1091 (@boks1971)
- feat: MoveParticipant API - #1065 (@cnderrauber)
-
Deprecate explicit AddTrackRequest fields that can be read from AudioTrackFeatures - #1058 (@lukasIO)
-
Add PreconnectBuffer to AudioTrackFeatures, add AudioTrackFeatures to AddTrackRequest - #1057 (@lukasIO)
-
Add helper to get SIP call status from an error. - #1028 (@dennwc)
-
Add timeout parameter to SIP transfer API. - #1036 (@dennwc)
-
Fix SIP update when replacing array fields. - #1038 (@dennwc)
-
Add CONNECTION_TIMEOUT disconnect reason - #1037 (@boks1971)
-
Rework node stats to split out rate metrics into its own shape. - #1023 (@boks1971)
-
Remove unused kinds - #1020 (@cnderrauber)
-
Refine backup codec policy - #1022 (@cnderrauber)
-
add cloud agents - #1010 (@real-danm)
-
sdp.go: add helper functions for simulcast and trackId - #1018 (@anunaym14)
-
Add ForwardParticipant to room service - #1011 (@cnderrauber)
-
Move SIP call dispatch info into s separate type. - #989 (@dennwc)
-
Handle SIP hostname in address filters. Expose attribute. - #987 (@dennwc)
-
Expose and improve SIP number normalization. - #986 (@dennwc)
-
Allow passing all SIP trunk options in CreateSIPParticipant. - #961 (@dennwc)
-
Add egress audio mixing options - #978 (@frostbyte73)
-
Expose hooks for SIP trunk and rule matching. - #983 (@dennwc)
-
Fix iteration over empty and unsorted records. - #971 (@dennwc)
-
Remove SIP outbound number normalization for Telnyx. - #969 (@dennwc)
-
Remove SIP outbound number normalization for Telnyx. - #982 (@dennwc)
-
Add flag to make CreateSIPParticipant synchronous. - #952 (@dennwc)
-
Add Twirp options to preserve error details and client timeouts. - #963 (@dennwc)
-
Add a workaround for invalid IP masks in SIP. - #956 (@dennwc)
-
Add backup codec policy to AddTrackRequest - #947 (@cnderrauber)
- include room preset/config in SIP tokens - #932 (@davidzhao)
-
Add headers for CreateSipParticipant - #911 (@s-hamdananwar)
-
Allow mapping all SIP headers to attributes. - #920 (@dennwc)
-
Allow SIP inbound to specify room configuration - #923 (@davidzhao)
- Revert back to Go 1.22 - #905 (@davidzhao)
- Add extra fields to SIP analytics events - #872 (@biglittlebigben)
- Support for room configuration and agent dispatches - #864 (@davidzhao)
-
added manifest details to egress info - #862 (@frostbyte73)
-
enable krisp SIP setting - #866 (@frostbyte73)
- allow Agents to pass through initial attributes - #852 (@davidzhao)
- Add fast_publish option to JoinResponse - #796 (@cnderrauber)
-
Add disconnect reason in participant info. - #788 (@boks1971)
-
Use multiple webhook workers for each URL to improve parallelism - #784 (@davidzhao)
-
Add FilenamePrefix to ImagesInfo - #751 (@frostbyte73)
-
Add experimental replay api - #755 (@frostbyte73)
-
Implement a custom YAML unmarshaller for RoomConfiguration - #765 (@biglittlebigben)
-
Add AgentDispatchPrefix to guid - #757 (@biglittlebigben)
-
Ability to set attributes upon job acceptance - #769 (@davidzhao)
-
Remove unused fields from RegisterWorkerRequest - #761 (@biglittlebigben)
-
Integrate feedback on the agents protocol: - #750 (@biglittlebigben)
- Rename JobDescription to AgentDispatch
- Remove participant_identity entry in the dispatch
- Deprecate namespace
- Add an agent_name field to specify what agent workers a job should be dispatched to
Also allow setting a room configuration in the token.
-
add srt output for egress - #766 (@frostbyte73)
-
Internal agent protocol improvements - #764 (@biglittlebigben)
-
Implement MarshalYAML on RoomConfiguration and related types - #771 (@biglittlebigben)
-
Use consistent json field name for room configuration grant - #762 (@biglittlebigben)
-
Added RoomClosed as a DisconnectReason - #778 (@davidzhao)
-
Split SIP Trunk configuration to inbound and outbound parts. - #738 (@dennwc)
-
add Participant attributes key/val storage - #733 (@davidzhao)
-
Added session token option for s3 uploads - #734 (@frostbyte73)
-
Include analytics event ids - #739 (@davidzhao)
-
Added error code field to EgressInfo - #714 (@frostbyte73)
-
Include node_id with analytics events - #727 (@davidzhao)
-
Add notice to use participant identity from DataPacket for transcriptions. - #706 (@dennwc)
-
- Add RedactAutoEncodedOutput to support redacting auto egress types - #712 (@biglittlebigben)
- Redact image outputs
- Support AliOSS uploads for auto egress
-
Allow inbound number filtering on SIP Dispatch Rules - #707 (@dennwc)
-
Move egress request redacting routines to protocol - #711 (@biglittlebigben)
-
Add metadata to SIP trunks, dispatch rules and participants. Change SIP participant identity prefix to
sip_. - #696 (@dennwc) -
Move language into TranscriptionSegment #703 - #704 (@lukasIO)
-
Added real-time Transcription protocol - #686 (@davidzhao)
-
WHIP protocol change - #680 (@biglittlebigben)
Deprecate the bypass_transcoding property in all ingress APIs and introduce the optional enable_transcoding property. This property will default to false for WHIP and to true for all other ingress types.