H3 CLIP Loader (safetensors + GGUF)
The text encoder loader that won't silently lose your reference images
- CLIP
One dropdown, two formats, and - the part that matters - it refuses to fail silently. H3ClipLoaderAny loads the H3 text encoder whether it's a .safetensors file or a quantized .gguf, and it's the loader this pack tells you to use instead of the stock CLIPLoaderGGUF. Not because it's faster, but because the stock one has a trap that's specific to H3.
Here's the trap. H3's encoder needs two files: the text encoder itself and a -mmproj-*.gguf vision sidecar, which is what carries frames between shots. ComfyUI-GGUF pairs them by filename, scanning only the encoder's folder for a .gguf containing both mmproj and the encoder's stem. Rename either file, or split them across folders, and the pairing fails - and upstream's behavior on that failure is the nasty part: it logs an error and continues without the vision tower. Your model then quietly ignores your reference images, which presents as "why is my ref doing nothing?" hours into a render. This loader's behavior on the same failure is to raise instead of continuing blind.
The inputs that matter
clip_name- dropdown of text encoders; safetensors or GGUF, routed automatically.type- the architecture type. It's a 28-option enum covering most of ComfyUI's encoder types, but for H3 you want theminimaxtype. Get this wrong and you'll get a shape mismatch or a weird load; the bundled workflows already have it set.mmproj_name- the escape hatch.(auto)uses ComfyUI-GGUF's filename pairing, but with two extra behaviors: if auto finds nothing and exactly one mmproj sits beside the encoder, it uses that one and says so; and if you pick a file explicitly here, names and folders stop mattering entirely.
One output, CLIP, wired to your conditioning node. For GGUF encoders, this loader also runs the same vision key-renaming that (auto) does on the explicitly-named path - a historical bug where naming a file directly skipped the rename and died in a matmul twenty minutes later is fixed, and it uses ComfyUI-GGUF's own key map so it tracks upstream changes.
Install
Ships in the H3 Multishot pack:
cd ComfyUI/custom_nodes
git clone https://github.com/jlucasmcrell/ComfyUI-H3-Multishot
or ComfyUI-Manager → H3 Multishot (Registry comfyui-h3-multishot). Restart; ComfyUI v0.30.0+.
Two more install notes specific to this node. If you use GGUF encoders, you also need ComfyUI-GGUF installed. And the encoder model itself lives in models/text_encoders/ - grab it from huggingface.co/Comfy-Org/MiniMax-H3 (the -mmproj sidecar comes with it). If you still hit a state_dict or vision mismatch after switching to this loader, set mmproj_name directly to the sidecar - that bypasses filename pairing entirely and is the documented fix for that symptom.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| clip_name | COMBO | safetensors or GGUF - routed automatically. GGUF encoders auto-pair their -mmproj vision sidecar. | |
| type | COMBO | 28 options: stable_diffusion, stable_cascade, sd3, stable_audio, mochi, ltxv, +22 | |
| mmproj_nameopt | COMBO | (auto) | Vision sidecar for a GGUF encoder. '(auto)' uses ComfyUI-GGUF's pairing, which matches on FILENAME inside the encoder's own folder - rename either file, or split them across folders, and the match fails. If auto finds nothing and exactly one mmproj sits beside the encoder, that one is used anyway. Pick a file here to override entirely; then names and folders do not matter. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CLIP | CLIP | — |