ComfyUI Node

hswq_SeedEverywhere

One seed for every sampler, without five copies of the number

By ussoewwin·Created about a year ago·Updated 5 days ago· 23
hswq_SeedEverywhere
    • int
    ◄seed0►

    Every KSampler has its own seed. Every RandomNoise node, every sampler-in-a-detailer, every second pass has its own. If you want one number controlling all of them - and most people do, because otherwise reproducing a run is guesswork - you either convert a dozen widgets to inputs and drag a primitive around, or you use hswq_SeedEverywhere.

    This is the simplest node in the whole Use Everywhere family. One seed input, an INT, range 0 to 2^64−1, default 0. One output, int. And that's it - no regex widgets, no properties to speak of.

    What it turns into

    The packaging is a little odd and worth understanding before it confuses you. The node is filed under everywhere/deprecated - "Deprecated - should automatically be replaced" - and the replacement is aggressive: the moment the node exists in a graph, the frontend rewrites its type to ComfyUI's core PrimitiveInt, flips the broadcast flag on, marks it as a seed source, and pre-loads an input-name regex built from the word "seed" plus the localised name of the seed input. So what you're actually looking at thirty seconds later is a primitive int node wired to every seed-shaped input in the graph.

    Note the direction of travel: a normal Anything Everywhere broadcasts from an input, because you're feeding an existing output somewhere. A seed is a value, not a connection, so the seed broadcast runs off the node's output - it takes the number it holds and hands it to each matching input. Same machinery, opposite end of the node.

    The pre-loaded regex is the good part. It means the broadcast doesn't blindly fill every INT input on the canvas - it specifically targets inputs whose names look like seeds. Without that, a seed broadcast would happily overwrite your steps, your cfg and your batch size, which is a spectacular way to ruin a workflow.

    Why you'd actually want it

    Two samplers, one seed, is the common case: base pass and hires fix, or a detailer pass after an initial generation. You want them correlated so that when you find a seed you like you can get back to it. The alternative - core PrimitiveInt plus a "convert widget to input" on each sampler - is maybe four clicks per sampler and produces a genuinely unreadable graph at scale.

    The second case is shared seeds across seeds-in-filenames, note nodes, and scripted variations. Same primitive, everything reads from one place.

    What it does not do is give you a different seed per sampler, or per-run randomisation tricks. If you need a fixed seed everywhere, this is your node; if you need variance, it's the wrong tool and a run-level counter is the right one.

    Install

    cd ComfyUI/custom_nodes
    git clone https://github.com/ussoewwin/ComfyUI-NunchakuFluxLoraStacker.git
    cd ComfyUI-NunchakuFluxLoraStacker
    pip install -r requirements.txt
    

    Restart, then look under everywhere/deprecated - that's where the seed and prompt variants live, separate from the main everywhere category, which is why people report the node as missing when it's simply two folders down.

    Fair warning about the requirements file: this node is pure plumbing and needs none of it, but the pack pulls nunchaku, the Florence-2 stack and the CCSR TensorRT-RTX stack, and imports every submodule at startup. A failed install takes the whole pack with it. nunchaku itself is import-gated, so a ROCm box with no nunchaku still gets these nodes - you just lose the FLUX LoRA ones with a warning in the log.

    Troubleshooting

    If the broadcast isn't reaching a sampler, check what the input is called. The default regex looks for seed-like names, and a custom node that calls its seed noise or rng won't match - that's what the input-regex field in the node's properties is for. Add the missing name there rather than removing the restriction.

    If you did remove the restriction at some point and your step count started changing between runs, this node is the reason. A seed broadcast with no name filter will fill every compatible INT input it can find.

    And remember the family-wide gotcha: the connections don't live in your workflow. Open the graph without the pack and the samplers show empty seed sockets, with the seed value nowhere in sight. For a node whose whole job is reproducibility, that's worth knowing before you send someone a workflow and tell them it will reproduce.

    Categoryeverywhere/deprecated

    Inputs (1)

    NameTypeDefaultDescription
    seedINT00–18446744073709550000—

    Outputs (1)

    NameTypeDescription
    intINT—