LTX2 NAG
Negative prompts for LTX-2, even at CFG 1
- model
- nag_cond_video
- nag_cond_audio
- model
Here's the problem this node solves. LTX-2, especially the distilled checkpoint everyone actually runs, generates at 8 steps with CFG 1. Great for speed - but CFG 1 means there's no classifier-free guidance, and no classifier-free guidance means your negative prompt does nothing. You type "no watermark, no melted faces" and the model shrugs. LTX2 NAG gives you that negative back.
NAG stands for Normalized Attention Guidance, a technique by ChenDarYen (the GitHub link in the node's own description). The one-line version straight from the community: it "allows you to use negative prompts on distilled models such as Kontext Dev (CFG 1)." Instead of steering by contrasting two full denoising passes the way CFG does, NAG pushes the negative concept out inside the attention layers and renormalizes, so it works even when guidance is switched off. Kijai wrapped it into a dedicated LTX-2 node here, because LTX-2 is exactly the kind of distilled, CFG-1, audio-plus-video model where you'd otherwise have zero negative control.
How it works
You feed it your model and a bit of negative conditioning, and it patches the model so that during sampling the attention maps get nudged away from whatever you put in the negative. The result is a MODEL you drop into your sampler like any other patched model. Nothing else in the graph changes - it's a model patch, not a sampler or a conditioning node.
The inputs and outputs that matter
The node takes a model (MODEL) and hands back a model (MODEL) - wire the output into your KSampler or LTX sampler, that's the whole integration.
The three tuning knobs:
nag_scale(default 11) - how hard NAG pushes. The one you'll actually touch. If the negative isn't doing enough, crank it; the standard NAG advice is literally "to get a bigger strength effect, increase nag_scale."nag_alpha(default 0.25) andnag_tau(default 2.5) - the normalization clamp and threshold. Leave these unless you're chasing artifacts; the defaults are tuned.
Then the negatives, which are optional inputs: nag_cond_video (CONDITIONING) is your negative prompt for the picture, and nag_cond_audio (CONDITIONING) is the negative for the sound - LTX-2 generates synchronized audio, so you can steer away from garbled speech or random noise too. inplace (default true) just controls whether it patches the model object directly.
How to install it
KJNodes is one of those packs you half-have already if you run local video, since so much of the LTX and Wan tooling leans on kijai's work. If not: in ComfyUI Manager, search KJNodes for ComfyUI, install, restart. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-KJNodes
pip install -r ComfyUI-KJNodes/requirements.txt # use ComfyUI's python
then restart. Dependencies are deliberately minimal here, so there's no giant download attached to this node - but you do need a working LTX-2 setup first, which is its own evening (the Gemma 3 text encoder is a memory hog).
Common issues & troubleshooting
It doesn't play nice with caching. The very first thing reported when NAG landed in ComfyUI was that it doesn't work with TeaCache. If you've got a speed cache in your LTX graph and NAG seems inert or crashes, pull the cache and test again.
The effect is subtle or missing. Two usual causes. One, your nag_scale is too low - push it well past the default. Two, an empty negative: if there's a ConditioningZeroOut feeding your negative path, it's sending nothing for NAG to push against, so give it a real negative conditioning instead.
Nothing changes at all. Sanity-check that you're actually at CFG 1. If you're running the non-distilled dev model at higher CFG, ordinary negative prompts already work and NAG is redundant - this node earns its keep specifically on the distilled, CFG-1 path.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| nag_scale | FLOAT | 11.0000–100 | Strength of negative guidance effect |
| nag_alpha | FLOAT | 0.2500–1 | Mixing coefficient in that controls the balance between the normalized guided representation and the original positive representation. |
| nag_tau | FLOAT | 2.5000–10 | Clipping threshold that controls how much the guided attention can deviate from the positive attention. |
| nag_cond_videoopt | CONDITIONING | — | |
| nag_cond_audioopt | CONDITIONING | — | |
| inplaceopt | BOOLEAN | true | If true, modifies tensors in place to save memory. Leads to different numerical results which may change the output slightly. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |