π₯ Winnougan LTX NAG Guidance
Distilled LTX ignores your negative prompt β NAG fixes that
- model
- negative_conditioning
- model
- nag_info
You write "no text, no watermark, no hands turning to jelly" in your negative prompt, and the distilled LTX-2.3 model shrugs. That's not you doing it wrong - the distilled model was trained without classifier-free guidance, so standard negative prompting barely registers. The community fix is NAG, Normalized Attention Guidance, and the Winnougan LTX NAG Guidance node is the most beginner-friendly way to apply it.
NAG started as a research technique (ChenDarYen's Normalized-Attention-Guidance repo) for guidance-distilled image models, then Kijai ported the idea to LTX-2 as LTX2_NAG in ComfyUI-KJNodes. This node is that same math with a friendlier face: one conditioning input instead of two, plain-English parameter names, and preset strength profiles. It's the difference between patching the attention mechanism by hand and clicking a dropdown.
How it works
Where CFG operates at the noise-prediction level - push the denoised output away from the negative - NAG operates inside the cross-attention layers. It computes attention with both your positive and negative context, then blends them so the negative steer is normalized and clipped by a threshold (nag_tau). The result: the negative prompt actually guides what the model attends to, which is the lever a distilled model can respond to. The node patches the model clone in memory and hands you a model output to wire straight into your sampler. If your LTX-2.3 build has audio, it patches the audio cross-attention blocks too, and nag_info confirms whether that happened.
The inputs that matter
model- your loaded LTX model. The output model replaces it in the sampler.preset- Subtle, Balanced (recommended) (the default), Strong, Maximum, or Custom. Balanced at scale 11 / alpha 0.25 / tau 2.5 really is the right starting point for most generations.negative_conditioning- wire the same negative CONDITIONING you send to your sampler. Critical gotcha: leave this unconnected and NAG silently disables itself.nag_scale/nag_alpha/nag_tau- only used when preset is Custom. Scale pushes harder, alpha blends guided vs original attention, tau is a clipping threshold where lower is more aggressive.inplace- in-place tensor ops to save a sliver of VRAM; it changes numerical results slightly, so leave it off unless you're truly pinned.
Wire it like this:
[LTX Model] β NAG Guidance (model)
[Negative Conditioning] β NAG Guidance (negative_conditioning)
NAG Guidance (model out) β Sampler
Install
It's one of eight nodes in the ComfyUI_WLTX_nodes pack, under Winnougan LTX:
cd ComfyUI/custom_nodes
git clone https://github.com/Winnougan/ComfyUI_WLTX_nodes
Restart ComfyUI, or search ComfyUI_WLTX_nodes in ComfyUI Manager. No extra pip dependencies.
Where people get burned
The number one failure is the empty negative_conditioning input - the node runs, everything looks fine, and you've got plain CFG-1 behavior because there was nothing to steer with. Second: cranking Maximum because you want "more negativity" and getting overcooked, oversaturated output. The presets are conservative for a reason; if Balanced feels weak, bump to Strong, don't jump straight to 25. And since this patches the model in-place in the graph, remember the patched model out must feed your sampler - wiring the original model there silently bypasses NAG entirely.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | β | |
| preset | COMBO | Balanced (recommended) | Balanced is the right choice for most generations. Subtle for gentle steering, Strong/Maximum for aggressive negative prompting. Custom lets you set values manually. |
| nag_scale | FLOAT | 11.00β50 | How strongly NAG pushes away from the negative prompt. Higher = stronger effect. Only used when preset is Custom. |
| nag_alpha | FLOAT | 0.250β1 | Blend between guided and original attention. 0 = no effect, 1 = full NAG. Only used when preset is Custom. |
| nag_tau | FLOAT | 2.50.1β10 | Clipping threshold β limits how far NAG can deviate from the positive attention. Lower = more aggressive. Only used when preset is Custom. |
| negative_conditioningopt | CONDITIONING | Your NEGATIVE conditioning from Gigachad Prompt Encoder. Wire the same negative conditioning you send to your sampler. If not connected, NAG will be disabled. | |
| inplaceopt | BOOLEAN | false | Modify tensors in-place to save a small amount of memory. Changes numerical results slightly. Leave off unless you are very tight on VRAM. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| model | MODEL | β |
| nag_info | STRING | β |