LC MiniMax H3 Pipe Out V2
Unpack Your MiniMax H3 Graph Without Rewiring It
- pipe
- pipe
- fl2va_model
- fl2va_clip
- ref2va_model
- ref2va_clip
- video_vae
- audio_vae
- width
- height
- length
- frame_rate
- prompt
- total_steps
- cfg
- sampler_name
- scheduler
- ref_image_0
- ref_image_1
- ref_image_2
- ref_image_3
- ref_image_4
- ref_image_5
- ref_image_6
- ref_image_7
- ref_image_8
- ref_video_0
- ref_video_1
- ref_video_2
- ref_video_audio_0
- ref_video_audio_1
- ref_video_audio_2
- ref_audio_0
- ref_audio_1
- ref_audio_2
This is the second half of a pair. LC MiniMax H3 Pipe V2 packs a whole MiniMax H3 setup into one LC_H3_PIPE_V2 object; LCMiniMaxH3PipeOutV2 unpacks it again. One socket in, forty-three sockets out, and the payoff is that the middle of your graph is one wire instead of a noodle plate.
Why you'd reach for it
H3 isn't a model with a prompt box. It's MiniMax's 33B omni-modal video model - announced 31 July 2026, weights on HuggingFace 3 August - that reads text, images, video and audio as one context and generates video with native stereo audio. In ComfyUI that means two model paths (first-last-frame and reference-to-video), a video VAE and an audio VAE, plus nine reference image slots, three reference videos, three video-audio tracks and three plain audio refs.
Carrying those across a graph as individual wires is miserable, and the same values get re-dragged at every stage. So you bundle once with the Pipe V2 node, run it down one wire, and unpack it here. This pack has been threading pipes all along; H3 is just where the socket count explodes.
The community reason to care is reference-to-video - the launch threads' top take was relief that a real local Ref2V model finally exists, and it wants a reference block, not a single start frame.
How it works
One required input: pipe, typed strictly as LC_H3_PIPE_V2. Note what that means - a V1 LC_H3_PIPE or an Aspect Ratio Simplifier LC_PIPE will not connect here. There's no upgrade path on the out node, by design: run an old pipe through LC MiniMax H3 Pipe V2 first and let that do the merging.
Outputs come back in exactly the order they were packed, which is worth internalising before you start dragging:
pipe, fl2va_model, fl2va_clip, ref2va_model, ref2va_clip, video_vae, audio_vae, width, height, length, frame_rate, prompt, total_steps, cfg, sampler_name, scheduler, then ref_image_0–ref_image_8, ref_video_0–ref_video_2, ref_video_audio_0–ref_video_audio_2, ref_audio_0–ref_audio_2.
Those five sampling outputs are V2's addition, and they're the reason to use this rather than the original Pipe Out. They carry the field names core KSampler uses, so total_steps, cfg, sampler_name and scheduler plug straight in - no combo box to re-set by hand, and no chance of the pipe saying 40 steps while the sampler says 20.
The wiring, in practice
ref_image_0is<Picture 1>in your prompt. Tags are 1-based, sockets are 0-based, so<Picture 3>isref_image_2. The README flags this because it's the single most common H3 mistake.video_vaeandaudio_vaeare separate for a reason: audio is generated by the model, not attached afterwards.promptis a string - into your text encoder.width/height/length/frame_ratefeed whatever builds the latent or the video combine. 124 frames ≈ 5s at 24fps.- The first output is the pipe itself, unchanged, so you can chain another V2 pipe downstream for an edit pass.
Install
One pack, one install. ComfyUI Manager → search ComfyUI LC123 Nodes, or:
cd ComfyUI/custom_nodes
git clone https://github.com/lonecatone23/ComfyUI_LC123_nodes.git
Restart ComfyUI after. No requirements.txt here - it relies on torch and numpy, which ComfyUI already ships, so there's nothing to pip install and nothing to conflict. Check that __init__.py sits directly in custom_nodes/ComfyUI_LC123_nodes/ (zipped installs double-nest), then hard-refresh the browser after any web/ JS update.
Common issues
Empty sockets that aren't sampling sockets. Only prompt, total_steps, cfg, sampler_name and scheduler get fallbacks when the pipe didn't carry them - "", 40, 8.0, euler, normal, matching LC Sampler Configure Simple's defaults. Everything else comes out exactly as packed, which means genuinely empty if nobody put anything in. Wire a blank width or length into a sampler and you'll find out at queue time.
The passthrough pipe doesn't get backfilled. If a sampling socket was never packed and you're reading the fallback off the output, that fallback lives on the socket, not inside the pipe output. Re-pack downstream and you're back to nothing - wire the sampling fields at the pack node if you're chaining.
The fallback sampler isn't simple. Unwired sampling gives you euler + normal, a different noise schedule from simple. If your H3 output suddenly looks unlike your old graph, start there.
Sampler list is core-only. The sampler_name socket carries ComfyUI's built-in set - euler, the dpmpp family, res_multistep, uni_pc - nothing exotic from RES4LYF or friends, and nine schedulers.
Two things that aren't this node's fault but decide whether it's worth wiring: H3 is a ~42.5GB, 33B-parameter model, so it wants a big card or aggressive quantization, and its Community License excludes the US, EU, UK and South Korea. Also set your support expectations - there's basically no community discussion of this pack online, so you're reading lc_minimax_h3_pipe.py and the README. Both are short and clear, which is more than you get from most.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| pipe | LC_H3_PIPE_V2 | LC MiniMax H3 Pipe V2. |
Outputs (34)
| Name | Type | Description |
|---|---|---|
| pipe | LC_H3_PIPE_V2 | — |
| fl2va_model | MODEL | — |
| fl2va_clip | CLIP | — |
| ref2va_model | MODEL | — |
| ref2va_clip | CLIP | — |
| video_vae | VAE | — |
| audio_vae | VAE | — |
| width | INT | — |
| height | INT | — |
| length | INT | — |
| frame_rate | INT | — |
| prompt | STRING | — |
| total_steps | INT | — |
| cfg | FLOAT | — |
| sampler_name | euler,euler_cfg_pp,euler_ancestral,euler_ancestral_cfg_pp,heun,heunpp2,exp_heun_2_x0,exp_heun_2_x0_sde,dpm_2,dpm_2_ancestral,lms,dpm_fast,dpm_adaptive,dpmpp_2s_ancestral,dpmpp_2s_ancestral_cfg_pp,dpmpp_sde,dpmpp_sde_gpu,dpmpp_2m,dpmpp_2m_cfg_pp,dpmpp_2m_sde,dpmpp_2m_sde_gpu,dpmpp_2m_sde_heun,dpmpp_2m_sde_heun_gpu,dpmpp_3m_sde,dpmpp_3m_sde_gpu,ddpm,lcm,ipndm,ipndm_v,deis,res_multistep,res_multistep_cfg_pp,res_multistep_ancestral,res_multistep_ancestral_cfg_pp,gradient_estimation,gradient_estimation_cfg_pp,er_sde,seeds_2,seeds_3,sa_solver,sa_solver_pece,ddim,uni_pc,uni_pc_bh2 | — |
| scheduler | simple,sgm_uniform,karras,exponential,ddim_uniform,beta,normal,linear_quadratic,kl_optimal | — |
| ref_image_0 | IMAGE | — |
| ref_image_1 | IMAGE | — |
| ref_image_2 | IMAGE | — |
| ref_image_3 | IMAGE | — |
| ref_image_4 | IMAGE | — |
| ref_image_5 | IMAGE | — |
| ref_image_6 | IMAGE | — |
| ref_image_7 | IMAGE | — |
| ref_image_8 | IMAGE | — |
| ref_video_0 | IMAGE | — |
| ref_video_1 | IMAGE | — |
| ref_video_2 | IMAGE | — |
| ref_video_audio_0 | AUDIO | — |
| ref_video_audio_1 | AUDIO | — |
| ref_video_audio_2 | AUDIO | — |
| ref_audio_0 | AUDIO | — |
| ref_audio_1 | AUDIO | — |
| ref_audio_2 | AUDIO | — |