Nodes/ComfyUI-Flux-Reference-Tools/Flux Multi Reference Latent ⚡
ComfyUI Node

Flux Multi Reference Latent ⚡

The hub that feeds up to 8 reference images into any Flux-family model

By ChrisColeTech·Created 5 days ago·Updated 5 days ago· 2
Flux Multi Reference Latent ⚡
  • positive
  • negative
  • latent_1
  • latent_2
  • latent_3
  • latent_4
  • latent_5
  • latent_6
  • latent_7
  • latent_8
  • positive
  • negative

Every other node in the ComfyUI-Flux-Reference-Tools pack assumes there are already reference latents riding along in your conditioning. Flux Multi Reference Latent is the node that puts them there. It's the hub - the thing you wire up to eight VAE-encoded images into, and it hands both positive and negative conditioning to everything downstream. If you're building one of the multi-reference edit chains this pack is famous for, this is where the chain starts.

Here's the context that makes it worth understanding. Flux-family models (Kontext, and Flux.2 Klein especially) have reference-image conditioning built into the architecture - that's the whole reason "give the edit model a reference" became the standard 2026 workflow for character consistency rather than IP-Adapter and friends, which stopped loading past SDXL. The stock mechanism hangs off conditioning metadata keys called reference_latents and reference_latents_method. This node just writes those keys the same way comfy's own code does, using node_helpers.conditioning_set_values - no custom conditioning format, nothing Klein-specific.

How it works

Each connected LATENT's batch is split into individual references - a batch of 3 becomes 3 separate references, not one 3-image reference - and the full list is attached to both your positive and negative conditioning at once, using comfy's indexed reference method (reference_latents_method="index"). The "index" layout places references at simple sequential RoPE-index offsets rather than spatial tiling, which is exactly what the token-slice math in the pack's other nodes (Flux Ref Latent Controller, Flux Ref Latent Weight) depends on. Feed it via Flux Multi Reference Latent and the K/V-scaling nodes can find each reference's tokens predictably.

One behavior to know before it bites you: this node overwrites any existing reference_latents rather than appending. Stock ReferenceLatent chains by accumulating; this one replaces. That's deliberate - matching comfy's behavior - but it means you can't stack two of these to get 16 refs, and you should keep the node order in your graph intentional.

The inputs that matter

  • positive / negative - your CLIP-encoded conditioning from a Flux text encode (or the ConditioningCombine output). Both get the references; don't skip the negative, the mechanism expects it there too.
  • latent_1 (required) through latent_8 (optional) - VAE-encoded reference images. Leave unused ones disconnected.

Outputs are positive and negative CONDITIONING - wire them forward into your reference controllers and finally the KSampler.

Where it sits in the workflow

A typical pack chain from the README:

FluxMultiReferenceLatent (up to 8 LATENT inputs)
        │  positive, negative
        ▼
FluxRefLatentController (per-reference K/V scale + spatial fade)
        │  model, conditioning
        ▼
   stock KSampler

The reference-attachment node goes right after your CLIP encoders; detail/text/mask controllers sit between it and the KSampler.

Install

The whole pack installs identically and needs nothing extra - no pip deps beyond what ComfyUI already ships, no model downloads:

cd ComfyUI/custom_nodes
git clone https://github.com/ChrisColeTech/ComfyUI-Flux-Reference-Tools

Restart and search "Flux Multi Reference Latent" under 🤖 CCTech/Flux Reference. ComfyUI Manager finds it as "ComfyUI-Flux-Reference-Tools" too.

Common issues

  • References don't show up at all. Two causes dominate: the checkpoint isn't a Flux-family model (the mechanism is baked into comfy's Flux attention blocks - it will do nothing on an SDXL/UNet checkpoint), or the reference never made it into conditioning because you wired the node after something that rebuilt conditioning from scratch.
  • Wrong reference is being scaled. Reference ordering matters - reference_index on the controller nodes counts latents in the order you attached them here, starting at 0.
  • You expected chaining and got overwrite. As above - this is replace, not append. Re-order your graph rather than stacking.

It's a new pack (extracted from the author's Comfy-GGUF Klein port in August 2026), so there's not much community lore to lean on yet - but the mechanism is stock comfy, which is the reassuring part: it's not a fork of the sampler, it's a tap into plumbing comfy already exposes.

Category🤖 CCTech/Flux Reference

Inputs (10)

NameTypeDefaultDescription
positiveCONDITIONING
negativeCONDITIONING
latent_1LATENT
latent_2optLATENT
latent_3optLATENT
latent_4optLATENT
latent_5optLATENT
latent_6optLATENT
latent_7optLATENT
latent_8optLATENT

Outputs (2)

NameTypeDescription
positiveCONDITIONING
negativeCONDITIONING