Nodes/Fantastic Loras/Fantastic Seeds ๐ŸŒฑ
ComfyUI Node

Fantastic Seeds ๐ŸŒฑ

A seed node that actually remembers what it just ran

By AdudeguymanยทCreated 3 months agoยทUpdated 16 days agoยท 17
Fantastic Seeds ๐ŸŒฑ
    • seed
    โ—„seed0โ–บ
    โ—„modefixedโ–บ
    โ—„history[]โ–บ

    Every ComfyUI user has had the moment: you generate something good, want to tweak one prompt word, and realize you have no idea what seed the run used. The stock KSampler just rolls a new one each time unless you manually freeze it. Fantastic Seeds is the fix - a seed source with three modes and a history of your last 10 queued seeds, so a good result is never lost to the noise.

    It shipped in v2.2 of the Fantastic Loras pack, and it's the smallest node in the suite. It's also the most broadly useful, because unlike every other node here it has nothing to do with LoRAs - you can drop it into any workflow where you care about reproducibility.

    The modes

    • Fixed - the seed stays exactly what you set. This is the mode you want for debugging or for a series you want consistent.
    • Randomize - rolls a fresh seed every time you queue. What the stock KSampler does by default, except now the rolled value is visible and recorded.
    • Locked random - rolls once, then holds that value until you unlock it. Think of it as "random, but frozen," which is the right mode when you want variety across runs but a stable point to tweak from.

    On top of that there's a history of the last 10 seeds you queued, so when one produces something worth chasing you can see exactly what it was and pin it.

    The fix-seed habit matters more with the rest of this pack than almost anywhere else. The Plotter's whole job is comparing LoRAs and strengths, and a comparison with a random seed per cell tells you nothing - you're changing the noise alongside the variable. A seed node with a history is the natural companion to that workflow.

    How it works

    The Python side is deliberately dumb. Three inputs - seed (INT), plus hidden mode and history strings that the frontend manages. The node emits the resolved seed as a single seed INT output that you wire into a sampler's seed input. Crucially, the frontend writes a fresh seed into the widget before submitting in randomize mode, so ComfyUI's IS_CHANGED check sees a new value and actually re-runs - the mechanism is just "browser writes the number, backend passes it through." It clamps out-of-range values (modulo the max) so you can't feed a sampler garbage.

    Inputs and outputs

    • seed (INT) - the seed value. In fixed mode, what you type is what you get; in randomize mode it's rewritten on each queue.
    • mode (STRING, hidden) - fixed, randomize, or locked-random; chosen in the UI.
    • history (STRING, hidden) - the last 10 seeds, kept by the frontend.
    • Output: seed (INT) - wire to your sampler.

    Install

    Same one-liner as the rest of the pack:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Adudeguyman/comfyui_fantastic-loras
    

    or ComfyUI Manager โ†’ search Fantastic Loras. Restart ComfyUI and hard-refresh the browser afterward; there are no dependencies.

    Common issues

    Honestly, not much to trip on - this is a ~40-line node. The one thing to know: the history is kept in the node's state, so it persists with the workflow but the history list clears with a fresh node. If your seed input looks frozen, check the mode - "fixed" does exactly what it says. And if the node is blank after an update, the usual pack advice applies: hard-refresh, then restart if it persists. It's the utility-node definition of "just works," which is precisely why you'll end up using it everywhere.

    Categoryloaders

    Inputs (3)

    NameTypeDefaultDescription
    seedINT00โ€“1125899906842624โ€”
    modeSTRINGfixedโ€”
    historySTRING[]โ€”

    Outputs (1)

    NameTypeDescription
    seedINTโ€”