CivArchive
    MiniMax H3 Preview Override - v1.0
    Preview 138812715

    # MiniMax H3 Preview Override

    Live, kjnodes-style sampling previews for MiniMax H3 in ComfyUI — with true RGB colors.

    MiniMax H3 is an omni-modal model (video / audio / text / image). Like most video

    models it has no tiny autoencoder bundled, so ComfyUI's built-in sampler preview

    can only show a rough Latent2RGB projection — which, for a 24-channel video latent,

    looks like colored noise.

    This single node attaches an OUTER_SAMPLE wrapper to the H3 model and, **on every

    sampling step**, decodes the current x0 video latent into real RGB frames and

    streams them into a DOM widget right on the node — with sigma / delta graphs,

    per-step timing and a click-to-scrub history.

    It ships with a trained Tiny AutoEncoder decoder taeh3_decoder.safetensors,

    24-channel, ~9.9M params) that distills the big H3 video VAE's decoder — the H3

    equivalent of taeltx for LTX or taesd for SD.

    ---

    ## Features

    - 🔴 True-RGB per-step previews — real decoded frames, not Latent2RGB noise

    - ▶️ Animated previews — sample multiple frames per step, play back as

    animated WebP (or H.264 MP4 when NVENC is available)

    - 📊 σ / Δ graph — hover to scrub steps, click to lock and inspect any step

    - ⏱️ Step timing — per-step ms and rolling average + ETA in the widget header

    - 🪶 Cheap — the TAE is ~40 MB and decodes in milliseconds; negligible VRAM

    - 🛡️ VRAM-safe — only tiny autoencoders (TAEHV/TAESD) are ever used per step;

    a full video VAE is ignored (it would OOM during sampling)

    - 🖼️ Full resolution — previews stream at sampler resolution (capped by

    max_resolution), unlike the default 512 px first-frame preview

    - 🧹 Clean logs — the expected "missing encoder keys" warning for decoder-only

    TAE files is suppressed

    ## Requirements

    - ComfyUI (current 2025+ version with the new frontend and comfy_api.latest)

    - The [MiniMax H3 model pack] (https://www.minimax.io/blog/minimax-h3) — the

    MiniMaxH3ReferenceToVideo, MiniMaxH3SigmaShift, sampler and VAE nodes

    - ~24 GB+ VRAM for H3 video generation (the model itself is ~20 GB)

    - Python av/PyAV is optional (only needed for NVENC MP4 previews; WebP works

    out of the box)

    ## Installation

    [code]

    cd ComfyUI/custom_nodes

    git clone https://github.com/simsim9-stack/ComfyUI-MiniMaxH3-PreviewOverride.git

    [/code]

    Or download the ZIP from GitHub and extract it into ComfyUI/custom_nodes/.

    Then:

    1. Restart ComfyUI (the node registers on startup).

    2. Hard-refresh the browser tab (Ctrl+F5) so the widget JS is loaded.

    ### Install the mini VAE (required for real previews)

    Copy the trained decoder into your vae_approx folder:

    ```bash

    # from this repo:

    cp minivae/taeh3_decoder.safetensors ComfyUI/models/vae_approx/

    ```

    Without this file the node falls back to Latent2RGB (the "colored noise" previews).

    ## Usage

    1. Add *MiniMax H3 Preview Override** to your graph.

    2. Wire the H3 model into it (e.g. after MiniMax H3 Sigma Shift).

    3. Wire its MODEL output into your sampler's chain (guider + scheduler).

    4. In the vae_name combo select taeh3_decoder.safetensors.

    5. Queue. The widget on the node shows the video forming, step by step.

    ### Node inputs

    | Input | Type | Default | Description |

    |---|---|---|---|

    | model | MODEL | — | MiniMax H3 model to attach the preview wrapper to |

    | tiny_vae | VAE (optional) | — | TAE wired externally; leave empty to use vae_name |

    | max_resolution | INT | 1024 | Max preview side in px; 0 = full sampler resolution |

    | jpeg_quality | INT | 80 | JPEG/WebP quality of the streamed previews |

    | suppress_default_preview | BOOL | true | Hide the default sampler preview overlay while sampling |

    | preview_frames | INT | 8 | Frames sampled per step; 1 = single frame (fastest) |

    | preview_fps | INT | 12 | Playback FPS for animated previews |

    | vae_name | COMBO | taeh3_decoder.safetensors | TAE file from models/vae_approx |

    Output: MODEL — the model with the preview wrapper attached.

    ### Widget

    - Header: resolution · step/total · avg step time · ETA

    - σ / Δ graph: sigma schedule with the per-step Δ (change in the latent) —

    hover to scrub through captured steps, click to lock a frame

    - step time graph: rolling per-step timing

    ## Example workflows

    The examples/ folder has the three base MiniMax H3 modes, each with the

    Preview Override node already wired between the model and the sampler:

    | File | Mode | What's different |

    |---|---|---|

    | minimax_h3_t2v_preview_override.json | T2V — text to video | no reference inputs |

    | minimax_h3_i2v_preview_override.json | I2V — image to video | one LoadImage → first-frame reference |

    | minimax_h3_r2v_preview_override.json | R2V — reference to video | two LoadImage → character/scene references |

    Common chain (all three):

    ```

    UNETLoader → Sigma Shift → [MiniMax H3 Preview Override] → BasicGuider ─┐

    CLIPLoader ─┐ ├─→ SamplerCustomAdvanced → VAEDecode → CreateVideo → SaveVideo

    VAELoader ──┴→ MiniMaxH3ReferenceToVideo → conditioning + latent ───────┘

    ```

    For R2V, reference videos and audio can be wired into the same node's

    ref_videos / ref_video_audios inputs — the prompt then refers to them as

    <Video k> / <Audio j>.

    Load a file via Workflow → Open, pick your model files in the combo boxes

    unet_name, clip_name, vae_name, audio vae), drop your own images into the

    LoadImage nodes, and queue.

    ## How it works

    - An OUTER_SAMPLE wrapper replaces the sampler's step callback. On each step the

    packed NestedTensor is unpacked to the video stream [B, 24, T, H, W] and decoded:

    1. Tiny VAEvae.decode() of the TAE (true RGB, preferred)

    2. Animated Latent2RGB (multi-frame, when no TAE)

    3. Single-frame Latent2RGB (fallback)

    - The node validates the TAE's latent channels (H3 needs 24). A mismatched TAE

    (e.g. an LTX or Wan TAE) is disabled with one clear warning instead of erroring

    every step.

    - Encoding (JPEG/WebP/MP4) happens on a background thread so the sampler never

    blocks; full VRAM VAEs are never used for previews.

    ## About the mini VAE

    taeh3_decoder.safetensors is a decoder-only Tiny AutoEncoder (TAEHV

    architecture, 24 latent channels, fp32) trained by the author on pairs of

    (raw H3 latents, decoded frames) generated with the official H3 video VAE —

    distilled from ~100+ H3 video generations. Holdout PSNR ≈ 25.5 dB.

    It loads through comfy.sd.VAE straight into the TAEHV(latent_channels=24)

    branch. Because it is decoder-only, ComfyUI logs a Missing VAE keys [...]

    warning on load — that is expected and harmless (the node suppresses it).

    ## Troubleshooting

    | Symptom | Cause / fix |

    |---|---|

    | Preview shows colored noise | TAE not loaded — check vae_name, put taeh3_decoder.safetensors in models/vae_approx/ |

    | Missing VAE keys warning in the log | Expected for decoder-only TAE files; harmless |

    | "Loaded TAE has N latent channels but the model needs 24" | You picked a TAE for another model (LTX/Wan/SD) |

    | No widget / blank node | Restart ComfyUI and hard-refresh the browser (Ctrl+F5) |

    | Widget shows only a single frame | preview_frames = 1 — set it to 8+ for animated previews |

    | OOM during sampling | Do not wire a full video VAE into tiny_vae; only tiny decoders are safe |

    ## Credits

    Inspired by [KJNodes'](https://github.com/kijai/ComfyUI-KJNodes)

    Model Preview Override, adapted for the MiniMax H3 video latent.

    MiniMax H3 by [MiniMax](https://www.minimax.io/).

    Description

    FAQ

    Comments (3)

    timmitsamin487Aug 5, 2026· 1 reaction
    CivitAI

    Thanks for sharing, it works really well!

    stablediffusion1337Aug 5, 2026· 5 reactions
    CivitAI

    Where do I get the MiniMaxH3TinyVAELoader

    dankmacaroni836Aug 5, 2026· 1 reaction

    Not needed as it seems, it defaults to the correct vae, its inside the preview node as "vae_name".

    VAE
    MiniMax H3

    Details

    Downloads
    198
    Platform
    CivitAI
    Platform Status
    Available
    Created
    8/5/2026
    Updated
    8/8/2026
    Deleted
    -

    Files

    minimaxH3Preview_v10.zip

    Mirrors

    CivitAI (1 mirrors)

    minimaxH3Preview_v10.safetensors

    Mirrors