AQ_multiface_ApplyPulidFlux
PuLID Flux identity for several faces at once — the pack's flagship
- model
- pulid_flux
- eva_clip
- face_analysis
- images
- attn_masks
- options
- MODEL
This is the reason the pack exists. The author's own one-line description of AQnodes is "mostly for llm calling and automatizing pulid multiface" - and this is the pulid half. A normal PuLID Flux node applies identity from a single reference face. This one loops over a list of face references, so you can lock several characters into one generation, each with its own attention mask, in a single pass.
Why you'd want it
PuLID (ByteDance) is the identity adapter that won the Flux face game by solving "ID pollution" - injecting a face without wrecking prompt adherence, which is what killed earlier approaches like InstantID on Flux. Normally that means one ApplyPulidFlux node per character, stacked and hoping the model patches chain correctly. This node automates the chaining: it literally calls the original ApplyPulidFlux from the ComfyUI_PuLID_Flux_ll pack once per input image, threading the patched MODEL through the loop. Two characters, three characters, same graph, one node.
How it works
It looks up the ApplyPulidFlux class from the already-registered ComfyUI node mappings - which means you must have ComfyUI_PuLID_Flux_ll installed and loaded; the code prints an explicit, helpful error if it can't find it. Then for each image in the list it calls apply_pulid_flux with that single image and its matching attention mask, accumulating the patched model. Same inputs as the original node: model, the PuLID Flux model, the EVA-CLIP, the face-analysis model.
Inputs
model- your Flux model.pulid_flux,eva_clip,face_analysis- the three specialized inputs from the PuLID Flux pack (the identity model, EVA-CLIP, and the InsightFace-based face analyzer).images- IMAGE_LIST, from AQ_MasksAndImagesAsList.weight- -1 to 5, default 1.start_at/end_at- 0 to 1, when in the schedule identity applies.attn_masks(optional) - IMAGE_LIST, one per face.options(optional).
Output
MODEL - the patched model, into your sampler.
Install
Two installs. First the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/2frames/ComfyUI-AQnodes
cd ComfyUI-AQnodes
pip install -r requirements.txt
Then the companion pack ComfyUI_PuLID_Flux_ll (ComfyUI Manager) plus its model downloads - the PuLID Flux weights, EVA-CLIP, and face-analysis model. Without the companion pack the specialized inputs won't even exist in the graph.
Gotchas
The real ones: (1) the standard face-analysis model is non-commercial, so shipping a product with this is a licensing problem - the PuLID_Flux_ll pack offers a FaceNet alternative specifically for commercial use, worth knowing before you commit. (2) insightface + onnxruntime-gpu are among the most install-hostile dependencies in the ecosystem; expect to fight the CUDA/onnxruntime pairing. (3) weight applies identically to every face - per-face weighting isn't exposed, so a strong identity will push all of them equally. And remember the pack's requirements pull in the whole face stack even if PuLID is all you use.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| pulid_flux | PULIDFLUX | — | |
| eva_clip | EVA_CLIP | — | |
| face_analysis | FACEANALYSIS | — | |
| images | IMAGE_LIST | — | |
| weight | FLOAT | 1.00-1–5 | — |
| start_at | FLOAT | 0.0000–1 | — |
| end_at | FLOAT | 1.0000–1 | — |
| attn_masksopt | IMAGE_LIST | — | |
| optionsopt | OPTIONS | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |