ComfyUI Node

Seed

The Seed node that exists to be pushed around by something else

By Pseudotools·Created 2 years ago·Updated 7 days ago· 4
Seed
    • seed
    seed0

    PseudoSeed is the pack's "Seed" node, and on the surface it's almost insultingly simple: one integer input, one integer output, straight pass-through. You type a seed, it hands it to the sampler. ComfyUI has had a widget for that forever, so why does this exist?

    Because in the Pseudocomfy world this node isn't meant to be hand-edited. It's meant to be driven. The whole pack is built around a parametric pipeline where the Rhino Pseudorandom plugin (from the same people, for architectural rendering) submits workflows and rewrites values on every run. PseudoSeed is the control surface that plugin reaches for. The author even says so in the code docstring: drop it wherever a seed is needed and let external tooling set the value via the node's widgets_values in the submitted workflow, rather than touching it yourself.

    The clever bit is the widget name. The input is deliberately called seed, not value or val - and ComfyUI sees a widget named seed and automatically attaches its standard control_after_generate menu (fixed / increment / decrement / randomize). So you get the familiar little dropdown for free, plus the API hook for the plugin. That's the entire trick, and it's a good one: the node is a compatibility shim between "seed as a graph value" and "seed as something external automation can set."

    Inputs and outputs

    Just the two things that matter:

    • seed (INT, 0 to 2^64-1) - the value. Default 0.
    • Output seed (INT) - the same value, passed through.

    Wire the output into the seed input of a KSampler (or any sampler's seed port) and you're done. Nothing else to configure.

    How it fits the workflow

    The practical payoff is batch variation. The one-variable-at-a-time rule - lock the seed, change one thing, compare - only works if a seed can be held fixed while everything around it changes. In a Rhino-driven pipeline where the plugin is pushing new prompts and masks every run, PseudoSeed is what lets you keep the noise fixed across those runs, or step it on purpose when you want fresh variation. If you're just doing ordinary one-off generation in ComfyUI, the built-in seed widget on the KSampler does the same job and you don't need this node. It earns its place only when something external needs to grab that knob.

    Installation

    Same as the rest of the pack - it ships in Pseudocomfy:

    # ComfyUI Manager: Custom Nodes Manager > search "Pseudocomfy" > Install
    
    # or manually:
    cd ComfyUI/custom_nodes
    git clone https://github.com/Pseudotools/Pseudocomfy.git
    

    Restart ComfyUI after. On the Windows portable build you'll also want diffusers installed into the embedded Python (see the pack README's first step) - the vars and seed nodes themselves don't need it, but the pack's bigger pipeline does.

    Troubleshooting

    There's genuinely not much to break here. A few things worth knowing:

    • No randomize menu? If you don't see control_after_generate on the widget, you're on an older ComfyUI or the node class got renamed by another pack. It should appear automatically because the widget is named seed.
    • It prints [pseudocomfy] PseudoSeed: <n> to the console on every run. Harmless, but it's how you can confirm external tooling actually wrote the value you think it did.
    • Seed reproducibility across GPUs and precision settings is imperfect - a seed isn't a promise, it's a strong hint. Don't blame the node when a seed behaves differently on someone else's hardware.

    For a node this small, that's the whole story. If you're not running the Rhino pipeline, the KSampler's own seed widget is the thing you want; if you are, this is the thing that lets your automation reach in and turn the dial.

    CategoryPseudocomfy/Vars

    Inputs (1)

    NameTypeDefaultDescription
    seedINT00–18446744073709550000

    Outputs (1)

    NameTypeDescription
    seedINT