Nodes/RUM FLUX.2-Klein Native/RUM FLUX.2 Native Match Text Encode
ComfyUI Node

RUM FLUX.2 Native Match Text Encode

The one text-encode node that does all of RUM's conditioning

By Rinne414·Created 5 months ago·Updated 2 months ago· 8
RUM FLUX.2 Native Match Text Encode
  • qwen_clip
  • sdxl_clip
  • positive
  • negative
  • status
prompt1girl, kisaki (blue archive), eating baozi, sitting, indoors
negative_prompt
guidance5.0
use_guidance_embeddingfalse
base_text_tokens200
extra_text_tokens77
sdxl_clip_width2048
qwen_layers10,20,30

If you open a shipped RUM workflow and wonder which node is actually doing the prompt magic, it's this one. RUMFlux2NativeMatchTextEncode is the diffusers-match text encoder: it takes your prompt, runs it through both text streams RUM needs - the FLUX.2 model's Qwen3 4B encoder and the SDXL teacher CLIP - combines them, and hands back the positive and negative conditionings your CFG guider wants. One node, the whole conditioning story.

It exists because RUM isn't a plain LoRA on FLUX.2-Klein. It's RimoChan's cross-architecture distillation: the SDXL anime knowledge (the waiNSFWIllustrious teacher) got transferred into the 4B Klein weights, and reproducing that means conditioning the model the same way it was trained - Qwen base tokens plus teacher CLIP tokens, sliced at very specific lengths.

The inputs that matter

  • qwen_clip - the Qwen3 4B text encoder (qwen_3_4b.safetensors in models/text_encoders/), loaded with a Qwen CLIP loader.
  • sdxl_clip - the waiNSFWIllustrious teacher CLIP pair. Generic clip_l/clip_g won't reproduce RUM.
  • prompt / negative_prompt - yes, the negative gets the exact same treatment as the positive: Qwen 200 tokens at layers 10,20,30 plus SDXL teacher 77 tokens. This is a real-CFG model, not a guidance-distilled one, so negative prompts genuinely work here - a deliberate difference from the distilled Klein weights everyone warns about burning at CFG 1.
  • base_text_tokens (200) - must match RUMFlux2LoadNativeModel and RUMFlux2DiffusersMatchModelPatch, or you get corrupted conditioning.
  • extra_text_tokens (77) - the SDXL chunk length.
  • guidance / use_guidance_embedding - optionally embed guidance into the conditioning.
  • qwen_layers ("10,20,30") - which Qwen hidden-state layers feed the embedding. Exactly three integers; this is a trained-in part of RUM, not a free knob.

Outputs: positive and negative CONDITIONING (into RUMFlux2DiffusersCFGuider), plus a status string showing the token counts. It encodes both prompts on every run, so this node is the chunky one in the graph - that's expected.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/Rinne414/ComfyUI-RUM
cd ComfyUI-RUM
pip install -r requirements.txt
python scripts/download_models.py --comfy-root /path/to/ComfyUI --include-teacher-clip

Restart, then confirm qwen_3_4b.safetensors, both teacher CLIP files, and the RUM checkpoint are visible.

Where people get burned

  • base_text_tokens drift. The 200/200/200 agreement across loader, this node, and the match patch is the single most common failure. Later pack versions validate it and raise instead of corrupting, but old habits die hard.
  • Wrong teacher CLIP. Same seed, different picture than the reference - check that the DualCLIP is the waiNSFW pair.
  • Weighting syntax. Qwen is an LLM encoder; (tag:1.2) and embeddings are inert or worse. Write sentences, not tag soup - the KB's guidance on 2026-era LLM-encoded models applies fully here.
CategoryRUM/native

Inputs (10)

NameTypeDefaultDescription
qwen_clipCLIP
sdxl_clipCLIP
promptSTRING1girl, kisaki (blue archive), eating baozi, sitting, indoors
negative_promptSTRING
guidanceFLOAT5.00–100
use_guidance_embeddingBOOLEANfalse
base_text_tokensINT2001–4096必须与 RUMFlux2LoadNativeModel 和 RUMFlux2DiffusersMatchModelPatch 的 base_text_tokens 一致。
extra_text_tokensINT771–512
sdxl_clip_widthINT20481–8192
qwen_layersSTRING10,20,30

Outputs (3)

NameTypeDescription
positiveCONDITIONING
negativeCONDITIONING
statusSTRING