SMC Self-Anchor Detailer Hook Provider
The compatibility alias nobody mentions.
- profile
- detailer_hook
SMC Self-Anchor Detailer Hook Provider (class SMCDetailerHookProvider) - yes, that's the node's own display name, and yes, it collides with the display name of SMCSelfAnchorDetailerHookProvider. That's because SMCDetailerHookProvider is a compatibility alias: in the pack's nodes.py it routes to the same self-anchor hook node class, under a placeholder name from an earlier iteration of the pack. The source comment says it outright: "Compatibility alias for the later pack's placeholder name; now routes to the functional self-anchor hook."
So the practical answer to "why are there two of these?" is: there aren't two. There's one Impact Pack hook - snapshots the detailer's post-upscale crop as a self-anchor, then runs the affine compand correction after decode to pull the detailed result back toward that stable reference - and it's registered under two class names. If ComfyUI search hands you this one, you're getting the same node, same DETAILER_HOOK output, same optional profile input.
What you're actually getting
Everything in the SMCSelfAnchorDetailerHookProvider article applies. The hook wires into FaceDetailer or Detailer (SEGS) in Impact Pack via the detailer_hook port. It fires on post_upscale (stores the upscaled crop as the anchor) and post_decode (runs the affine compand, returns corrected pixels). It corrects the crop-expansion, washout, and paste-mismatch drift that FLUX.2 Klein detail passes tend to produce, using the detailer's own upscale as the reference - no extra model pass.
Which name do you use?
Pick whichever appears in your workflow or search. New workflows should prefer SMCSelfAnchorDetailerHookProvider since that's the canonical name. Old or shared workflows referencing SMCDetailerHookProvider keep working because the alias is registered. The only real gotcha is that the identical display names make the node list confusing - the fix is just knowing they're the same thing, which you now do.
Install & gotchas
The one node in the pack with a hard dependency - it needs ComfyUI-Impact-Pack installed, or it raises a RuntimeError:
cd ComfyUI/custom_nodes
git clone https://github.com/ltdrdata/ComfyUI-Impact-Pack
git clone https://github.com/xmarre/ComfyUI-StableManifoldCompander
# restart ComfyUI
or install both via ComfyUI Manager. No other dependencies. The usual caveats carry over: the self-anchor approach is a "practical fallback," not a true two-pass anchor workflow, and the correction is the affine path (which pulls inward, never expands). If the alias ever gets dropped in a future version, the fix is trivial - swap the class name in the workflow for the canonical one; the ports don't change.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| profileopt | SMC_PROFILE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| detailer_hook | DETAILER_HOOK | — |