Nodes/ComfyUI_LC123_nodes/LC MiniMax H3 Pipe Out V2
ComfyUI Node

LC MiniMax H3 Pipe Out V2

Unpack Your MiniMax H3 Graph Without Rewiring It

By lonecatone23·Created 2 months ago·Updated about 23 hours ago· 19
LC MiniMax H3 Pipe Out V2
  • 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_0ref_image_8, ref_video_0ref_video_2, ref_video_audio_0ref_video_audio_2, ref_audio_0ref_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_0 is <Picture 1> in your prompt. Tags are 1-based, sockets are 0-based, so <Picture 3> is ref_image_2. The README flags this because it's the single most common H3 mistake.
  • video_vae and audio_vae are separate for a reason: audio is generated by the model, not attached afterwards.
  • prompt is a string - into your text encoder. width / height / length / frame_rate feed 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.

CategoryLC123/pipe

Inputs (1)

NameTypeDefaultDescription
pipeLC_H3_PIPE_V2LC MiniMax H3 Pipe V2.

Outputs (34)

NameTypeDescription
pipeLC_H3_PIPE_V2
fl2va_modelMODEL
fl2va_clipCLIP
ref2va_modelMODEL
ref2va_clipCLIP
video_vaeVAE
audio_vaeVAE
widthINT
heightINT
lengthINT
frame_rateINT
promptSTRING
total_stepsINT
cfgFLOAT
sampler_nameeuler,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
schedulersimple,sgm_uniform,karras,exponential,ddim_uniform,beta,normal,linear_quadratic,kl_optimal
ref_image_0IMAGE
ref_image_1IMAGE
ref_image_2IMAGE
ref_image_3IMAGE
ref_image_4IMAGE
ref_image_5IMAGE
ref_image_6IMAGE
ref_image_7IMAGE
ref_image_8IMAGE
ref_video_0IMAGE
ref_video_1IMAGE
ref_video_2IMAGE
ref_video_audio_0AUDIO
ref_video_audio_1AUDIO
ref_video_audio_2AUDIO
ref_audio_0AUDIO
ref_audio_1AUDIO
ref_audio_2AUDIO