# Your servers (self-hosted)

URL: https://docs.bithuman.ai/deploy/self-hosted

> Run the CLI, the Python SDK or the LiveKit plugin on your own Mac or Linux machines. When the avatar renders on your hardware, its audio and video stay there.

## What it is

The avatar renders on machines you run: a Mac with Apple silicon, or a Linux PC or server on x86_64 or arm64, including one with no GPU. You choose where the conversation runs. There is no license to buy for online self-hosting: it needs the Creator plan or higher and bills credits at the self-hosted rate.

| You want | Use | Models |
|---|---|---|
| A talking avatar or an MP4, no code | [CLI](https://docs.bithuman.ai/platforms/cli) | Essence 2 and Expression 2 (`run`, `render`); Essence 1 (`run`) |
| Frames or MP4 clips from your own code | [Python SDK](https://docs.bithuman.ai/platforms/python) | Essence 2, Expression 2, Essence 1 |
| A voice agent in your own LiveKit rooms, rendered on your machine | [LiveKit plugin](https://docs.bithuman.ai/platforms/livekit) with `model_path=` ([guide](https://docs.bithuman.ai/build/voice-agent)) | Essence 2, Expression 2 |

## Where it renders

| Question | Your servers |
|---|---|
| Where the avatar renders | on your own Mac or Linux machines |
| Where the conversation runs | your choice: the CLI's local conversation brain, your own services, or bitHuman's |
| What reaches bitHuman | a credential check, the avatar download, and usage reports with no audio, video or text |
| Network | to start; rendering continues through a drop of up to 5 minutes |

*Diagram: Your servers (self-hosted).* Self-hosted, the avatar renders on your own Mac or Linux machine and its audio and video stay there. The conversation runs where you choose: the CLI's local conversation brain, your own services, or bitHuman's. For the rendering, bitHuman receives a credential check, the avatar download and usage reports with no audio, video, images or conversation text.

When the avatar renders on your hardware, its audio and video stay there. For the conversation, the CLI's [local conversation brain](https://docs.bithuman.ai/platforms/cli/local-brain) keeps speech recognition, the language model and the voice on the machine, or you bring any OpenAI-compatible language model, including one in your own network ([Providers](https://docs.bithuman.ai/api/providers)). Self-hosted sessions store no transcript at bitHuman.

## Models available here

| Model | Your servers | How |
|---|---|---|
| [Essence 2](https://docs.bithuman.ai/models/essence-2) | Yes | CLI, Python, LiveKit plugin |
| [Expression 2](https://docs.bithuman.ai/models/expression-2) | Yes | CLI, Python, LiveKit plugin |
| [Essence 1](https://docs.bithuman.ai/models/first-generation#essence-1) | Yes | CLI (`run`), Python |
| [Expression 1](https://docs.bithuman.ai/models/first-generation#expression-1) | — |  |

## Speed

| Configuration | Hardware | Essence 2 | Expression 2 | Measured |
|---|---|---|---|---|
| Linux · CLI (CPU only (no GPU)) | Intel Core i7-13700F (x86_64) | 2.0× real time | 2.2× real time | CLI 2.8.1, 2026-09-27 |
| Linux · Python (CPU only (no GPU)) | Intel Core i7-13700F (x86_64) | 1.9× real time | 2.3× real time | bithuman 2.11.13, 2026-09-26 |
| macOS · CLI | Apple M4 | 4.2× real time | 8.4× real time | CLI 2.8.1, 2026-09-27 |
| macOS · Python | Apple M4 | 6.9× real time | 8.4× real time | bithuman 2.11.12, 2026-09-25 |

× real time: seconds of video rendered per second; 1.0× or more holds a live conversation ([method](https://docs.bithuman.ai/performance#desktop)).

## Price

2 credits per minute of active session time for Essence 2 and Expression 2, about $0.02 a minute at the top-up rate of $1 = 100 credits. Realtime usage bills active session time, talking or idle, to the second. Every rate: [Pricing and credits](https://docs.bithuman.ai/pricing).

Rendering an MP4 (`bithuman render`, or `render()` in Python) bills the length of the video it writes, at the same rate.

## Limits

- **Credential:** rendering needs a credential. Sign in with `bithuman login`, or set `BITHUMAN_API_SECRET` ([Your API secret](https://docs.bithuman.ai/start/api-secret)).
- **Network:** a session checks your credential when it starts and keeps rendering through a network drop of up to 5 minutes. Usage reports carry no audio, video, images or conversation text.
- **Sessions:** self-hosted sessions are limited by credits.
- **Operating systems:** macOS on Apple silicon; Linux on x86_64 or arm64. On Windows, use WSL2.
- **Off the internet:** see [Fully offline](https://docs.bithuman.ai/deploy/offline).

## First command

```bash tab="CLI"
curl -fsSL https://install.bithuman.ai | sh
bithuman login                    # in CI, export BITHUMAN_API_SECRET instead
curl -fsSLo speech.wav https://docs.bithuman.ai/samples/speech.wav
bithuman render wise-pup speech.wav -o out.mp4
```

```bash tab="Python"
python3 -m venv .venv && source .venv/bin/activate
pip install "bithuman[expression-2]"
export BITHUMAN_API_SECRET="<your API secret>"
curl -fL -o wise-pup.imx "https://api.bithuman.ai/v1/agent/A23WJF0199/model/download?model=expression-2"
```

```bash tab="LiveKit"
pip install "livekit-agents[openai,silero]" livekit-plugins-bithuman python-dotenv
# pass model_path="wise-pup.imx" to bithuman.AvatarSession: /build/voice-agent
```

`out.mp4` is the `wise-pup` sample avatar speaking the 15-second sample. The CLI's `ffmpeg` and live-session setup is on [CLI](https://docs.bithuman.ai/platforms/cli#before-you-start).

## Choosing between modes

- **A Linux PC with no GPU:** [CPU only (no GPU)](https://docs.bithuman.ai/deploy/cpu).
- **Inside an app on the phone, Mac or browser:** [On the device](https://docs.bithuman.ai/deploy/on-device).
- **Nothing to run yourself:** [bitHuman cloud](https://docs.bithuman.ai/deploy/cloud).
- **No internet at the site:** [Fully offline](https://docs.bithuman.ai/deploy/offline).
- **All five side by side:** [Deployment options](https://docs.bithuman.ai/deploy).
