NF Independent Queue (run)
NF Independent Queue (run)
- value
This node is not for you. It's the internal twin of NF Independent Queue - the version that actually gets queued when you press that node's Run button - and the honest answer to "how do I use it" is: you don't, you press Run on the other one.
It's documented here anyway, because it's a node class you can see in ComfyUI, it'll show up in workflow JSON, and if you land on it by accident it's confusing in a specific, understandable way.
Why it has to exist
ComfyUI only lets output nodes be targets of a partial run. Its prompt validation checks that a partial_execution_targets entry is an output node, because the engine's execution model works backwards from outputs - a node that isn't one has nothing to execute for.
But the node you place in your graph has to be a non-output with no outputs, otherwise a normal Queue would run it every time, which defeats the whole point. Those two requirements can't be satisfied by one node class. So there are two:
NF_IndependentQueue- the one in your graph. No outputs, not an output node, never executed by a normal Run. It carries the Run button.NF_IndependentQueueRun- hidden from the Add Node menu (it's flagged dev-only), declared as an output node, and otherwise identical. When you press Run, the frontend clones the workflow, swaps this node'sclass_typeto the Run variant, and queues it withpartial_execution_targetspointing at it.
The node id is unchanged in that swap, which is deliberate: ComfyUI still reports progress and results against the id you placed, so the image preview and the progress bar appear on the node on your canvas rather than on an invisible duplicate.
What it accepts, and what it emits
The inputs are byte-for-byte the same as the visible node's: value (type * - anything; the result is what gets displayed) and seed_mode (randomize / follow / off, deciding what happens to upstream seeds before the run). Outputs: none.
What makes it different is the execution itself. Instead of doing nothing, it renders the incoming value: an IMAGE-shaped tensor goes through the normal preview-image path, and everything else is converted to text - strings get a Copy button in the UI, a latent reports its samples shape, other tensors report shape and dtype, and very long text is truncated for display rather than dumped in full.
When you'd notice it
If you enable dev mode, you'll find it in the Add Node menu alongside the real one. Adding it manually gives you a node that displays a value and nothing else - it's the visible node's Run button that supplies the seed handling and the partial-queue plumbing, so a hand-placed Run variant is just a preview.
In shared workflows, you won't see it. The swap happens at queue time, on a copy of the prompt; the workflow file on disk keeps NF_IndependentQueue. So a workflow someone shares with you has the normal node in it, and it behaves normally.
If you're writing a script or driving the API yourself, this is the class name you target: queue the workflow with the node's class_type set to NF_IndependentQueueRun and partial_execution_targets set to that node id. That's the exact recipe the frontend uses, and it's the reason the flag is exposed at all.
Setup
Same pack, same install, no separate step:
cd ComfyUI/custom_nodes
git clone https://github.com/NyaFuP/ComfyUI-NF_Suite.git
Restart, no dependencies, frontend prebuilt in web/. You need ComfyUI 0.22.0+ (V3 node API) and frontend 1.44.19+.
The one real gotcha
Since the node is dev-only and only ever appears in a prompt that the frontend built, nothing wires it up for you if you place it by hand - no Run button, no seed handling, and no way to target a partial run from the UI. If you find yourself on this node page looking for a button, go back to NF Independent Queue. That's where the button lives.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| value | * | Anything; the result is shown in this node when you press Run. | |
| seed_mode | COMBO | randomize | Before each Run: randomize = new random value for every upstream seed that has a control_after_generate; follow = apply each seed's own control setting; off = keep seeds. |
Outputs (0)
No outputs