Nodes/ComfyUI-MAINodes/H3 Window Collect (bank windows, splice when full) [alpha]
ComfyUI Node

H3 Window Collect (bank windows, splice when full) [alpha]

Bank every window to disk so an OOM costs you one frame, not the run

By matlowai·Created 17 days ago·Updated about 18 hours ago· 112
H3 Window Collect (bank windows, splice when full) [alpha]
  • baseline
  • segment
  • baseline_audio
  • segment_audio
  • images
  • audio
  • windows_on_disk
  • complete
  • report
splice_map
window_count0
run_namewindow_run
feather_frames6
store_diroutput/h3_windows
fps24
writetrue
store_dtypefloat32 (exact)

H3 Window Collect is the crash-tolerant half of the windowed de-rope, and its design philosophy fits in one sentence: the ComfyUI queue is the loop driver, and every window is an independent queue item, so an OOM or a bad seam on window 3 costs you window 3 and nothing else. Each queue item renders its window, writes it to disk, and checks whether the set is complete. The last window to land splices everything together. A reboot mid-run costs you one window, not the whole job.

How it works

Each queue item hands it the usual suspects: baseline (the full world clip), segment (this window, recovered via H3 Exact Recover), splice_map (from H3 Window Plan, same queue item), window_count (wire the plan's output - typed by hand it's the N this run waits for), run_name (default window_run), and feather_frames (default 6, the crossfade width at cold handles; hot seams ignore it).

It writes the recovered window and its retimed audio to store_dir/run_name/wNNN.pt (default store_dir output/h3_windows - a relative path lands in the ComfyUI working directory). Until all window_count windows are on disk, the outputs pass the baseline through unchanged and the report says which windows are still missing. On the item that completes the set, the windows splice into the baseline in ascending k order - which is what makes a hot cut a hard cut: the later window overwrites the earlier one's discarded overlap. Outputs: images, audio, windows_on_disk, and a complete boolean you can use to gate a downstream save.

The controls that matter

  • run_name keys the set. Change it whenever the plan changes - windows from two different budgets don't tile the same world, and the collect can't tell them apart.
  • write (default true) - set false to reassemble from what's already on disk without re-banking. That's your "the last window was fine, just re-assemble" button.
  • store_dtype - float32 (exact) by default; float16 halves a multi-hundred-MB window at a cost "~1/2048 of a level, below 8-bit output quantization," per the tooltip. Fine for final assembly, not for comparing takes.
  • store_dir - and the README's warning is worth repeating: avoid /tmp, it's a RAM disk on most Linux installs, and the whole point of banking windows is surviving a crash or reboot.

Install

Ships with matlowai/ComfyUI-MAINodes:

cd ComfyUI/custom_nodes
git clone https://github.com/matlowai/ComfyUI-MAINodes

Restart, under image/minimax/motion. No extra Python deps; you need MiniMax-H3 weights and ComfyUI's H3 support (check the licence's US/EU/UK/Korea carve-outs).

The workflow shape to internalize: queue once, read the plan's report, set your queue batch count to the window count, and the window widget increments itself per batch item, seed-widget style - the whole set renders from one click. And if window 3 comes out with a bad seam, requeue that one window with a different seed; the collect picks up the new file and the other windows don't move.

Categoryimage/minimax/motion

Inputs (12)

NameTypeDefaultDescription
baselineIMAGEthe full world clip, world clock
segmentIMAGEthis window, recovered (H3 Exact Recover)
splice_mapSTRINGfrom H3 Window Plan, same queue item
window_countINT00–64wire H3 Window Plan's window_count output; typed by hand it is the N this run is waiting for
run_nameSTRINGwindow_runkeys the set on disk; change it when the plan changes
feather_framesINT60–24crossfade width inside COLD handles; hot seams ignore it
store_diroptSTRINGoutput/h3_windowswhere windows are banked between queue items. A relative path lands inside the ComfyUI working directory. Avoid /tmp: it is a RAM disk on most Linux installs, and the whole point of banking windows is surviving a crash or reboot
baseline_audiooptAUDIO
segment_audiooptAUDIOthis window's track from H3 Audio Recover
fpsoptINT241–120
writeoptBOOLEANtrueoff: reassemble from what is already on disk, bank nothing
store_dtypeoptCOMBOfloat32 (exact)float16 costs ~1/2048 of a level, below 8-bit output quantization, and halves a multi-hundred-MB window

Outputs (5)

NameTypeDescription
imagesIMAGE
audioAUDIO
windows_on_diskINT
completeBOOLEAN
reportSTRING