Jakkanna SCAIL-2 Upstream Noise
The seed is the manifest's proof, not a KSampler detail
- latent
- noise
- noise_report
Every diffusion render starts from noise, and for reproducible runs the noise has to be the noise. In a stock ComfyUI graph the seed lives inside a KSampler and the noise gets generated wherever the sampler feels like it - fine for day-to-day work, but awkward when you want to prove that run A and run B differ only by their seed. Jakkanna SCAIL-2 Upstream Noise pulls that step out into the open: it generates the noise tensor itself, from a seed you control, and hands it to the sampler as an explicit input.
It's the "Upstream" part that matters. The production workflow feeds this node's noise into SamplerCustomAdvanced alongside the latent and the sigmas, so the random source is deterministic, visible, and recorded - the same reproducibility-first philosophy as the rest of the Validate family.
How it works
Two inputs:
- latent (LATENT) - the latent the noise must match. The node reads its shape (and device) from this, so the noise is always the right size.
- noise_seed - default 42. A plain integer seed.
It generates torch.randn of exactly that shape, as float32, on the active CUDA device, with a generator seeded from your value. If the latent shape ever disagrees with what it built (say, a resolution change upstream), it raises a shape-mismatch error rather than hand the sampler the wrong-sized noise.
Outputs:
- noise (NOISE) - the tensor, wrapped so the sampler can consume it directly.
- noise_report (STRING) - JSON recording the seed, shape, dtype, generator device, and a sha256 of the noise bytes. That digest is the interesting part: it goes into the reproducibility manifest so a future run can verify the exact noise that produced a given video.
Install
Part of the teenu/ComfyUI-Jakkanna pack - install once and all the SCAIL-2 nodes appear. ComfyUI Manager: search Jakkanna → Install → restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/teenu/ComfyUI-Jakkanna.git
cd ComfyUI-Jakkanna
pip install -r requirements.txt
Restart, and remove the upstream vnccs-utils first if present - same node IDs, can't coexist.
When it's worth it
If you never re-run with a fixed seed, this node is overhead; a plain KSampler with a seed widget does the same thing invisibly. Where it earns its keep is the "fixed seed, change one input, compare outputs" workflow - with execution caching on, the unchanged nodes don't re-run and you get genuinely comparable variants, which is exactly how the bundled Pose Studio + Krea 2 animation workflows are designed to be used. The sha256 in the report is the receipt for that comparability.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| latent | LATENT | — | |
| noise_seed | INT | 420–18446744073709550000 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| noise | NOISE | — |
| noise_report | STRING | — |