π BV Seed
A seed node that remembers what it last ran, minus the randomize roulette
- seed
The built-in seed control has a workflow-killing habit: hit queue and it silently rolls a new seed unless you remember to lock it, and when it does lock you're stuck with one number until you manually type another. BV Seed is the pack's answer - a fixed, repeatable seed source with a randomize-each-queue mode and, the part people actually miss, a memory of the last seed it generated.
It's a deliberately boring node, and that's the compliment. Like rgthree's seed handling, it exists to make reproducibility not-an-argument while you're iterating. You pick your number, it stays your number, and the queue's other nodes all read the same value.
How it works
One input, seed_bv (default -1), one output, seed (INT). The trick is what -1 means: it's a sentinel for randomize each queue run. Leave it at -1 and every execution gets a fresh random seed, but unlike the core widget, the node remembers that resolved value and reports it back in its UI output - so when you get an image you like, you can read off the actual seed that produced it and pin it, instead of re-rolling the dice and losing the number. Set it to any non-negative value and it's fully fixed.
That "what did it actually use" feedback is the whole point. In the standard ComfyUI flow, if you randomize you often can't recover the seed from the graph after the fact without digging through PNG metadata. This surfaces it in the node's UI output as last_seed.
Because the input widget deliberately never rewrites itself - -1 stays -1 - you don't get the core node's "the value changed under me" surprise mid-workflow. The control_after_generate behavior is disabled; the sentinel is persistent, which is exactly the behavior you want in a batch or Subgraph context.
Where it fits
Use it anywhere a seed input is needed: KSampler, BV Empty Latent Random Ratio, latent rotate, or your own nodes. It's marked Subgraph-safe, which means you can project the control onto a Subgraph interface and the resolved seed still travels correctly. If you want per-branch reproducibility in a multi-sampler workflow, give each branch its own BV Seed rather than sharing one - same seed to two samplers is deliberate, but you should be the one deciding that.
Install
Search BV Node Pack in ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/BlackVortexAI/bv_nodepack.git
Restart, hard-refresh with Ctrl + F5. No dependencies beyond ComfyUI core.
Troubleshooting
Two things trip people up. First: if you set a fixed seed and images still vary, check whether some downstream node is generating its own randomness - the seed only pins what actually receives it. Second: -1 genuinely means "new seed every queue." People occasionally read the -1 in the saved workflow and think the workflow is broken; it isn't, that's the randomize flag doing its job. If you're sharing a workflow, pin a real number first so your recipient gets the same image as you.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| seed_bv | INT | -1-1β18446744073709550000 | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| seed | INT | β |