AUN Inputs MiniMaxH3 Basic
One node to load all of MiniMax-H3 (and it does the 17n+5 frame math for you)
- MODEL
- CLIP
- VAE video
- VAE audio
- unet name
- sampler
- scheduler
- cfg
- steps
- seed
- width
- height
- frames
- fps
- frame_rate
- seconds
- rife multiplier
- rife
MiniMax-H3 is a lot of model to wire up: a 33B omni-modal generator that makes its own synced stereo audio - the first credible open answer to Veo's native-audio trick - with a diffusion model, a Qwen3-VL-class text encoder, a video VAE and a separate audio VAE, plus an optional turbo LoRA and frame arithmetic before anything accepts your clip length.
AUNInputsMiniMaxH3Basic is that whole preamble in one node. Pick your files, set sampler and resolution, get MODEL, CLIP, both VAEs and every number the sampler and the reference-to-video node want.
How it works
Nothing exotic underneath: it instantiates ComfyUI's own UNETLoader, CLIPLoader and VAELoader and calls them, so you get the objects those nodes would hand you. clip_type defaults to Minimax - the architecture H3 needs, so a generic SDXL-era CLIP won't do. The turbo LoRA patches the model only, via load_lora_for_models with CLIP strength pinned at 0.0.
The interesting bit is the frame math. H3's video VAE only accepts lengths where length % 17 == 5, so the node multiplies seconds by fps and pads up to the next legal number: five seconds at 24fps is 120 raw frames, so you get 124. Otherwise you find that out as a cryptic error three-quarters of the way through a queue.
The widgets you'll actually set
unet_name,clip_name,video_vae_name,audio_vae_name- the four files. If any dropdown reads<no diffusion models found>, it fails with a plain "A UNET (diffusion-model) file is required" instead of quietly outputting nothing.weight_dtype- mirrors core's UNET loader (default,fp8_e4m3fn,fp8_e4m3fn_fast,fp8_e5m2) and only matters for unquantized weights. On the pruned INT8-ConvRot build most H3 workflows use, leave it ondefault- also the quant for 20/30-series cards, which have no fp8 path.turbo/turbo_lora_name/turbo_lora_strength- on by default, and this is the turbo preset that makes H3 usable: 8 steps, CFG 1.0, beta scheduler. Settingturbo_lora_nametoNonedisables the LoRA even with the toggle on - mildly annoying, thoroughly documented.aspect_ratio+megapixels+multiple- presets and ratios up to 21:9, withwidth/heightused when it'scustom.multipledefaults to 32;aspect_modeswaps the dimensions if you never remember which of 1344×768 means "wide".
Outputs and where they go
MODEL goes to the sampler, CLIP to your text encode, VAE video and VAE audio to two separate VAEDecode nodes. sampler, scheduler, cfg, steps and seed wire into KSampler; the first two are wildcards so a string can drive a dropdown. frames is the sampling count for the reference-to-video node, fps/frame_rate are for VHS Video Combine, and unet name, width, height and seconds are there for filenames.
The tidy trick is RIFE. Flip rife on and fps/frame_rate report fps × multiplier - the post-interpolation rate the combine node needs - while frames keeps reporting the real sampling count, so you never lie to the sampler about what it's making. Wire rife multiplier into AUN's RIFE node so the number lives in one place, and send the rife boolean to an AUN Node Controller switch so RIFE bypasses itself when interpolation is off.
Every *_input socket overrides its matching widget when connected, and filename overrides are forgiving of missing extensions and subfolders.
Install
Manager → search "AUN ComfyUI Nodes", or clone and restart - the dropdowns populate at import:
cd ComfyUI/custom_nodes
git clone https://github.com/loz2754/AUN-ComfyUI-Nodes
The pack installs piexif, opencv-python-headless, imageio-ffmpeg and requests; none of that is for this node, so don't be alarmed when it takes a while.
No weights ship with the pack. The reference set the dropdowns prefer when they find it:
| File | Folder |
| --- | --- |
| minimax_h3_ref2va_pruned_int8_convrot.safetensors | models/diffusion_models |
| qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors | models/text_encoders |
| minimax_h3_video_vae_fp16.safetensors | models/vae |
| minimax_h3_audio_vae_fp32.safetensors | models/vae |
| minimax_h3_turbo_v4_step600_ema.safetensors | models/loras |
That CLIP is an NVFP4 build, and NVFP4 is Blackwell-only silicon, so on a 30- or 40-series card you want a different quant of the Qwen3-VL encoder. Budget disk for the whole set: on these 2026 giants the encoder is often what decides whether a model fits. H3's weights also carry a territory carve-out excluding the US, EU, UK and South Korea.
Where people get burned
length_inputskips the magic. An override is used verbatim - only the seconds-derived number gets the% 17 == 5treatment. Feed it 120 and the VAE gets a say.- Your negative prompt is decorative. At CFG 1.0 there's no unconditional pass to steer, so ComfyUI never computes it. State constraints positively.
- You OOM at decode, not at sampling. Both VAEs resident next to a loaded U-Net is the tight spot - if decode is where it dies, drop an
AUNCleanVRAMbetween the sampler and the first VAEDecode, at the cost of a reload.
Inputs (38)
| Name | Type | Default | Description |
|---|---|---|---|
| unet_name | COMBO | <no diffusion models found> | MiniMax-H3 UNET (diffusion model) file. |
| weight_dtype | COMBO | default | Weight dtype used when loading the UNET. |
| clip_name | COMBO | <no clip files found> | MiniMax-H3 text encoder file (qwen3vl minimax CLIP). |
| clip_type | COMBO | Minimax | CLIP architecture. MiniMax-H3 requires the minimax type. |
| video_vae_name | COMBO | <no vae files found> | Video VAE for MiniMax-H3 latents. Also feeds the video VAEDecode node. |
| audio_vae_name | COMBO | <no vae files found> | Audio VAE for MiniMax-H3 latents. Also feeds the audio VAEDecode node. |
| turbo | BOOLEAN | true | Apply the turbo LoRA to the UNET (replaces the Switch Turbo true/false wiring). |
| turbo_lora_name | COMBO | None | Turbo LoRA file. 'None' disables even when turbo is on. |
| turbo_lora_strength | FLOAT | 1.000–4 | Strength applied to the turbo LoRA weights. |
| sampler | COMBO | euler | Sampling algorithm for KSampler. |
| scheduler | COMBO | beta | Noise schedule for KSampler (turbo preset uses beta). |
| cfg | FLOAT | 1.00–100 | Classifier-Free Guidance scale. MiniMax-H3 reference uses 1.0. |
| steps | INT | 81–10000 | Sampling steps (turbo preset uses 8). |
| seed | INT | 00–18446744073709550000 | Random seed shared by conditioning and sampling. |
| width | INT | 134464–8192 | Video width. Used when 'aspect_ratio' is 'custom'. |
| height | INT | 76864–8192 | Video height. Used when 'aspect_ratio' is 'custom'. |
| aspect_ratio | COMBO | Select a predefined aspect ratio or preset to automatically set width and height. | |
| aspect_mode | COMBO | Original | Random swaps dimensions 50% of the time, Swap forces a swap, Original keeps the original order. |
| megapixels | FLOAT | 1.00.1–16 | Target total megapixels used when a ratio is selected. |
| multiple | INT | 328–128 | Nearest multiple to round computed resolution to. Video VAEs prefer 32. |
| seconds | FLOAT | 5.01–30 | Clip duration in seconds. Converted to frame count via max(5, round(seconds * fps)) aligned to length % 17 == 5. |
| fps | FLOAT | 24.01–120 | Frames per second. FLOAT output wires into VHS Video Combine. |
| rife | BOOLEAN | false | Switch the 'fps' and 'frame_rate' outputs to the post-interpolation rate (fps * multiplier) for VHS Video Combine. 'frames' always stays the base sampling count. |
| rife_multiplier | INT | 22–10 | RIFE interpolation multiplier. Must match the 'multiplier' on the downstream AUNRIFE node. |
| unet_inputopt | STRING | UNET (diffusion model) filename override. When connected, replaces 'unet_name'. | |
| clip_inputopt | STRING | CLIP filename override. When connected, replaces 'clip_name'. | |
| video_vae_inputopt | STRING | Video VAE filename override. When connected, replaces 'video_vae_name'. | |
| audio_vae_inputopt | STRING | Audio VAE filename override. When connected, replaces 'audio_vae_name'. | |
| turbo_lora_inputopt | STRING | Turbo LoRA filename override. When connected, replaces 'turbo_lora_name'. | |
| sampler_inputopt | STRING | Sampler name override. When connected and non-empty, replaces the 'sampler' widget value. | |
| scheduler_inputopt | STRING | Scheduler name override. When connected and non-empty, replaces the 'scheduler' widget value. | |
| cfg_inputopt | FLOAT | CFG override. When connected, replaces the 'cfg' widget value. | |
| steps_inputopt | INT | Steps override. When connected, replaces the 'steps' widget value. | |
| seed_inputopt | INT | Seed override. When connected, replaces the 'seed' widget value. | |
| seconds_inputopt | FLOAT | Duration override in seconds. When connected, replaces the 'seconds' widget value before frame-length conversion. | |
| length_inputopt | INT | Frame-length override. When connected, replaces the seconds-derived frame count. | |
| fps_inputopt | FLOAT | FPS override. When connected, replaces the 'fps' widget value. | |
| rife_multiplier_inputopt | INT | RIFE multiplier override. When connected, replaces the 'rife_multiplier' widget value. Only applies when 'rife' is on. |
Outputs (18)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| CLIP | CLIP | — |
| VAE video | VAE | — |
| VAE audio | VAE | — |
| unet name | STRING | — |
| sampler | * | — |
| scheduler | * | — |
| cfg | FLOAT | — |
| steps | INT | — |
| seed | INT | — |
| width | INT | — |
| height | INT | — |
| frames | INT | — |
| fps | FLOAT | — |
| frame_rate | INT | — |
| seconds | FLOAT | — |
| rife multiplier | INT | — |
| rife | BOOLEAN | — |