Nodes/Mask Tensor I/O/Load MiniMax H3 AV Latent
ComfyUI Node

Load MiniMax H3 AV Latent

Pull a saved H3 latent back in and redo only the decode

By swanjohn99·Created 22 days ago·Updated 17 days ago· 1
Load MiniMax H3 AV Latent
    • samples
    ◄latent_file▾►
    ◄subfolderlatents/MiniMaxH3►

    The pair to Save MiniMax H3 AV Latent. Point it at a .h3latent file and it hands you a LATENT back, ready to go into VAE Decode - no sampler, no text encoder, no 33B transformer loaded. What took twenty minutes to sample now takes seconds to re-decode, which is the entire argument for keeping latents around.

    What it's for

    H3 generates video and audio in one pass, so the latent carries both and lands in ComfyUI as a nested structure rather than a single tensor. Everything after that point is cheap and iterative: the video VAE, the audio VAE, whatever you do with the two streams once decoded. If you're comparing decodes, chasing an audio-sync problem, or just want to run the last stage five times without paying for the sampler five times, this is the node that makes it possible.

    It's also how you build a graph that doesn't need H3 loaded at all. Hand someone a .h3latent and a workflow, and they can finish the clip on a weaker card.

    How it works

    The file is safetensors - latent_0, latent_1, … plus a tensor_count - so loading is a plain tensor read with no pickle, and it happens on CPU (device="cpu"), then ComfyUI moves it where it's needed. That's friendlier than it sounds: the file's VRAM footprint doesn't hit your GPU at load time, though it does cost you system RAM while it sits there.

    The node validates the tensor count, then rebuilds the structure the sampler would have produced. One member comes back as a plain tensor; more than one comes back as a NestedTensor, so the AV shape survives the round trip. Members are read back as float32, which is not necessarily what you saved them as - harmless for a latent, and worth knowing if you were expecting a bit-exact round trip of a bf16 tensor.

    Finally, the loader watches the file's mtime and reports it as its changed-value. Re-save over the same filename and the graph re-runs instead of feeding you stale cached output - which matters here, because re-decoding is exactly the thing you'd otherwise get silently skipped.

    Inputs and output

    Two inputs and they're both simple:

    • latent_file - dropdown of everything in output/latents/MiniMaxH3/. Shows (none) when the folder's empty, which is the state on a fresh install.
    • subfolder - must match the folder the save node wrote to. Defaults to latents/MiniMaxH3.

    Output is samples (LATENT). It expects the standard latent dict with a samples key, so it plugs into VAE Decode, a latent preview, or another sampler the same way a fresh latent would.

    Install

    Manager, search the pack title, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/swanjohn99/comfyUIcostumNodes
    

    Restart ComfyUI. No pip install and no model files - this node only reads what a previous run wrote with the matching save node.

    Where people get burned

    The dropdown refreshes at node-definition time, so a file you just saved may not appear in the list until the page reloads. The pack ships a frontend extension that auto-selects the newest matching file for the video you have loaded, so usually you won't notice; when the selection looks wrong, reload the browser rather than editing the file.

    If the whole pack went missing from your node menu after an update, that's the H3 module importing comfy.nested_tensor on a ComfyUI build that predates it, which fails the pack's __init__.py and takes the bounding-box and mask nodes down with it. Update ComfyUI.

    And be straight with yourself about the decode. A latent is a point in one specific VAE's space - this file records the prompt, the format and the tensor count, but not which VAE produced it. Decode with the wrong one and you'll get noise that looks like a broken model rather than a mismatched file, and you'll spend an hour blaming the node. Keep the latent and the workflow that names its VAE together, and half your debugging disappears.

    One last note if H3 is new to you: the weights are licence-restricted by territory - the community licence excludes the US, EU, UK and Republic of Korea. Worth checking before you build a pipeline whose middle layer is a file only you can legally produce.

    Categoryh3_latent_io

    Inputs (2)

    NameTypeDefaultDescription
    latent_fileCOMBO1 options: (none)
    subfolderSTRINGlatents/MiniMaxH3—

    Outputs (1)

    NameTypeDescription
    samplesLATENT—