H3 RF · Endpoint + Original Template (T8 EXP)
This node does nothing — and the RF restart is broken if you skip it
- completed_av
- original_template
- base_sigmas
- rf_handoff
- completed_av
- report_json
- width
- height
MiniMaxH3RFHandoffEXPT8 binds two things together and hands them to the restart stage. It runs no model, draws no noise, and its own report says so. If you're on the RF (restart) split route in the T8 pack, it's the joint between the base descent and the second descent, and it's the node people skip because it looks like a pass-through.
It is not a pass-through. It's where the original template gets carried forward.
Why the template matters
RF restart is the "run a short second descent from a partially re-noised endpoint" trick - you take an already-mostly-finished AV latent and re-noise it to a low sigma, then spend 3-ish steps cleaning it back up. On MiniMax H3 that means two clocks at once: video and audio. The pack's own docs are blunt about the failure mode this node exists to prevent: if you let the second pass re-derive its audio anchor from the completed endpoint instead of the original input template, you get a double audio rebase, and the audio comes out squashed (the 1.88.1 fix note describes audio latent std dropping to ~0.10 where the base was ~0.36).
So the handoff binds:
completed_av(required) - the finished endpoint from the base descent. In practice you wire the Stage Sampler's output here, not a raw Core sampler output.original_template(optional) - the original base inpaint/audio anchor. It's optional only because a T8 RF stage result can already carry it internally.base_sigmas(optional) - a SIGMAS input that does exactly one thing: preserve the schedule's dtype. It does not re-derive the schedule.
Outputs are rf_handoff (a T8_RF_HANDOFF, wire it to MiniMaxH3RFRestartStageSetupEXPT8), completed_av passed straight back out, report_json, and width/height read off the latent (latent × 16, so a 448×256 clip reports 448 and 256 - handy for sanity-checking you're on the canvas you think you are).
The trap
The author's description says it plainly: do not substitute denoised or the completed endpoint for the original inpaint/audio anchor. A plain Core sampler output also won't do - it has already crossed the float32 boundary and lost the exact pre-conversion state the restart expects. That's the whole reason the T8 stage sampler exists as a separate node rather than a Core SamplerCustomAdvanced.
Two other things worth knowing: nothing here is cached away behind a hidden second pass, so a zero-step restart genuinely is zero NFE, and the example graphs in examples/workflows/62-rf-restart-split/ ship with placeholder artifact paths that you must replace before queueing.
Install
This is one node in a very large pack, so install the pack once:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8.git minimax-h3-audio-T8
Then fully exit and restart ComfyUI - not just "Refresh". ComfyUI Manager users can search MiniMax H3 Audio T8. The pack's requirements.txt deliberately installs nothing (torch, numpy, Pillow and safetensors come from ComfyUI), so there's no pip step to fight; the real requirement is recent ComfyUI core, because these nodes use the newer node API and the native H3 model support.
You'll also need the H3 model in models/diffusion_models, the Qwen3-VL text encoder in models/text_encoders, and both VAEs in models/vae.
When it goes wrong
If every T8 node is red, that's the core/frontend, not this node - update ComfyUI core and the frontend together and restart. If the restart node complains about a missing anchor, you fed it the endpoint instead of the template: re-read the report_json from the handoff, it reports anchor_identity and model_calls: 0 so you can confirm the binding happened without any compute.
One licence note if you're in the US, EU, UK or South Korea: the H3 open weights are geofenced out of those regions, so the local-weights route is the one part of this workflow you should read the licence on before you spend a weekend on it.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| completed_av | LATENT | — | |
| original_templateopt | LATENT | — | |
| base_sigmasopt | SIGMAS | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| rf_handoff | T8_RF_HANDOFF | — |
| completed_av | LATENT | — |
| report_json | STRING | — |
| width | INT | — |
| height | INT | — |