SDKs

Embed a real-time, lip-synced bitHuman avatar natively in your app — on-device or over the cloud — from Python, Apple, Android, or the browser.

One engine, one API, every language

Every bitHuman SDK is a thin, idiomatic binding over libessence — the portable C++ avatar-rendering engine that also powers the CLI and the cloud REST API. They all read the same .imx avatar file and produce identical frames at 25 FPS, so anything you prove out in one language ports straight to the others.

The contract is the same everywhere:

  1. Push 16 kHz mono PCM audio as it arrives (mic, TTS, WebRTC).
  2. Drain lip-synced video frames at 25 FPS.

That push/drain loop is documented once, canonically, under audio streaming — every language page links back to it rather than repeating it.

Which SDK should I use?

Match your target platform to a binding. All four ship visual, lip-synced avatars; the difference is where they run and how mature each surface is.

Platform / targetSDKOn-device / cloudStatus
Backend, AI agents, batch render, edge boxesPythonOn-deviceGA
Native Mac, iPad, iPhone appsSwift / AppleOn-devicePreview
Native Android appsAndroid (Kotlin)On-deviceBeta
Browser & Node web clientsJavaScript / TSCloud clientPreview
On-device engine wrapper backing the CLIRustOn-deviceInternal / app-backing
Native app ↔ server avatar over WebRTC, or Python voice agent with a faceLiveKit (Apple + Python)Cloud / hybridBuilt on the bindings

If you are not sure, start with the Python SDK or the no-code CLI.

On-device vs cloud

bitHuman runs in two topologies. The same .imx and the same API work in both.

On-device
Runs on the user's machine, phone, or edge box. Private, low-latency, offline-capable. Python, Swift, Kotlin.
Cloud
We host the GPU. Zero ops, ideal for web clients and sharing one avatar. JavaScript/TS, LiveKit.
On-deviceCloud
Where inference runsYour machine / phonebitHuman’s GPU pool
SDKsPython, Swift, KotlinJavaScript/TS, LiveKit
NetworkOptional — billing heartbeat only (or fully offline)Required
HardwareAny modern CPU (Essence); Apple Silicon / NVIDIA GPU (Expression)None — we host it
Cost1 credit/min (Essence) · 2 credits/min (Expression)2 credits/min · 4 credits/min
Best forPrivacy, kiosks, edge, low latencyZero-ops, web clients, sharing one avatar

See models for the Essence vs Expression comparison and pricing for credit details.

Status matrix

We keep this honest so you can plan around it.

SDKPackageTopologyStatus
Pythonpip install bithuman (2.3.10)On-deviceGA
Swift / AppleSwiftPM bitHumanKit (0.8.2)On-devicePreview
Android (Kotlin)Gradle ai.bithuman:sdk:2.3.6On-deviceBeta
JavaScript / TS@bithuman/sdk (not yet on npm)Cloud clientPreview
Rustin-tree crate bithuman (versioned with the CLI, not on crates.io)On-deviceInternal / app-backing
Flutterreference app onlyOn-deviceReference app only, not a published code SDK — see below

Note On Apple platforms the SwiftPM product is bitHumanKit — an umbrella framework (from bithuman-product/bithuman-sdk-public) that re-exports both the Expression avatar engine and the Essence (libessence) runtime. import bitHumanKit is all you need; the standalone Layer-1 engine products are not yet published separately. This rail is preview. The Swift page has the details.

Rust The bithuman Rust crate is the on-device engine wrapper that backs the CLI. It is internal / app-backing — source-only (not on crates.io) — and wraps libessence ABI v7. You don’t depend on it directly; you get it through the CLI.

A note on Flutter

A Flutter integration exists today as an internal reference app — it is not published to pub.dev, so don’t add bithuman: ^X.Y.Z to a pubspec.yaml. Until it ships, build Flutter apps on the underlying Swift SDK (Apple) and Android SDK via platform channels, or ping us on Discord for early access.

See also