Skip to main content

Overview

With our LiveKit Agents integration, you can easily send a LemonSlice avatar into a video call hosted on a third-party platform. Supported platforms are Zoom, Google Meet, Microsoft Teams, and Webex. The avatar appears on camera, listens to the meeting, and responds with low-latency voice and animation. Joining a call is as simple as adding a single line of code to your LiveKit agent. LemonSlice handles the rest: connecting to the call, feeding meeting audio into your agent, and publishing the synced avatar audio and video into the meeting.
Supported platforms

How it works

  1. Start a normal LiveKit AvatarSession with the desired session parameters (see our LiveKit guide for details).
  2. Call join_meeting with the meeting URL. LemonSlice joins the call as a bot and opens a relay WebSocket that streams mixed meeting audio into your agent for STT (bypassing LiveKit room audio).
  3. LemonSlice publishes the synced avatar audio/video stream into the meeting.
  4. Optionally, enable listen_to_meeting_chat so chat messages from the meeting are passed to the agent as user input.

Requirements

Usage

After avatar.start(...), call join_meeting, then start the agent session with the room options returned by the avatar. Those options disable LiveKit room audio I/O so the agent listens to the meeting relay instead.
Pass the meeting URL (and optional bot_name / listen_to_meeting_chat) via LiveKit job metadata when you dispatch the agent, so the same worker can join different calls.
Example dispatch:

Toggle listening behavior

After join_meeting, the plugin attaches a MeetingAudioInput to session.input.audio so the agent hears the meeting. To temporarily stop (or resume) listening without leaving the call, swap that input for a silent one:

End-to-end examples

Both show a full worker that reads meeting_url from job metadata, joins the call, and starts the agent session with meeting-aware room options.