Nodes/IAMCCS-nodes/H3 Continuation · Save AV Checkpoint + Preview
ComfyUI Node

H3 Continuation · Save AV Checkpoint + Preview

Store the Latent, Not Just the Video

By IAMCCS·Created 12 months ago·Updated about 14 hours ago· 113
H3 Continuation · Save AV Checkpoint + Preview
  • latent
  • handover
  • preview_image
  • latent_path
  • latent_info
filename_prefixIAMCCS/MiniMaxH3/CONTINUATION/clip
clip_index0
head_context_frames
visible_frame_count

You already know how to save an MP4. This node exists because an MP4 is a dead end: you can't continue from it, and if you re-encode it and feed it back in as a frame you've thrown away everything the model knew about the shot.

So it saves the thing that has the information - the complete H3 AV latent - plus a compact payload of metadata that makes the file self-describing for the next stage. Video latent and audio latent, one safetensors, output folder, done.

Inputs

Required: latent (the sampler output for the accepted clip), filename_prefix (default IAMCCS/MiniMaxH3/CONTINUATION/clip) and clip_index.

clip_index is a chain slot, not an attempt number. Clip 1 → 1, clip 2 → 2. Re-rendering a clip overwrites that slot, which is deliberate here - this is the mechanism that lets you re-roll clip 4 without regenerating 1-3. Set it to 0 and you get ComfyUI's usual auto-numbered _00001_ behaviour, i.e. a new file every time and a folder that grows forever.

Three optional inputs, all of them metadata on the wire:

  • handover - the freeze-analysis output from Analyze Handover. The full latent is saved unchanged either way; this just records where the shot locked.
  • head_context_frames - clip 1: leave it unconnected. Clip 2 onward: wire actual_head_context_frames from Continue. This is the number that lets a later stage know how much of the saved latent at the head belongs to the previous clip.
  • visible_frame_count - the delivered-frame count, which separates inherited head context and H3's native technical padding from the visible clip. Leave it at 0 and the node derives it as frame_count - head_context_frames.

preview_image is also there if you want a thumbnail to go with it.

Why the metadata matters more than the tensors

H3 clips are quantised in blocks. The sampler's latent for a continued clip contains inherited history at the head, your actual clip in the middle, and some technical padding at the end. Three different things in one tensor. If you save it without recording those boundaries, a later seamless-stitch pass can only guess where your clip begins - and guessing wrong is exactly how you get a stutter or a duplicated beat at a join.

The node stores a structured block (format: h3_continuous_av_v8, fps, frame_count, clip_index, head context, visible count, visible start/end, technical padding, tensor shapes) directly inside the safetensors header, and embeds the handover JSON alongside it. Load AV Checkpoint reads all of it back, which is what makes a chain resumable months later without a notes file.

The handover embedding has one rule: its frame count must match the clip - either the visible count or the technical count. Mismatch and the metadata is dropped with a warning in the log rather than saved wrong. Saved wrong would be worse than missing.

And it validates the arithmetic before writing anything: head context can't exceed the technical latent length, and head + visible can't exceed it either.

Outputs: latent_path (STRING) and latent_info (STRING). It's a terminal output node.

One behavioural difference to unlearn

Unlike the disk-upscale family, which refuses to overwrite anything, this node will overwrite the slot you name. That's intentional - the slot model only works if re-rendering clip 3 replaces clip 3. If you want to preserve a take, bump clip_index or change filename_prefix before you hit queue. Which is the whole argument for a prefix per project rather than the default.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git

Or Manager → IAMCCS Nodes. Restart, hard-refresh, one copy in custom_nodes only. It's a bundled engine node, so nothing extra to install beyond safetensors, which you already have if you're running video models in ComfyUI.

You do need a working H3 setup to produce the latent in the first place - the pack ships no weights, and H3's licence excludes the US, EU, UK and South Korea from its grant, outputs included. Read that before you build a client deliverable on it.

The way I'd actually run it

Save every accepted clip, immediately, with clip_index set and the handover wired. It costs disk - these latents are not small - and it converts "the chain broke at clip 4" from a rerun-everything afternoon into a one-clip fix. If you're on a long shoot, that trade pays for itself the first time.

CategoryIAMCCS/MiniMax H3/Continuation

Inputs (7)

NameTypeDefaultDescription
latentLATENTSampler output AV latent for the accepted clip.
filename_prefixSTRINGIAMCCS/MiniMaxH3/CONTINUATION/clip
clip_indexINT00–99999Fixed chain slot. Clip 1 -> 1, clip 2 -> 2. Re-rendering overwrites that slot. 0 = auto-numbered attempt.
handoveroptH3_CONTINUOUS_HANDOVEROptional freeze-analysis metadata. The full latent is still saved unchanged.
head_context_framesoptINTClip 1: leave unconnected (0). Clip 2+: connect actual_head_context_frames from Continue from Latent so the saved file is self-describing for later seamless stitching.
visible_frame_countoptINTOptional delivered-frame count. It separates inherited head context and native H3 padding from the visible clip when a continued latent is saved again.
preview_imageoptIMAGE

Outputs (2)

NameTypeDescription
latent_pathSTRING
latent_infoSTRING