H3 Window Collect (bank windows, splice when full) [alpha]
Bank every window to disk so an OOM costs you one frame, not the run
- baseline
- segment
- baseline_audio
- segment_audio
- images
- audio
- windows_on_disk
- complete
- report
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_namekeys 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.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| baseline | IMAGE | the full world clip, world clock | |
| segment | IMAGE | this window, recovered (H3 Exact Recover) | |
| splice_map | STRING | from H3 Window Plan, same queue item | |
| window_count | INT | 00–64 | wire H3 Window Plan's window_count output; typed by hand it is the N this run is waiting for |
| run_name | STRING | window_run | keys the set on disk; change it when the plan changes |
| feather_frames | INT | 60–24 | crossfade width inside COLD handles; hot seams ignore it |
| store_diropt | STRING | output/h3_windows | where 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_audioopt | AUDIO | — | |
| segment_audioopt | AUDIO | this window's track from H3 Audio Recover | |
| fpsopt | INT | 241–120 | — |
| writeopt | BOOLEAN | true | off: reassemble from what is already on disk, bank nothing |
| store_dtypeopt | COMBO | float32 (exact) | float16 costs ~1/2048 of a level, below 8-bit output quantization, and halves a multi-hundred-MB window |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| audio | AUDIO | — |
| windows_on_disk | INT | — |
| complete | BOOLEAN | — |
| report | STRING | — |