HWP Seed Node
A seed that stays put, with a NOISE socket you don't expect
- seed
- noise
The anti-global seed
Where HWP Global Seed broadcasts one seed to every seed widget in the graph, HWP Seed Node is the opposite: the value you set only reaches the node(s) you explicitly wire it to. It's the local, non-broadcasting sibling, and it exists for the "I want one specific sampler under control without touching the other nineteen" case.
Why does a single seed deserve its own node when KSampler already has a seed widget with fixed/increment/decrement/randomize built in? Three reasons. It gives you one visible place to see, lock, and read a seed instead of hunting widgets. It tracks last_seed so you can see what ran before the current value. And - the part a plain KSampler can't do - it emits a ready-to-use NOISE object, which is exactly what custom-sampling graphs need.
How it works
No magic here, which is the point. The node is a normal wired source: its execute() applies the chosen action to the seed once and returns it through the seed output. A companion on_prompt handler advances the widget's stored value between runs and mirrors it back to the UI over a websocket, but it never touches any other node - everything reaches downstream through the wire, like any ordinary value node. Each instance is tracked separately (keyed by its node id), so you can drop several of these into one workflow and each advances on its own. That independent-ness is something the global broadcast node simply can't give you, since it flattens every seed to one policy.
One naming note, because it tells you something about the ecosystem: the class is HWPSeedNode, not SeedNode, because ComfyUI core already registers a node under the class name SeedNode - the author's comment notes that reusing the name would be silently shadowed by the core node. So if you see both "Seed" (core) and this one in your node list, they're different things.
Inputs you'll actually set
- value - the seed.
- action -
fixed,increment,decrement, orrandomize. Note there are no "for each node" variants here; with a single output there's nothing to fan across. - mode - toggle between
control_before_generate(default) andcontrol_after_generate. Same semantics as the global node: before means this run uses the advanced value and the box shows what ran; after means this run uses the current value and the next one is staged for the following queue.
max_seed caps increment/decrement wrap and randomize (leave 0 and it becomes 1125899906842624, i.e. 2^50, kept below JavaScript's safe-integer ceiling). logging toggles default vs verbose console output, and last_seed holds the seed from the previous run - it only updates when the seed actually changed, so the first run leaves it blank.
Wiring the outputs
seed (INT) plugs into any seed input - on a KSampler that means right-clicking the seed widget and converting it to an input first (the "convert widget to input" ritual from comfyui-node-plumbing.md). noise (NOISE) plugs directly into the noise input of a SamplerCustomAdvanced-style graph - Flux.2 workflows and anything using custom sampling - because it wraps the seed through ComfyUI's own Noise_RandomNoise. No separate RandomNoise converter node needed.
That wired-input detail is also why this node coexists cleanly with its global sibling: HWP Global Seed rewrites only seed inputs that arrive as bare integers. Once this node's seed travels down a wire, the global broadcast sees a link and leaves it alone.
Quirks worth knowing
If the noise output comes back empty or None, your ComfyUI predates comfy_extras.nodes_custom_sampler - update ComfyUI, that's all. And remember the mode default is "before", so if the number on screen isn't the one that produced your last image, check whether you (or a shared workflow) flipped mode to control_after_generate - that's the same trap the built-in seed widgets have, just wearing a toggle instead of a dropdown. The 🎲 button under the node rolls a fresh random seed and queues immediately.
Installation
Part of hwprinz/ComfyUI-HWP-Nodes (four nodes, MIT, zero Python dependencies, no model files). ComfyUI Manager → search "ComfyUI-HWP-Nodes", or:
cd ComfyUI/custom_nodes
git clone https://github.com/hwprinz/ComfyUI-HWP-Nodes
Restart ComfyUI and look for HWP Seed Node under the HWP category. You'll see a rainbow banner in the console when it loads - that's normal, it's just the pack's registration message.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| value | INT | 00–18446744073709550000 | — |
| modeopt | BOOLEAN | true | — |
| actionopt | COMBO | 4 options: fixed, increment, decrement, randomize | |
| last_seedopt | STRING | — | |
| max_seedopt | INT | 00–18446744073709550000 | Maximum seed value (0 = default: 1125899906842624) |
| loggingopt | BOOLEAN | false | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| seed | INT | — |
| noise | NOISE | — |