Skip to content

Ojin Plugin#5295

Open
php-workx wants to merge 14 commits into
livekit:mainfrom
ojinai:ojin-agent
Open

Ojin Plugin#5295
php-workx wants to merge 14 commits into
livekit:mainfrom
ojinai:ojin-agent

Conversation

@php-workx
Copy link
Copy Markdown

  • New LiveKit plugin for Ojin avatar integration (livekit-plugins-ojin)
  • Uses the local runner pattern (AvatarRunner + VideoGenerator) to connect to Ojin's WebSocket API

Ojin Documentation
Ojin Model API

@CLAassistant
Copy link
Copy Markdown

CLAassistant commented Apr 1, 2026

CLA assistant check
All committers have signed the CLA.

Copy link
Copy Markdown
Contributor

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

Choose a reason for hiding this comment

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

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 4 additional findings.

Open in Devin Review

devin-ai-integration[bot]

This comment was marked as resolved.

@php-workx
Copy link
Copy Markdown
Author

Hi @tinalenguyen, when you have a chance, could you review this Ojin avatar plugin PR? I updated it against the latest main, added the plugin to the workspace/optional deps, and addressed the current bot feedback. It follows the common local AvatarRunner/VideoGenerator pattern used by the other plugins.

@tinalenguyen
Copy link
Copy Markdown
Member

hi @php-workx, thanks for the contribution! it seems that there are merge conflicts at the moment, i also don't believe we will be including avatar plugins in our test suite quite yet

also is the edit in agents/voice/avatar/_runner.py intentional?

php-workx added 13 commits May 20, 2026 12:56
…ffer management and implement session-ready timeout
Align AvatarSession with ecosystem convention used by anam and lemonslice
plugins. Replaces `reconnect_attempts` and `reconnect_delay` params with
`conn_options: APIConnectOptions = DEFAULT_API_CONNECT_OPTIONS`, adding
connect timeout support via asyncio.wait_for on the initial WS connection.
Moves test files from the root tests/ directory into
livekit-plugins/livekit-plugins-ojin/tests/, consistent with how
other plugins (aws, hamming) structure their tests.
devin-ai-integration[bot]

This comment was marked as resolved.

@php-workx
Copy link
Copy Markdown
Author

@tinalenguyen / thanks for your comments!

don't believe we will be including avatar plugins in our test suite

We have moved to plugin tests in the plugin folder.

also is the edit in agents/voice/avatar/_runner.py intentional?

Reverted, but worth noting: it seems like main has an inconsistency in _runner.py. The _read_audio_task is declared (line 70) but never used; all actual usages reference _read_audio_atask (lines 94, 98, 102, 200-201). Our commit was intended to fix that.

Devin has flag this as well: #5295 (comment)

Without this, the OjinClient WebSocket connection and AvatarRunner are
never closed when the job shuts down. Mirrors the pattern from the base
AvatarSession in _types.py, applied manually since our local-runner
architecture doesn't support full inheritance (no avatar participant,
no avatar_identity, _wait_avatar_join not applicable).
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.

3 participants