MiniMax H3 R40 · Cached Scout → Isolated Stage-2 Delivery
Where your winning H3 take gets the expensive pass
- model
- video_vae
- sampled_latent
- conditioning
- cine_linx
- shot_lab
- native_frames
- native_audio
- video_path
- report
This is the node that finishes an R40 Shot Lab render. If you've scouted cheap seed candidates, picked a winning take, and decoded it natively with its audio, this is where the "isolated stage-2" quality pass actually happens - upscale and refine the chosen take, then write the segment mp4. The display name spells out the whole philosophy: Cached Scout → Isolated Stage-2 Delivery. The word "isolated" is doing real work, and it's the thing to understand first.
MiniMax H3 generates video and native stereo audio in one pass. That audio is the precious, hard-won part of an H3 render, so the R40 pipeline treats it as untouchable. Stage-2 is video-only refinement: it upscales and re-samples the picture while carrying the native audio latent through untouched. Look at the code and you'll see it refuses to proceed if the H3 audio latent changed between stages - a literal "refusing desynchronised delivery" guard. You don't get to reroll audio on a whim; you get to make the picture better.
Mechanically this node runs a windowed refine. The selected stage-2 latent gets upscaled toward your delivery size, then denoised again in overlapping windows (roughly 136-frame chunks with ~22 frames of overlap by default) using ComfyUI's looping sampler with mask carry between windows. Frames are encoded via a streaming save node rather than one giant image batch in RAM, models get unloaded and the cache emptied between decode/upscale/refine passes to keep VRAM sane. When the last segment finishes it concatenates everything into a final film and - if queue_next_segment is on - queues the next segment itself. This is a self-chaining delivery node, not a one-shot saver.
The inputs that matter
There are a lot of sockets, but the ones you actually touch:
sampled_latent- the stage-2 latent to refine. Wire this from the upscale path off the winning candidate.conditioning+model- the stage-2 denoise model and prompt conditioning.cine_linxandshot_lab- the two framework objects.cine_linxcarries the whole shot plan (upscale mode, window sizes, RTX settings);shot_labcomes fromIAMCCS_MiniMaxH3ShotLabControlR40and holds stage-2-only controls.native_frames,native_audio,native_saved_report- the checkpointed native take, which this node uses for AV bookkeeping and as proof it runs after the native pass.current_segment/total_segments, pluscontext_trim_framesandjoin_trim_framesfor the AV join.queue_next_segment- defaults on; turn it off if you want to babysit each segment.
Outputs are just video_path (where the segment or final film landed, under output/IAMCCS/MiniMaxH3/R40/) and report.
Install and reality check
Install the pack once - ComfyUI Manager (search "IAMCCS") or:
cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes
then restart ComfyUI. The README wants a current ComfyUI (≥ 3.x), Python ≥ 3.12, PyTorch ≥ 2.8 on CUDA 12.6/12.8. On top of that you need the MiniMax H3 model itself - roughly 42 GB of weights for the 33B omni-modal model - plus its video and audio VAEs, and H3 running natively in your ComfyUI. Check the licence before you go far: MiniMax's H3 community licence excludes the US, EU, UK and Korea, so in those regions the hosted API is the only legal path.
Where people get burned
- "Segment already exists" is a hard error. This node refuses to overwrite. If you rerun, start a new render id rather than fighting it.
- It demands
native_saved_report- it has to run after the native checkpoint, and it will tell you loudly if you've bypassed the R40 flow. - If the shot plan's upscale mode isn't
h3_pixel_refine, it raises on purpose. R40 wires Native/RTX → H3 and nothing else, and RIFE isn't available here - it preserves native 24 fps. - Face Detailer enabled but its R38B face branch wasn't applied upstream? Another deliberate error.
This node is not standalone. It's a delivery layer for the IAMCCS Shotboard framework, and the settings that drive it live in the CineLinX shot plan built by upstream IAMCCS planner nodes. Pull in the author's reference workflows (companion comfyui-iamccs-workflows repo) to see the intended wiring, because hand-rolling the graph from scratch is a rough week.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| video_vae | VAE | — | |
| sampled_latent | LATENT | — | |
| conditioning | CONDITIONING | — | |
| cine_linx | IAMCCS_SUPERNODE_LINX | — | |
| shot_lab | IAMCCS_H3_R40_SHOT_LAB | — | |
| native_frames | IMAGE | — | |
| native_audio | AUDIO | — | |
| resolved_render_id | STRING | — | |
| native_saved_report | STRING | — | |
| current_segment | INT | — | |
| total_segments | INT | — | |
| context_trim_frames | INT | — | |
| join_trim_frames | INT | — | |
| queue_next_segment | BOOLEAN | true | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video_path | STRING | — |
| report | STRING | — |