① Models · Enzino H3 WF ✦
① Models is a form, not a loader — and that's why it never says 'missing'
- ✦
Every ComfyUI workflow starts with a checkpoint loader, so the natural read of ① Models · Enzino H3 WF ✦ is "this is where H3 gets loaded." It isn't. It's the first station on the pack's single ✦ wire, and what it carries forward is a dictionary of choices. Nothing is loaded here at all.
That matters because it changes what you should expect from it. There's no VRAM spike when you tweak it, no red error if a file is absent until you actually run, and no ordering tricks needed. It's a settings record with eight dropdowns, and the loading happens two stops later, in ④ Render, where the pack can cache the patched 33B model and reuse it.
What H3 actually needs
H3 is a 33B model that generates picture and stereo sound together, and its ComfyUI port splits the work across several files. That's why this node has more slots than a normal video setup:
A keyframes diffusion model is the main tower - the thing that renders Text, Image, First + Last and End frame modes. A references model is the second tower H3 uses when you feed it reference pictures, so a References-mode run has to point at a REF2VA file (or at one of the community Hybrid FL+REF merges, which cover every mode in a single 21 GB file and save you a reload when you switch).
A text encoder - Qwen3-VL 32B, quantized to NVFP4 in the recommended file. Two VAEs, because H3 decodes the picture and the soundtrack separately: an int8 video VAE and a required fp32 audio VAE. If the audio VAE slot is empty, you don't get a silent video, you get an error. Then up to two Turbo LoRA slots, one per tower, for the 4-step and 8-step distillations.
weight_dtype is the odd one out: it's ComfyUI's own cast of the loaded weights, with the usual fp8 variants. Leave it on default. You already chose a quantized file two slots to the left, and casting an int8 model again buys you nothing but slower loads.
Why your renamed files still show up
The combo lists only ever contain files that genuinely exist in your model folders - that's deliberate. ComfyUI's newer frontend frames a node in red when a widget names a file that isn't on disk, so the pack builds its lists from folder_paths instead of a hardcoded catalogue.
It also doesn't trust filenames. To decide whether a diffusion file is H3, it reads the safetensors JSON header and looks for video_patch_proj and audio_patch_proj - the same test ComfyUI's own detection uses - so a re-upload that renamed minimax_h3_fl2va... to something meaningless still lands in the right dropdown. Files it can't place are appended after a separator rather than hidden, which is how you get your own experiments into the list.
The one thing it can't do is find a file you never downloaded. Missing weights are the ◆ Models card's job - open it in the node, and it lists what's absent with sizes and resumable download buttons.
Wiring
The output is a single ENZINO_H3 wire labelled ✦, and it goes into ② LoRAs, then ③ Prompt, ④ Render. You can skip ② entirely if you're not stacking LoRAs - the bus is a dict, so each node just merges in its own keys.
Install
ComfyUI Manager → search the pack title, or:
cd ComfyUI/custom_nodes
git clone https://github.com/byenzinoai/ComfyUI-Enzino-H3-Studio
# restart, then Ctrl+F5
No pip packages - the pack's pyproject.toml lists zero dependencies and everything runs on ComfyUI's native MiniMax H3 implementation, so you need a recent ComfyUI. The node comes with the Free edition; nothing here is behind the paywall.
Where people get burned
- References mode with no References model. ④ Render raises for this specifically, because otherwise you'd get a clip that quietly ignored your nine reference pictures. Point this node's references slot at a REF2VA or Hybrid file.
- Half-downloaded weights. A
.partfile inmodels/diffusion_modelsis not a model. If a slot looks populated but the run dies while loading, check for.partleftovers before anything else. - 16 GB cards. The W6A8 keyframes file (16 GB) beats the INT8 one (21 GB) on a 16 GB card, and the pack's low-VRAM feed-forward does the rest. Bigger isn't better here.
- Two copies of the same weights. Keeping an INT8 and a W6A8 build of both towers is 70+ GB of disk for a difference you'll only see at 1 MP and above.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| model_keyframes | COMBO | minimax_h3_fl2va_pruned_int8_convrot.safetensors | 1 options: minimax_h3_fl2va_pruned_int8_convrot.safetensors |
| text_encoder | COMBO | qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors | 1 options: qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors |
| video_vae | COMBO | minimax_h3_video_vae_int8_convrot.safetensors | 1 options: minimax_h3_video_vae_int8_convrot.safetensors |
| audio_vae | COMBO | minimax_h3_audio_vae_fp32.safetensors | 1 options: minimax_h3_audio_vae_fp32.safetensors |
| turbo_keyframes | COMBO | none | 1 options: none |
| weight_dtype | COMBO | default | 4 options: default, fp8_e4m3fn, fp8_e4m3fn_fast, fp8_e5m2 |
| model_references | COMBO | none | 1 options: none |
| turbo_references | COMBO | none | 1 options: none |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| ✦ | ENZINO_H3 | — |