Lumi Noise To Seed
Got a NOISE object? Here's the integer hiding inside it
- noise
- seed
Somewhere in the newer ComfyUI API, seeds stopped being just integers. You can hand a sampler a NOISE object instead - a whole bundle that carries its random state - and that's genuinely more flexible. But plenty of other nodes still want a plain INT seed, and that's exactly the gap Lumi Noise To Seed exists to close. It takes a NOISE input, reaches inside, and pulls out the integer seed that generated it.
It's a bridge node, one of those small utilities you don't appreciate until a workflow refuses to build because a KSampler output a NOISE and your wildcard processor demanded an INT. Wire the NOISE in, get the seed out, and everything downstream that wants a boring old number is happy again - and it's the same seed, so your noise and your downstream random choices stay in lockstep.
The input and output
- noise - a
NOISEobject, the kind you get from a RandomNoise-style node in ComfyUI's newer API. The node reads itsseedattribute. - Output: seed, an
INT. Feed it into any node that takes an INT seed - samplers, wildcard processors, the Lumi LLM and imagen nodes, anywhere a numeric seed is the contract.
Under the hood it's deliberately tiny: it accepts the object, looks for a seed on it (whether it's a dict or an object with a .seed attribute), coerces it to an int, and passes it through. If there's no seed to find, it raises a clear error rather than guessing.
Installing
cd ComfyUI/custom_nodes
git clone https://github.com/illuminatianon/comfyui-lumi-tools
cd comfyui-lumi-tools
uv sync
Restart ComfyUI, or install "Lumi Tools" via ComfyUI Manager. No special dependencies.
When you actually need it
The honest answer: only when your workflow mixes the two worlds. If you're running classic KSampler-to-INT seed pipelines, you'll never touch this node - your seeds are already integers. The moment a graph hands you a NOISE object and a sibling node complains it wants an INT, this is the exact conversion. One practical gotcha: the value you extract is the seed stored in the noise object, so if you've already advanced a seed's random state, this returns the original value, not the next one - treat it as "the seed that started this noise," because that's precisely what it is.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| noise | NOISE | RandomNoise object to extract the seed from. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| seed | INT | — |