Nodes/MiniMax H3 Planner/H3 Vault Write
ComfyUI Node

H3 Vault Write

The only node that knows a render actually succeeded

By AIJigyasa·Created 22 days ago·Updated 19 days ago· 4
H3 Vault Write
  • shot
  • images
  • audio
  • status
  • clip_path
  • images
◄save_last_frametrue►
◄auto_advancefalse►
◄max_auto_runs24►

Every state machine needs one place where work is declared done. In this pack it's H3 Vault Write, and the reason it isn't in the dispatcher is simple: the dispatcher runs before the sampler. It has no idea whether the render worked. This node sits after the decode, gets the frames, encodes them and files them.

It's also where completion becomes permanent. H3 Shot Dispatcher marked the segment running; this is what turns it into a stored clip and moves the cursor on.

What it writes

It encodes the frames to mp4 plus a wav and a thumbnail, files them under (segment, pass, take) in output/h3_planner/<project>/vault/, and appends an entry to vault.json. Promotion never overwrites - a draft and a final for the same segment are separate entries, so a promote is reversible and demoting is just changing which one the stitcher prefers.

Then it advances the timeline and reports the state of the run.

Inputs

Required:

  • shot - from the dispatcher, routed around the sampler into this node. It carries the project, segment id, pass, take, seed and the timeline path, which is how the vault knows what it's receiving without your sampling subgraph knowing timelines exist.
  • images - the decoded frames. This is the base-pass decode for a draft, or the upscale-branch decode for a final.
  • save_last_frame - write the final frame for the next segment's continue link. The next card then starts from that PNG. Derived, not authored, so writing it never invalidates a stored clip.
  • auto_advance - queue the next segment automatically until the timeline is done. This is the one-button rendering switch.
  • max_auto_runs - the seatbelt, 24 by default.

Optional audio - the sampler's generated audio, which gets stored alongside the clip.

Outputs: status, clip_path, and images passed straight through, so you can hang a Preview or a Save wherever it suits.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/AIJigyasa/ComfyUI-H3-Planner

Restart, or search MiniMax H3 Planner in ComfyUI Manager. ffmpeg is the real dependency here - this node is what calls it, for both encoding and reading frames back. Put it on PATH or pip install imageio-ffmpeg into the ComfyUI environment; the pack will find that binary if the system one is missing.

Where people get burned

Two passes need two of these. If you add a second Vault Write without H3 Pass Gate, there's only one pass name in the graph and the upscaled clip lands on top of the draft. Gate plus two writes, or leave it in draft and stop pretending.

Auto-advance is a convenience with sharp edges, all of them documented in its own output. It refuses to queue if you already queued things manually. It stops when the timeline is done. It stops if the outstanding count exceeds max_auto_runs. And if the same segment gets stored twice in a row, it stops and tells you plainly - because that means something upstream is putting the segment back to pending after each render. The usual cause, in the node's own words, is a planner sitting in the render graph with reuse_existing off, rewriting the prompts every queue and discarding the clip that no longer matches. It will also name the Timeline report's DISCARDED count as the thing to look at.

Wrong clip on the wrong card: check the pass. A draft written while H3 Project was on draft, then an accidental second pass, gives you two entries for one segment and it's up to prefer on the stitcher which one you see.

Re-rendering something you didn't mean to: force_rerender on the dispatcher, manual_index mode, or the Redo button on the Timeline card. All three deliberately discard the stored clip for the current pass and shoot another take.

Don't delete the vault folder's vault.json on its own. The clips follow the manifest. If you want a segment back in the queue, delete that one clip file - the segment becomes outstanding again on its own and the manifest stays consistent.

CategoryH3 Planner

Inputs (6)

NameTypeDefaultDescription
shotH3_SHOT—
imagesIMAGE—
save_last_frameBOOLEANtruewrite the final frame for the next segment's continue link
auto_advanceBOOLEANfalsequeue the next segment automatically until the timeline is done
max_auto_runsINT241–999—
audiooptAUDIO—

Outputs (3)

NameTypeDescription
statusSTRING—
clip_pathSTRING—
imagesIMAGE—