VELVET VICE MiniMax H3 — System Hub
The single panel that runs your whole MiniMax H3 backend — and the second sampler hiding inside it
- model_config
- video_vae_name
- audio_vae_name
- ready
- status
- turbo_config
- refine_enabled
- refine_steps
- refine_denoise
- refine_preserve_audio
- refine_reencode_enabled
- refine_reencode_scale
- refine_status
If the Velvet VICE MiniMax H3 pack has a captain's chair, this is it. The System Hub is the one surface where you decide how the whole local H3 stack is going to run - native weights or GGUF, which text encoder, which of the two VAEs, whether the turbo LoRA path is on, and since v1.4.5, whether a second "Quality Refine" sampling pass runs after the first.
Here's the part that trips people up, so get it early: the hub resolves and validates, but it does not load. It's not a giant loader. It checks what's installed, picks a coherent combination, and hands you a custom model_config object plus a bunch of _name strings and booleans. Separate internal router nodes - the Model Router, VAE Router, Turbo Director - do the actual heavy lifting after a prompt barrier fires. That split is deliberate: model loading only starts once preflight has confirmed the files and RAM are there, so you don't blow up 30 seconds in because you forgot the audio VAE.
The inputs worth knowing:
- model_backend - AUTO / NATIVE / GGUF. AUTO tries NATIVE first (or GGUF first, per
auto_preference) and falls back to whichever is actually usable whenfallback_if_missingis on. - native_model / gguf_model / text_encoder / video_vae / audio_vae / turbo_lora - all AUTO by default, each listing what you actually have installed. Text encoder is the interesting one: one selector covers both native safetensors and GGUF Qwen encoders and routes to the matching loader automatically. GGUF only works if you have the ComfyUI-GGUF extension installed, and the audio VAE must stay native - there's no GGUF VAE loader.
- native_weight_dtype -
defaultplus the fp8 family. If the full-precision stack won't fit, fp8 here is the first lever.text_encoder_devicecan pin the Qwen encoder tocpu, which is a real escape hatch because that 32B-class encoder is a second VRAM budget all by itself. - base_steps / turbo_steps - 20 / 8 by default; turbo only matters when a compatible turbo LoRA is installed.
- The Quality Refine block (v1.4.5):
quality_refine_enabledis OFF by default and when off it's a true lazy bypass - pass 2 is never even requested. Turn it on and pick LIGHT (denoise 0.12), HIGH (0.20), or CUSTOM (denoise 0.01–0.35, steps 1–16).quality_refine_preserve_audiokeeps pass-1 audio while pass 2 refines the video latent. This is a classic second-sampler trick - sample fast, then clean up with a low-denoise re-run - folded into the hub instead of a loose test panel.
Outputs: model_config (the custom dict that feeds the internal routers), video_vae_name and audio_vae_name (strings), ready (a BOOLEAN - the whole pack keys off it), status (read it: when ready is false, status tells you which file or plugin is missing), turbo_config, and the refine outputs (refine_enabled, refine_steps, refine_denoise, refine_preserve_audio, refine_status).
Install and the files it wants
cd ComfyUI/custom_nodes
git clone https://github.com/Velvet-Vice/velvet-vice-minimax-h3
Restart, or use Manager and search "velvet-vice-minimax-h3". No pip dependencies. It expects, in the usual model folders:
diffusion_models/minimax_h3_fl2va_pruned_int8_convrot.safetensors(native) or a GGUF equivalent- a Qwen3-VL H3 text encoder (
qwen3vl_32b_minimax_h3_nvfp4_awq.safetensorsnative, or GGUF) vae/minimax_h3_video_vae_fp16.safetensorsandvae/minimax_h3_audio_vae_fp32.safetensors- optionally
loras/minimax_h3_fl2v_turbo_8step_v1.0_comfyui_bf16.safetensors
Where people get burned
ready = false almost always means one file is missing or a GGUF VAE snuck in - the status string names it. If the hub says the backend is "not usable," check that ComfyUI-GGUF is actually installed before blaming the model. And remember the licensing reality of H3 itself: the official weights' community license excludes the US, EU, UK and Korea, so double-check you're allowed to run them where you are before committing a weekend of VRAM to it.
Inputs (24)
| Name | Type | Default | Description |
|---|---|---|---|
| model_backend | COMBO | AUTO | 3 options: AUTO, NATIVE, GGUF |
| auto_preference | COMBO | NATIVE | 2 options: NATIVE, GGUF |
| native_model | COMBO | AUTO | 1 options: AUTO |
| gguf_model | COMBO | AUTO | 1 options: AUTO |
| text_encoder | COMBO | AUTO | 1 options: AUTO |
| video_vae | COMBO | AUTO | 1 options: AUTO |
| audio_vae | COMBO | AUTO | 1 options: AUTO |
| turbo_lora | COMBO | AUTO | 1 options: AUTO |
| turbo_model_strength | FLOAT | 1.00-4–4 | — |
| base_steps | INT | 201–80 | — |
| turbo_steps | INT | 81–80 | — |
| quality_refine_enabled | BOOLEAN | false | — |
| quality_refine_mode | COMBO | LIGHT | 3 options: LIGHT, HIGH, CUSTOM |
| quality_refine_custom_steps | INT | 81–16 | — |
| quality_refine_custom_denoise | FLOAT | 0.180.01–0.35 | — |
| quality_refine_preserve_audio | BOOLEAN | true | — |
| quality_refine_reencode_enabled | BOOLEAN | false | — |
| quality_refine_reencode_scale | FLOAT | 1.251–2 | — |
| strict_turbo_compatibility | BOOLEAN | true | — |
| turbo_bypass_on_missing | BOOLEAN | true | — |
| native_weight_dtype | COMBO | default | 4 options: default, fp8_e4m3fn, fp8_e4m3fn_fast, fp8_e5m2 |
| text_encoder_device | COMBO | default | 2 options: default, cpu |
| fallback_if_missing | BOOLEAN | true | — |
| unload_on_backend_change | BOOLEAN | true | — |
Outputs (13)
| Name | Type | Description |
|---|---|---|
| model_config | VELVET_VICE_H3_MODEL_CONFIG | — |
| video_vae_name | STRING | — |
| audio_vae_name | STRING | — |
| ready | BOOLEAN | — |
| status | STRING | — |
| turbo_config | VELVET_VICE_H3_TURBO_CONFIG | — |
| refine_enabled | BOOLEAN | — |
| refine_steps | INT | — |
| refine_denoise | FLOAT | — |
| refine_preserve_audio | BOOLEAN | — |
| refine_reencode_enabled | BOOLEAN | — |
| refine_reencode_scale | FLOAT | — |
| refine_status | STRING | — |