bitHuman plugin for LiveKit Agents
Support for bitHuman virtual avatars in LiveKit Agents. The avatar renders either locally, inside your agent's process from a bitHuman .imx model file (no GPU required), or in the bitHuman cloud, where it joins the room as a participant.
See the bitHuman integration docs for more information, and bitHuman's LiveKit guide for a complete agent.
Installation
pip install livekit-plugins-bithuman
To render Expression 2 models locally, also install the SDK's Expression 2 extra:
pip install "bithuman[expression-2]"
Pre-requisites
You'll need an API secret from bitHuman (create one). Store it under a name the plugin doesn't read, such as BITHUMAN_MASTER_SECRET, and pass it as api_secret=. If api_secret isn't passed, the plugin falls back to BITHUMAN_API_SECRET.
In cloud mode the plugin puts api_secret in the avatar participant's attributes, which everyone in the room can read. Pass a one-hour token minted for one agent and one room (POST https://api.bithuman.ai/v1/runtime-tokens/mint, how) instead of the secret, and keep BITHUMAN_API_SECRET unset. Cloud mode also uses LIVEKIT_URL, LIVEKIT_API_KEY and LIVEKIT_API_SECRET.
Usage
Local mode: the avatar renders in this process.
import os
from livekit.plugins import bithuman
avatar = bithuman.AvatarSession(
model_path="./agent.imx", # or set BITHUMAN_MODEL_PATH
api_secret=os.environ["BITHUMAN_MASTER_SECRET"],
)
await avatar.start(session, room=ctx.room)
Cloud mode: the avatar renders on bitHuman's servers.
avatar = bithuman.AvatarSession(
avatar_id="A23WJF0199", # your bitHuman agent code (A23WJF0199 is the wise-pup sample)
api_secret=minted_token, # from POST /v1/runtime-tokens/mint
)
await avatar.start(session, room=ctx.room)
In both modes the avatar publishes the agent's audio, so start the session with room_options=room_io.RoomOptions(audio_output=False).
Models
- Essence 2 (
essence-2): a photoreal person from one portrait. - Expression 2 (
expression-2): any character, including people, animals and cartoons, from one portrait. essence/expression: the first-generation Essence 1 and Expression 1. Expression 1 runs in the cloud only.
In local mode the .imx file decides the model. In cloud mode, leave model unset to use the model the agent was created with, or set it to pin one; bitHuman refuses a model the avatar wasn't prepared for. A photo passed as avatar_image (no avatar_id) works only with Expression 1. Pricing: docs.bithuman.ai/pricing.
Metadata
Release files for livekit-plugins-bithuman 1.8.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| livekit_plugins_bithuman-1.8.8.tar.gz | 13.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| livekit_plugins_bithuman-1.8.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 26.2 kB
Release files / livekit_plugins_bithuman-1.8.8.tar.gz
| Download URL | livekit_plugins_bithuman-1.8.8.tar.gz |
|---|---|
| Size | 13.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1340a8faa3d36137237bce7541abf5970ae42757841a857ab39676efea445d9f
|
|
BLAKE2b-256 checksum How to use checksums |
5a3939c8ffae738b31ffabedd6f87730b381286e3628ab88247238efb2f2f9ca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.
Transparency logRelease files / livekit_plugins_bithuman-1.8.8-py3-none-any.whl
| Download URL | livekit_plugins_bithuman-1.8.8-py3-none-any.whl |
|---|---|
| Size | 13.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
17a8c59a1f833b8a9cac7902715c3a9405606aaa601086b29d73d9a649ff6834
|
|
BLAKE2b-256 checksum How to use checksums |
53fc6e4cb7637832f45e9b77207d9e04ee24fc4e07ce5c5c78457cb5181e3e3c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.
Transparency log