H3 HyperFlow · Save Completed TAIL AV (T8 EXP)
A save node that refuses to overwrite anything — and that's the point
- completed_result
- av_latent
- artifact_path
- artifact_sha256
- report_json
What this actually does
You just paid for the expensive half of a HyperFlow split - the second pass that finishes the video - and you want it on disk before you touch anything else. This node takes the typed completed_result that the HyperFlow TAIL stage hands out and writes the finished joint AV plus the TAIL's own execution receipt into output/MiniMaxH3/hyperflow_stage_artifacts.
It does not sample. It does not resize, upscale, decode or re-run the TAIL. That's the whole node.
The design is deliberately paranoid, and you should read the paranoid part before you rely on it: every save creates a brand-new directory, an OS lock protects it, and the payload lands as a single atomically renamed safetensors file - no pickle, no in-place overwrite. If a file is missing, corrupt, wrong type or locked, the load side raises instead of quietly re-sampling. Which means the node can never "helpfully" give you a slightly different take than the one you saved.
Inputs and outputs
Two inputs, honestly:
completed_result- typeT8_HYPERFLOW_COMPLETED_AV. Only the continuous TAIL stage (or the matching Tail Load node) emits this type, so if the socket is refusing your latent, you're wiring something that isn't a HyperFlow completion.prefix-STRING, defaultTAIL. Cosmetic; it names the artifact directory.
Outputs are av_latent, artifact_path, artifact_sha256 and report_json, plus a text summary on the node. av_latent exists so you can keep the rest of the graph wired without splitting the branch.
Keep both artifact_path and artifact_sha256. The load counterpart wants an exact SHA match; a path alone won't resume, and the docs are explicit that loads do not auto-search, auto-match, or guess your old files. If you throw the SHA away, the artifact is still on disk and still useless to the loader.
Where it sits in a workflow
The pack ships a continuous-split family under examples/workflows/47-hyperflow-continuous-split: graphs named ...Full_Save_EXP, ...Cold_TAIL_EXP and ...Load_Completed_TAIL_EXP. This node is what that middle Save graph exists for, and it's what makes the third graph possible - a graph where the diffusion model, the text encoder, the HyperFlow adapter and the HEAD stage are all deleted, and the completed AV just goes to decode.
That's the real payoff. Not "backup", but "I can stop rerunning the first half."
One thing worth internalising, because it explains why save and load are split this way: this route works in raw model-space latent state, not clean x0. The "completed result" here is a specific typed object with a receipt, not a generic LATENT you can drop into any old decode chain. The loader checks for exactly that.
Install
Anything in this plan needs the pack plus a recent ComfyUI core with native H3 support.
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8.git minimax-h3-audio-T8
Or search MiniMax H3 Audio T8 in ComfyUI Manager. Then fully exit ComfyUI and restart, and refresh the browser tab - a hot reload won't register this pack. If Manager shows an older release than GitHub, clone from GitHub; the registry and the repo publish on separate schedules.
Models go where H3 always goes: the diffusion model in models/diffusion_models, the Qwen3-VL text encoder in models/text_encoders, the video and audio VAEs in models/vae. The repo ships no weights, and requirements.txt is two comment lines on purpose - the pack refuses to pip-install anything that could replace ComfyUI's torch/CUDA stack. H3's own licence is the MiniMax H3 Community License, which geofences the local weights out of the US, EU, UK and Korea, outputs included. Worth knowing before you build a pipeline on it.
Common issues
"It saved, but the load graph says the SHA doesn't match." You copied the path and not the digest, or you're pointing at a different run's directory. Each save is a fresh directory; there is no "latest" lookup.
"Load throws about a busy lock or a partial file." Something else is writing, or a previous run died mid-write. The atomic commit means a partial file never becomes visible as finished - but a stale lock will still block you, so check the directory rather than retrying blindly.
Artifact looks small. That's expected - you're storing latents, not pixels. If you wanted a playable file you wanted a decode-and-save node, not this one.
Nodes are red / the node is missing entirely. Update ComfyUI core, the frontend and Manager together, then restart. Updating only this custom node frequently isn't enough, because these EXP nodes track native H3 APIs that move quickly.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| completed_result | T8_HYPERFLOW_COMPLETED_AV | — | |
| prefix | STRING | TAIL | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| av_latent | LATENT | — |
| artifact_path | STRING | — |
| artifact_sha256 | STRING | — |
| report_json | STRING | — |