Load InsightFace (PuLID Flux)
The ArcFace backend PuLID reads your face from
- FACEANALYSIS
This loader hands PuLID its face-recognition engine. It spins up InsightFace - the library that detects the face in your reference photo, aligns it, and turns it into an ArcFace embedding - and outputs a FACEANALYSIS object that ApplyPulidFlux conditions on. Without it, PuLID has no idea what your subject's face actually is.
Understanding this node means understanding one fact about the whole identity-preservation corner of ComfyUI: nearly every no-training face tool - IP-Adapter FaceID, InstantID, PuLID, ReActor - reaches the same InsightFace ArcFace embedding underneath. It's a monoculture. ArcFace encodes facial geometry rather than appearance, which is exactly why these tools hold a likeness that plain CLIP image-prompting only gestures at. When PuLID "gets the face," this is the part doing the recognizing.
The input, and the output
One input:
provider- the execution backend, one ofCPU,CUDA,ROCM. Pick CUDA if you're on an NVIDIA GPU (you are, probably), ROCM for AMD, CPU if you must. CUDA is faster; CPU works fine and is a reasonable fallback if the GPU provider throws ONNX errors.
Output is FACEANALYSIS, which wires into the face_analysis slot on ApplyPulidFlux - and, if you want to preview which face got detected, into PulidFluxFaceDetector.
Under the hood this pulls the antelopev2 model pack (SCRFD detector + a ResNet100 ArcFace recognizer) plus some facexlib parsing models. The pack auto-downloads all of it on first run.
The licensing thing you should actually know
InsightFace is the reason half the "can I sell this?" threads exist. The code is MIT, but the model weights are non-commercial, research-only - and that restriction flows straight through to anything that loads them, PuLID included. Swapping ReActor for PuLID to get commercially clear doesn't work, because they read the same embeddings. If your output is personal, hobby or portfolio work, you're fine; the terms grant exactly that. If you're shipping a paid product, this node puts you on the wrong side of the license.
Which is precisely why this pack ships an alternative: PulidFluxFaceNetLoader. FaceNet (via facenet-pytorch, pretrained on VGGFace2) is commercially permissive, needs no extra downloads, and is a drop-in replacement - same FACEANALYSIS output, same ApplyPulidFlux wiring. If money is involved, use the FaceNet loader instead of this one. For research and personal work, InsightFace/ArcFace is the established quality standard for the embedding, so most people leave it here.
Installing it - and the install pain
Ships with ComfyUI_PuLID_Flux_ll: Manager search ComfyUI_PuLID_Flux_ll, or clone it into custom_nodes, pip install -r requirements.txt, pip install facenet-pytorch --no-deps, restart. ComfyUI ≥ 0.3.7, and disable old balazik PuLID nodes first.
But InsightFace has a well-earned reputation as one of the nastiest installs in local generation. On ComfyUI Windows portable you may hit a compile error about Python.h: No such file or directory - that's InsightFace trying to build a C++ extension against an embedded Python with no headers. The README links the canonical issue (deepinsight/insightface #2576) for that exact failure. If you're setting up fresh today, recent InsightFace releases finally dropped the C++ build requirement, so it's less painful than the guides that send you to Visual Studio build tools suggest.
Common issues & troubleshooting
Install fails with a Python.h / build-tools error. Classic Windows-portable InsightFace failure - see the linked issue in the README. Prebuilt wheels or a current InsightFace version avoid the source compile.
Antelopev2 didn't download / face detection fails. The pack fetches antelopev2 into ComfyUI/models/insightface/models/antelopev2/ and the facexlib models into ComfyUI/models/facexlib/. If auto-download choked, grab them by hand and place them there.
CUDA provider errors on load. Switch provider to CPU to confirm the rest of the graph works, then sort out your onnxruntime-GPU install. CPU is slower but gets you unblocked.
You need this commercially. Don't. Use PulidFluxFaceNetLoader from the same pack - that's what it's there for.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| provider | COMBO | 3 options: CPU, CUDA, ROCM |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| FACEANALYSIS | FACEANALYSIS | — |