feat: add Runway Characters avatar plugin#1254
Conversation
Add `@livekit/agents-plugin-runway` for Runway Characters avatar integration. Follows the same pattern as the Bey/Tavus avatar plugins — mirrors the Python `livekit-plugins-runway` implementation (livekit/agents#5355). - Plugin: `AvatarSession` with preset or custom avatar support - Sends `livekit` payload so Runway's avatar worker joins the agent's room - Audio routed via `DataStreamAudioOutput` at 16kHz - Sends `User-Agent` header for server-side debugging - Example agent using Gemini Realtime + Silero VAD
🦋 Changeset detectedLatest commit: 1b6d004 The changes in this PR will be included in the next version bump. This PR includes changesets to release 25 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
@codex review and check the plugin package format against others. Compared with other avatar plugins and check for alignment or discrepancies |
| livekitToken: string, | ||
| roomName: string, | ||
| agentIdentity: string, | ||
| ): Promise<void> { |
There was a problem hiding this comment.
Can we use ThrowsPromise here for error type safety
There was a problem hiding this comment.
ThrowsPromise doesn't exist in the codebase — searched all of agents/ and plugins/ with no matches. No other avatar plugin (bey, trugen, hedra, lemonslice, anam) annotates error types on their methods either. Happy to add it if there's a utility type you have in mind, but for now this matches the existing plugin convention.
Description
Add
@livekit/agents-plugin-runway— an avatar plugin for Runway Characters (GWM-1 avatars). Follows the same pattern as the Bey/Anam/Lemonslice avatar plugins and mirrors the Pythonlivekit-plugins-runwayimplementation (livekit/agents#5355).Changes Made
plugins/runway/—AvatarSessionclass with preset or custom avatar supportlivekitpayload (url, token, roomName, agentIdentity) so Runway's avatar worker joins the agent's existing roomDataStreamAudioOutputat 16kHzUser-Agent: @livekit/agents-plugin-runway/<version>header for server-side debuggingexamples/src/runway_avatar.tsusing Gemini Realtime + Silero VADturbo.jsonglobalEnvPre-Review Checklist
Testing
Additional Notes
Environment variables needed:
RUNWAYML_API_SECRET— Runway API keyRUNWAYML_BASE_URL— (optional) Runway API URL, defaults tohttps://api.dev.runwayml.comRUNWAY_AVATAR_PRESET_ID— (optional) preset avatar ID, defaults tocat-characterLIVEKIT_URL,LIVEKIT_API_KEY,LIVEKIT_API_SECRET)GOOGLE_API_KEY— for the example agent (Gemini Realtime)Note to reviewers: Please ensure the pre-review checklist is completed before starting your review.