Nodes/ComfyUI-MAINodes/H3 Load Hold Map (sidecar)
ComfyUI Node

H3 Load Hold Map (sidecar)

Steal a hold map from another model's graph without loading that model

By matlowai·Created 17 days ago·Updated about 16 hours ago· 112
H3 Load Hold Map (sidecar)
    • hold_map
    • world_len
    • path
    pathvideo/derope
    start0
    length0

    Part of the pack's "de-rope for any model" toolchain (it lives on the generic-derope branch in the repo, so treat it as alpha). The idea: you ran the H3 de-rope, the oracle found the motion that was too fast, and the result was good. Now you want the same timing decision to drive a different model - say an LTX-2.5 or Wan pass - without loading both models into one graph. H3 Load Hold Map reads the hold-map sidecar that H3 Save Hold Map wrote next to your render, and hands it back as the same hold-map JSON, ready for H3 Clock Remap or straight into H3 Time Smear.

    How it works

    Give it the SaveVideo prefix of the arm whose clock you want - e.g. video/panrun_base - and it finds the newest <prefix>.holdmap*.json under the output directory. Absolute paths, and paths that already end in .json, are taken as they are. It then passes the clock through and deliberately nothing else: the README's warning is that the target grid of the graph that wrote the sidecar must not leak into a different model's smear, so only the holds and the world length travel.

    Inputs:

    • path (default video/derope) - the SaveVideo prefix, or a direct .json path.
    • start / length - crop the clock to a window of source frames, for a model whose per-pass cap the whole clip exceeds. If you crop here, feed the same window of frames to H3 Time Smear (via ImageFromBatch's start/length) or the map and the video won't line up.

    Outputs:

    • hold_map - the clock, ready to wire into H3 Clock Remap or H3 Time Smear.
    • world_len - how many world frames the map covers.
    • path - the resolved file path, so you can see what it actually loaded.

    When you'd use it

    The whole "clock in one graph, model in another" split exists because the H3 model is heavy - 33B, roughly 42.5 GB at full precision before quantization - and you don't want two video models resident to make a timing decision. Run the cheap H3 pass once, save the clock, then let an LTX-2.5 graph (which runs on far smaller cards) re-render with the same retiming. It's the same thinking behind the rolling-window graphs: decide once, pay for it many times.

    Install

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

    or ComfyUI Manager → ComfyUI-MAINodes, restart. Category image/minimax/motion. The README notes the any-model machinery is on a branch until the oracle-shaped LTX arm is measured, so if this node isn't in your menu, you may be on the default branch where it ships only via the generic-derope branch - check the repo.

    Common gotchas

    If it errors with no sidecar found for the prefix, the path is wrong or the render that wrote the map didn't finish - the sidecar is written by H3 Save Hold Map, not by the save-video node you may have substituted. And if you crop with start/length, matching the frame window downstream is on you; a mismatched window is the classic silent failure mode here.

    Categoryimage/minimax/motion

    Inputs (3)

    NameTypeDefaultDescription
    pathSTRINGvideo/deropeSaveVideo prefix of the arm whose clock you want, or a .json path
    startoptINT00–100000crop the clock to a window of source frames (for a model whose per-pass cap the whole clip exceeds); feed the SAME window of frames to H3 Time Smear (ImageFromBatch start/length)
    lengthoptINT00–100000window length in source frames; 0 = to the end

    Outputs (3)

    NameTypeDescription
    hold_mapSTRING
    world_lenINT
    pathSTRING