Runware PuLID
PuLID in the cloud — face identity without the InsightFace install
- images
- pulid
PuLID is ByteDance's face-identity adapter, and in the local ComfyUI world it's a whole setup: InsightFace for detection and embeddings, the right weights, version compatibility, and the occasional "why does this need an update" headache. The InsightFace models are also non-commercial, which quietly blocks product work. This builder is the cloud answer: you feed it reference photos, it outputs a RUNWARE_PULID value, and the identity injection happens on Runware's servers - no InsightFace install, no license trap, no model files. Wire the result into a model node's pulid socket (six models in the pack take it).
The inputs that matter
- images - required IMAGE. One or more photos of the person. PuLID works from a single clear shot and improves with a few.
- idWeight - 0 to 3, default 1. Identity strength: higher means closer resemblance to the reference face. This is the main dial - start at 1 and only move it if the likeness is weak (and the prompt is fighting you).
- CFGstartStep (+
_value) and CFGstartStepPercentage (+_value) - gate the step where identity influence kicks in. Delaying identity until composition has formed is the same lesson as ControlNet's start/end steps: let the model lay out the image first, then clamp the face on. Gated off by default, which means "model default," per this pack's convention. - trueCFGScale (+
_value, 0–10) - a separate, higher guidance scale for the identity embedding itself. It's gated off too. The two-CFG arrangement is PuLID's signature: the main CFG handles prompt adherence while this one handles the face. Leave it off until you've played with idWeight, because it's the subtler knob.
Where it sits in identity-land
The KB's verdict: PuLID beat InstantID for one dull reason - it shipped a Flux port and InstantID didn't - and it's still the right tool for the one job adapters uniquely own, which is getting a specific real face into a generation from a single photo with zero training. The wider identity market moved on to editing models, but that specific job is still PuLID's. The other thing worth knowing from the KB: the local version's InsightFace dependency is both a licensing trap and an install-pain magnet - "lots of people have issues even just installing Insightface" is a direct quote from someone who maintained a competing node. On this builder, all of that is the vendor's problem, not yours, which is the single most underrated reason to use it.
Output and wiring
Output is RUNWARE_PULID. Wire it into a model node's pulid socket, alongside your prompt. If the model node you picked doesn't expose that socket, the builder does nothing - check before building a whole workflow around it.
Install
One-time pack setup:
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
Restart, add your Runware API key (Settings → Runware API key, or RUNWARE_API_KEY).
The honest take
This is the rare case where the cloud version is less work and more legally clean than the local one. The trade is the per-run cost and the usual likeness ceiling - PuLID gets you close and stops, so if you need a perfect match, pair it with a pixel-level face swap pass afterward. But for "this person, in this style, no training," it's a one-builder setup that skips the whole InsightFace era of pain.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| CFGstartStepopt | BOOLEAN | false | Enable to set CFGstartStep. Off uses the model's default. |
| CFGstartStep_valueopt | INT | 0 | Absolute step number to start identity influence. Must be less than `steps`. |
| CFGstartStepPercentageopt | BOOLEAN | false | Enable to set CFGstartStepPercentage. Off uses the model's default. |
| CFGstartStepPercentage_valueopt | INT | 00–99 | Percentage of steps to start identity influence. |
| idWeightopt | FLOAT | 1.000–3 | Identity preservation strength. Higher values create closer resemblance to the reference face. |
| trueCFGScaleopt | BOOLEAN | false | Enable to set trueCFGScale. Off uses the model's default. |
| trueCFGScale_valueopt | FLOAT | 0.00–10 | Guidance scale for identity embedding. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| pulid | RUNWARE_PULID | — |