Nodes/va-nodes/VA Seed
ComfyUI Node

VA Seed

Reroll with one click, and it remembers the seed you just burned

By vahidzxc·Created 2 years ago·Updated about a year ago· 2
VA Seed
    • seed
    seed0
    previous_seed0

    You know the pain this node exists for: KSampler finally gives you something good, you nudge the prompt, and the seed that got you there is already gone because "control_after_generate" rolled it away. VA Seed is a tiny answer to that specific annoyance - a pass-through seed node with a 🎲 button that rerolls and stashes the old seed where you can actually see it before it does.

    It ships in va-nodes by vahidzxc, a small work-in-progress pack (the README says so itself). This is the pack's flagship node, and it's about as light as a custom node gets: zero Python dependencies, zero models, just one INT in and one INT out.

    How it actually works

    The Python side is almost boring. process() takes the seed you feed it and returns it unchanged, tracking the last value it saw. The real behavior lives in the frontend extension (js/va_seed.js). Clicking the 🎲 button copies the current seed into previous_seed, picks a fresh random value up to 2^40, then calls app.queuePrompt() so ComfyUI actually fires a run.

    Now the honest bit. The README's headline feature is "smart re-execution control" that supposedly skips unnecessary workflow runs via an IS_CHANGED hook. As written, that guard effectively never fires - the flag it checks is set on the node instance, but IS_CHANGED reads it off the class, so the two never meet. It doesn't break anything, because changing the seed widget already re-queues the run downstream. Just don't buy the "prevents unnecessary runs" claim. It's a reroll button that remembers your old seed, and that's a perfectly fine thing to be.

    The inputs and output that matter

    Only two inputs, and you touch one of them:

    • seed (INT, 0 to 2^40 ≈ 1.1 trillion) - the value passed through to your sampler. Usually you don't type here; you click 🎲.
    • previous_seed (INT, readonly) - set automatically by the button to the seed you had before. This is the whole selling point: when you like an image, you can read back exactly what produced it instead of guessing.
    • Output: seed (INT) - wire this into the KSampler's seed input.

    One note so you're not surprised: the 2^40 ceiling is actually smaller than KSampler's own 64-bit range. At a trillion-plus values you'd have to burn a new seed every second for about 35,000 years to notice, so treat it as a non-issue.

    Installing it

    Easiest via ComfyUI Manager: search va-nodes and hit install, then restart. Or the manual way:

    cd ComfyUI/custom_nodes
    git clone https://github.com/vahidzxc/va-nodes
    

    Then restart ComfyUI. The requirements.txt explicitly says standard library only, so there's nothing else to install - no torch-adjacent surprises, no model downloads. Needs Python 3.10+.

    Gotchas worth knowing

    • The README's clone URL is stale. It points at va_nodes.git (underscore); the real repo is vahidzxc/va-nodes (dash). Use the one above or let Manager handle it.
    • No 🎲 button after install? The frontend extension didn't load. Restart ComfyUI properly, then hard-refresh the browser tab (Ctrl+Shift+R) - stale cached JS is the usual culprit.
    • previous_seed is readonly, so you can't paste a seed back into it. To restore an old image, set seed to the recorded value manually.

    Should you switch your whole workflow over to it? Probably not - KSampler's built-in randomize toggle already covers most of this, and if you want serious seed tooling the bigger packs (rgthree, Efficiency) give you far more. But if you want one small node that keeps your seed history visible without dragging in a mega-pack, this does the job. Pair it with the classic discipline - lock the seed, change one parameter at a time, compare - and the "what seed was that?" moment stops happening entirely.

    Categoryva_nodes

    Inputs (2)

    NameTypeDefaultDescription
    seedINT00–1099511627776
    previous_seedINT00–1099511627776

    Outputs (1)

    NameTypeDescription
    seedINT