Conversation
The Stream edge now reports, per peer connection, every step from the start of its join: coordinator websocket and join, SFU websocket and join, offer/answer (SetPublisher or SendAnswer), ICE start and checks, DTLS and the first RTP packet. The agent logs it and the session socket forwards it as a "connection" frame, replaying the latest one to a watcher that attaches after the path connected. Pins getstream-go-webrtc to feature/connection-timing (0ab2ab2), which adds Call.OnConnectionTiming. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
With log_latency (VOICE_LATENCY_DAG=1 for simple_voice_ai) the agent prints its own join as a DAG (create call, components, chat conversation, router session, event socket) and renders each "connection" frame from the router as a WebRTC connection DAG. The agent's steps travel to the pipeline as RemoteCall.join_steps. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This branch has not been deployed
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.
Why
VOICE_LATENCY_DAG=1(#674) shows where a turn's time goes, but not where the time before the first turn goes. Joining a call is several hops: the agent creates the call on the coordinator, opens the router session and event socket, and the router then joins the call and negotiates WebRTC (coordinator and SFU sockets and joins, offer/answer, ICE, DTLS, first RTP). Slow starts were hard to attribute without seeing each of those steps, so this prints them as DAGs alongside the existing turn DAG.Depends on GetStream/getstream-go-webrtc#2, which adds
Call.OnConnectionTiming. Until that merges,acceleration/go.modpins getstream-go-webrtc to its branchfeature/connection-timingat0ab2ab2; the pin should move to the merged commit before this lands.Changes
connectionframe, and a watcher that attaches after the path connected is sent the latest timing.RemoteCall.join_steps, andstream.Acceleratedprints a join DAG and a WebRTC connection DAG perconnectionframe whenlog_latencyis on.callbeforeJoin, keeping that fix's "only sete.callafter a successful join".🤖 Generated with Claude Code