Nodes/LCS/LCS Load Data
ComfyUI Node

LCS Load Data

The boring node every LCS workflow starts with (and why the first run takes forever)

By facok·Created 6 months ago·Updated 2 months ago· 160
LCS Load Data
  • vae
  • lcs_data

The pack's front door

Every node in ComfyUI-LCS needs the little bundle of data this node produces. It's one input, one output, zero sliders - the most boring node in the pack, and also the one you'll forget about until something breaks.

The pack is facok's unofficial community implementation of "The Latent Color Subspace" (ICML 2026). The research claim: color in a diffusion model's latent patch space lives in a 3D subspace, while the remaining 61 dimensions carry structure and detail. Steer those 3 dimensions during sampling and you can re-color a generation training-free - no LoRA, no post-process pass. But before you can steer, you need the basis, and computing it is exactly what LCS Load Data does.

What it actually does

Feed it a VAE. The node fingerprints the VAE's decoder weights (a hash of the first decoder weight tensor) and looks for a cached calibration file named after that fingerprint in the pack's data/ folder. Cache hit → load instantly. Cache miss → run calibration.

Calibration is PCA on real VAE encodings: it encodes 512 solid-color 512×512 images through your VAE, projects the patches into latent patch space, and finds the 3D basis that captures essentially all the color variance. That's 512 VAE encodes, which is why the first run looks frozen. It isn't - give it a minute. The result is saved to disk, so every run after is instant.

The one input that matters

There's only one: vae - and it matters more than it looks. Calibration is cached per-VAE, keyed by that decoder fingerprint. Swap to a different VAE and the node quietly re-computes the basis on the next queue. That's a feature, because the LCS basis genuinely differs per VAE. It also means the slow first run comes back every time you change VAEs.

Install

ComfyUI Manager (search "LCS", the pack title is "ComfyUI-LCS") or the manual route:

cd ComfyUI/custom_nodes
git clone https://github.com/facok/ComfyUI-LCS.git

Then restart ComfyUI. Dependencies are einops and safetensors, which a stock ComfyUI almost certainly already has.

Wiring it in

lcs_data plugs into the lcs_data input on LCS Color Intervene, LCS Color Batch, LCS Tone Adjust, LCS Color Anchor, or LCS Preview Colors. The README's basic chain:

LCS Load Data → LCS Color Intervene → KSampler

The author tests against FLUX, FLUX2.klein, z-image, Wan (qwen-image), and LTX2.3. Since everything is per-VAE, any model with a compatible VAE should work.

Gotchas

  • First run after install or a VAE swap is slow. That's calibration, not a hang. Subsequent runs are effectively free.
  • Don't run two calibrations at once. If you feed two different VAE branches, you're paying for two full 512-image calibrations. Reuse one lcs_data wire.
  • Watch the console. The slow run prints [LCS Calibration] progress lines; if you see a silent node with no log output, something's actually wrong rather than just slow.

Wire this once, stop thinking about it. Everything else in the pack is downstream of it.

CategoryLCS/calibration

Inputs (1)

NameTypeDefaultDescription
vaeVAEVAE model (calibration is cached per-VAE)

Outputs (1)

NameTypeDescription
lcs_dataLCS_DATA