Skip to content

bey: 4xx errors are retried and the provider's status is replaced by a generic error #7495

Description

@sidxh

Bug Description

AvatarSession._start_agent in livekit-plugins-bey retries every failure the same way, including 4xx responses that can never succeed. With a wrong BEY_API_KEY the avatar takes about 4 seconds to fail, logs three full tracebacks, and ends with APIConnectionError("Failed to start Bey Avatar Session after all retries"). The 401 and the response body are gone, and the error is marked retryable, so it looks exactly like a Beyond Presence outage.

The loop in livekit-plugins-bey/livekit/plugins/bey/avatar.py catches Exception, which includes the APIStatusError it raises itself for a non-2xx response, logs it with logger.exception, and always ends with a generic APIConnectionError without chaining the cause. It also runs range(max_retry), one attempt fewer than Anam, TruGen, Keyframe and LemonSlice. Anam had the same loop and was fixed in #7314; Tavus has the same bug (#7493).

Expected Behavior

A non-retryable status (4xx) is raised immediately with its status code and body. 5xx and network errors are retried max_retry times after the first attempt, and the final error is the provider's status, or an APIConnectionError chained to the network error.

Reproduction Steps

Create bey.AvatarSession(api_url=...) pointing at a local server that returns 401 for every request and start it. With default connect options on main: 4.00s, three tracebacks, APIConnectionError with no status.

Versions

livekit-agents 1.8.3, livekit-plugins-bey at main (57b3227), Python 3.13, macOS.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions