Nodes/jlc-comfyui-nodes/ JLC Seed Generator
ComfyUI Node

 JLC Seed Generator

The Seed Node That Stops Your Base Seed From Walking Away

By Damkohler·Created 6 months ago·Updated 2 days ago· 24
 JLC Seed Generator
    • seed
    • seed_int
    seed0
    spacer──────── seed display ────────

    Every ComfyUI user has hit this: you set control after generate to increment, queue four runs, and your visible seed marches off to 5 while you're trying to remember what seed you actually started from. JLC Seed Generator fixes the annoying half of that. It's a shared seed source that keeps your base seed visible and stable, while a display row tells you the last seed the sampler actually used.

    The use case is a workflow where one seed has to feed several places: multiple samplers, or multi-stage inference where stage one makes a latent and stage two partially denoises it with the same seed. Wire seed_int into every KSampler seed input and they all march together per run. That's the whole point of the "shared" in shared seed source.

    How it works

    The backend does nothing clever: it uses ComfyUI's normal control after generate queue behavior, so the per-run seed values (increment, decrement, or randomize) go out in the prompt data exactly as ComfyUI would do it. The clever part is frontend. A companion script (jlc_seed_display.js) restores the visible widget to your original base seed after queueing and paints the last seed actually used into a display row.

    That explains the second "input" in the schema, which trips everyone up: a spacer STRING field that looks like a text input but is really a reserved display row. Type all you want; the backend ignores it. If the frontend script is unavailable, it just sits there as an inert separator line and nothing breaks.

    Outputs: seed is a small SEED-style dictionary (handy for consumers that expect one), and seed_int is the plain integer you'll actually reach for when wiring sampler sockets.

    Why you'd want it over a stock seed widget

    Parameter trials. The author's design goal is that you can queue several variations, abort, tweak parameters, and still see the original starting seed in the input without having to remember or restore it. In a multi-stage workflow it also keeps you honest: one seed source feeding both samplers means you're actually testing the change you made, not a seed change you didn't notice - which is the exact "lock the seed, change one variable" discipline that most parameter experiments quietly violate.

    The one real limitation

    randomize mode. With randomize, ComfyUI may generate a different sequence of random seeds per queued run, and while the display shows you the last seed actually used, the node doesn't yet replay an entire randomized sequence. The pack's own docs flag this as a planned feature, not a current one. So: use it confidently with fixed, increment, and decrement; treat randomize as "shows you what happened," not "lets you reproduce it."

    Install

    It's part of jlc-comfyui-nodes by Damkohler, on the ComfyUI Registry and in ComfyUI Manager:

    # ComfyUI Manager:  Install Custom Nodes → search "JLC ComfyUI Nodes"
    # or manually:
    cd ComfyUI/custom_nodes
    git clone https://github.com/Damkohler/jlc-comfyui-nodes.git
    

    Restart after installing. No extra Python dependencies, no model files. If the display row ever shows nothing, the node still works - it just means the frontend script didn't load, so refresh the page and check your browser console.

    Categoryutils/seed

    Inputs (2)

    NameTypeDefaultDescription
    seedINT00–9223372036854776000Stable base seed input. During queued runs, ComfyUI may use incremented, decremented, or randomized seeds, but this visible input is restored to the value you entered. The display row below shows the last seed actually used.
    spacerSTRING──────── seed display ────────This row shows the last seed actually used; the seed input above remains the starting seed.

    Outputs (2)

    NameTypeDescription
    seedSEED
    seed_intINT