Edit DetailerPipe (SDXL)
Swap pieces of an SDXL base+refiner detailer pipe
- detailer_pipe
- model
- clip
- vae
- positive
- negative
- refiner_model
- refiner_clip
- refiner_positive
- refiner_negative
- bbox_detector
- sam_model
- segm_detector
- detailer_hook
- detailer_pipe
A DETAILER_PIPE bundles up everything a detailer needs - model, clip, vae, prompts, detector, hooks - into one wire instead of a dozen separate connections. That's convenient right up until you need to change one piece of it. Rebuilding the whole pipe from scratch for a single swap is wasteful. Edit DetailerPipe (SDXL) lets you take an existing SDXL-flavored detailer_pipe and override just the elements you name, leaving everything else untouched.
This is the SDXL-specific sibling of the pack's plain EditDetailerPipe. SDXL workflows commonly run a two-model setup - a base model plus a refiner - and this node's input list reflects that: it carries both a primary set (model, clip, vae, positive, negative) and a parallel refiner set (refiner_model, refiner_clip, refiner_positive, refiner_negative), matching what FromDetailer (SDXL/pipe) and BasicPipe -> DetailerPipe (SDXL) build in the first place.
How it works
You feed in the detailer_pipe you want to modify. Every optional input you leave disconnected passes through unchanged from the original pipe; anything you do connect replaces that slot in the output pipe. So if you only want to change the negative prompt for a second detail pass, you connect just negative and leave the other dozen-plus optional inputs empty - the rest of the pipe rides through as-is.
The inputs and outputs that matter
detailer_pipe(required) - the SDXL detailer pipe to edit.wildcard(required, multiline text) - the wildcard/prompt text carried on the pipe for the detail pass. The two enum fields next to it, "Select to add LoRA" and "Select to add Wildcard", aren't real functional parameters - they're convenience dropdowns that insert LoRA or wildcard syntax into thewildcardtext box for you, the same UI helper pattern you'll see on other Impact Pack wildcard-driven nodes.- Optional overrides, connect only what you're changing:
model,clip,vae,positive,negative(the base set);refiner_model,refiner_clip,refiner_positive,refiner_negative(the refiner set);bbox_detector,sam_model,segm_detector(detection);detailer_hook(aDETAILER_HOOKto attach or replace).
Output is a single detailer_pipe - the same DETAILER_PIPE type, with your overrides applied, ready to feed straight into FaceDetailer (pipe), DetailerForEach (pipe), or wherever you were already using the original pipe.
How to install it
Via ComfyUI Manager: search ComfyUI Impact Pack, install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/ltdrdata/ComfyUI-Impact-Pack comfyui-impact-pack
cd comfyui-impact-pack
python -m pip install -r requirements.txt # ComfyUI's python; python_embeded on portable
then restart. No models bundled - you're editing references to models you're already loading elsewhere in the graph.
Common issues & troubleshooting
A field I didn't touch changed anyway. Check you actually left that input disconnected rather than wired to something upstream by accident - any connected input overrides the original pipe's value, even if you didn't intend to change it.
Used this on a non-SDXL pipe and it broke. This node specifically expects the SDXL-shaped pipe with the refiner fields. For a plain single-model DETAILER_PIPE, use the base EditDetailerPipe node instead - the refiner-specific inputs here don't apply outside the SDXL base+refiner pattern.
The "Select to add LoRA/Wildcard" dropdowns don't do anything on their own. That's expected - they're text-insertion helpers for the wildcard field, not independent parameters. Selecting an entry writes syntax into the wildcard box; the actual behavior comes from what ends up in that text, processed the usual way by ImpactWildcardProcessor/ImpactWildcardEncode conventions.
Not sure whether you need this at all. If you're only ever building a detailer pipe once and using it as-is, you don't need this node - go straight from FromDetailer (SDXL/pipe) or BasicPipe -> DetailerPipe (SDXL) to your detailer. Reach for Edit DetailerPipe (SDXL) specifically when you're reusing one pipe across multiple detail passes and want to change a single thing (a prompt, a detector, a hook) between them without rebuilding the whole bundle.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| detailer_pipe | DETAILER_PIPE | — | |
| wildcard | STRING | — | |
| Select to add LoRA | COMBO | 1 options: Select the LoRA to add to the text | |
| Select to add Wildcard | COMBO | 1 options: Select the Wildcard to add to the text | |
| modelopt | MODEL | — | |
| clipopt | CLIP | — | |
| vaeopt | VAE | — | |
| positiveopt | CONDITIONING | — | |
| negativeopt | CONDITIONING | — | |
| refiner_modelopt | MODEL | — | |
| refiner_clipopt | CLIP | — | |
| refiner_positiveopt | CONDITIONING | — | |
| refiner_negativeopt | CONDITIONING | — | |
| bbox_detectoropt | BBOX_DETECTOR | — | |
| sam_modelopt | SAM_MODEL | — | |
| segm_detectoropt | SEGM_DETECTOR | — | |
| detailer_hookopt | DETAILER_HOOK | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| detailer_pipe | DETAILER_PIPE | — |