Seed
One Seed Node to Feed Every Sampler in the Graph
- SEED
What it is
Seed is a standalone seed source for the whole graph - one node whose output you fan out to every sampler, every filename, every LoRA that needs a seed, instead of juggling the little seed widget on each KSampler. And it does the three things a seed control needs to do: randomize, increment, decrement. It's adapted from the beloved rgthree Seed node, and if you've used that one, this will feel familiar in the best way.
Why bother, when every KSampler already has a seed box? Because a seed defined in one place and wired to five consumers is a seed you can change once and know stayed consistent everywhere. The "one seed, five samplers" pattern from the plumbing docs is exactly this node. And because it's a value source, it fixes the other half of the seed problem: the widget's behavior after a run. Here, randomization is explicit - you choose when it rolls.
How it works
The node maintains its own internal random state (it deliberately seeds that state from the clock at load, so server-generated seeds are actually random rather than whatever an extension left the global state in). It can produce 32-bit or 64-bit seeds, and it handles the special values itself: -1 generates a new random seed, -2 increments the last one, -3 decrements. The frontend wires up the little buttons, and the fingerprint_inputs hook makes sure the node reports itself as changed whenever one of those special modes fires - which is what forces the graph to actually re-run with a new seed instead of reusing the cache.
The bit-depth option is worth a moment because it's a compatibility thing: 32-bit seeds max out around 4.3 billion, which is plenty for most samplers, while 64-bit is the full modern range. If you're sharing a workflow with someone on older tools, 32-bit keeps seeds portable.
The inputs and outputs that matter
- seed - the current value. Set
-1for random,-2to increment,-3to decrement. - bit_depth - 64-bit (default) or 32-bit.
Output:
- SEED - the resolved seed as an INT, ready to fan out to samplers and anything else that wants one.
When you'd use it
Any workflow with more than one seed consumer, or any workflow where you want seed behavior that's readable at a glance rather than buried in a KSampler's dropdown. Want to keep a good seed while tweaking settings? Set it fixed. Want each run different? Put it on random. Want a batch that walks seeds? Increment mode. It also plays nicely with the pack's seed-integration nodes (the Get First/Last Image preview-culling machinery uses it).
Installing it
Ships with ComfyUI_Eclipse:
cd ComfyUI/custom_nodes
git clone https://github.com/r-vage/ComfyUI_Eclipse
pip install -r ComfyUI_Eclipse/requirements.txt
then restart, or use Manager and search "Eclipse". As with the whole pack (formerly RvTools_v2), old pre-v4.0.0 workflows may need the bundled migration tool.
Common issues
The classic seed injury from the plumbing docs applies here too, just in reverse: because this node controls seed explicitly, a "fixed" seed that isn't actually fixed is usually the KSampler's own control_after_generate dropdown doing its thing downstream. Set the sampler's control to fixed if you want the node's value to be final. And if random mode produces the same seed repeatedly, that's the special-value handling - -1 must actually reach the node for it to roll, not a resolved constant. When in doubt, the embedded workflow in a PNG you liked will tell you exactly what seed made it.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| bit_depth | COMBO | 64-bit | Select the bit-depth of the generated seed. |
| seed | INT | 0-3–18446744073709550000 | Random seed. Use -1 for random, -2 to increment, -3 to decrement. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| SEED | INT | — |