(Down)Load LivePortraitModels
The (Down)Load node that makes LivePortrait just work
- live_portrait_pipe
The name is doing two jobs: it downloads the LivePortrait model files if they're missing, then loads the whole thing into memory as a LIVEPORTRAITPIPE. This is the node you start every LivePortrait workflow from. No other node in this pack works without one of these pipes.
LivePortrait is KwaiVGI's real-time portrait animation model - you feed it a still face and a driving video, and it transfers the driver's expressions and head motion onto the still. Kijai's pack is the ComfyUI integration everyone actually uses, and this node is its front door. It's the same wrapper author behind the Wan and LTX-Video ComfyUI implementations, so the pattern is familiar: a (...)Load node that auto-fetches weights from his Hugging Face repo the first time you queue something.
How it works
On the first run, the node checks ComfyUI/models/liveportrait. If the folder isn't there, it calls snapshot_download on Kijai/LivePortrait_safetensors and pulls everything in - Kijai converted the original pickles to safetensors, which is what makes this clean in the first place. Then it loads five pieces: the appearance feature extractor, the motion extractor, the warping network, the SPADE decoder, and the stitching/retargeting module (which actually contains three sub-networks for stitching, lips, and eyes). All of it gets handed to you as one live_portrait_pipe output.
Inputs that matter
Only two optional inputs, and you'll mostly leave them alone:
- precision (
fp16/fp32/auto).autopicks fp16 on CUDA and fp32 on Apple silicon - which is exactly right, so let it. Manually force fp16 only if you want the half-precision path regardless. On very old ComfyUI buildsautothrows an error telling you to set it manually; that's a version problem, not a node problem. - mode (
human/animal). Animal loads frommodels/liveportrait/animaland downloads the animal weights if absent. If you're animating a pet or a non-human face, this is the switch.
The single output, live_portrait_pipe, wires into LivePortraitCropper (for the source face) and LivePortraitProcess (where the animation happens).
Install
Easiest path is ComfyUI Manager → search "ComfyUI-LivePortraitKJ", install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-LivePortraitKJ
The requirements pull in onnxruntime, mediapipe, opencv-python, pykalman and numpy<=1.26.4 - that numpy pin is the one that bites if your environment already resolved a newer version. Note the node does not need InsightFace; the croppers that use it are optional (more on that in their articles). Model files land in ComfyUI/models/liveportrait and download automatically - no manual Hugging Face trip.
Gotchas
- The download happens inside the node the first time you run, so the first queue can stall for a while on a slow connection. It's one-time; after that the models stay cached in
models/liveportrait. - A July 2024 rework of the whole pack made old workflows void (Kijai archived the previous version to a
legacybranch). If you're pulling an old workflow and it refuses to run, that's why - rebuild from an example workflow in the pack'sexamples/folder. keep_model_loaded-style caching lives on the cropper nodes, not here; this node reloads its five models every queue unless you hold the pipe in memory by keeping the workflow live. That's normal for the pack and fine for video work.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| precisionopt | COMBO | auto | 3 options: fp16, fp32, auto |
| modeopt | COMBO | 2 options: human, animal |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| live_portrait_pipe | LIVEPORTRAITPIPE | — |