Skip to content

Allow LemonSlice avatars to join third party meeting platforms#6233

Open
aweitz wants to merge 10 commits into
livekit:mainfrom
lemonsliceai:ajw/external-meeting-support
Open

Allow LemonSlice avatars to join third party meeting platforms#6233
aweitz wants to merge 10 commits into
livekit:mainfrom
lemonsliceai:ajw/external-meeting-support

Conversation

@aweitz

@aweitz aweitz commented Jun 25, 2026

Copy link
Copy Markdown
  • Adds third-party meeting support (Zoom, Google Meet, Teams, Webex) to the LemonSlice avatar plugin. AvatarSession.join_meeting() sends the avatar into a meeting via the LemonSlice API; the plugin then connects to a LemonSlice-managed relay WebSocket that streams mixed meeting audio into MeetingAudioInput for STT (bypassing LiveKit room audio). Avatar speech is published back into the meeting through the existing LiveKit avatar path. Optionally, meeting chat messages can be relayed into the agent session as user input (listen_to_meeting_chat).

  • Relevant LemonSlice endpoints are documented here and here

  • Adds new agent worker script in examples to demonstrate usage

@aweitz aweitz requested a review from a team as a code owner June 25, 2026 19:03
@CLAassistant

CLAassistant commented Jun 25, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

devin-ai-integration[bot]

This comment was marked as resolved.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 2 new potential issues.

Open in Devin Review

.with_identity(_MEETING_BROADCAST_IDENTITY)
.with_name(_MEETING_BROADCAST_IDENTITY)
.with_grants(grants)
.with_ttl(timedelta(hours=4))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚩 Broadcast token has 4-hour TTL without refresh mechanism

The broadcast token minted at avatar.py:189 has a fixed 4-hour TTL (timedelta(hours=4)). If a meeting runs longer than 4 hours, the token expires and the LemonSlice service would lose access to the avatar media in the LiveKit room. There's no refresh mechanism visible in the PR. For most meeting use cases this is acceptable, but it's a hard time limit worth documenting.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The TTL is only a limit on how quickly it must be used for the avatar to join. Per LiveKit's own documentation, the avatar is not kicked from a room when the token TTL expires:

Expiration time only impacts the initial connection, and not subsequent reconnects.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants