Nodes/comfyui-minimax-h3-audio-T8/MiniMax H3 HyperFlow Head 4 Plan (EXP/T8)
ComfyUI Node

MiniMax H3 HyperFlow Head 4 Plan (EXP/T8)

The first half of the trajectory, and why it isn't just half the sigmas

By T8mars·Created 2 months ago·Updated about 7 hours ago· 1,158
MiniMax H3 HyperFlow Head 4 Plan (EXP/T8)
  • model
  • hyperflow_plan
  • report_json

MiniMaxH3HyperFlowHeadPlanT8Advanced builds the absolute 0:4 intervals of a HyperFlow plan. It's the first half of the 8-step trajectory, and it exists as its own node because this half gets used completely differently from the other one: 0:4 is the low-resolution coarse stage of a partial-x0 upscale, where you take the model's predicted clean latent, hand it to the learned 3D upscaler, and finish at the higher resolution.

The node itself is tiny - one input, model, and two outputs, hyperflow_plan and report_json. Its whole job is to recover the trained grid from the HyperFlow artifact and restrict it to the 0:4 window. The description pins the use case hard: "for explicit partial-x0 low-to-high 4+4 upscale only."

Why a typed plan instead of a sigma slice

You could, in principle, chop a sigma list at the midpoint. What you'd lose is the thing that makes the family work: the boundaries aren't a midpoint. The trained grid puts the 4:4 boundary at video sigma ≈ 0.923077 and audio sigma = 0.75, and video and audio have their own shifts (12 and 3). A plan recovered from the artifact knows both clocks and knows the absolute interval indices, which is also what lets the downstream sampler validate that it's being handed the half it expects.

The docs for the HyperFlow runtime make the design intent explicit: partial plans are private to two specific routes - the continuous-state split and the explicit new-noise HIGH refinement - and the public full8 sampler refuses a bare partial plan rather than quietly sampling something different. So a Head plan only works where a node that expects a Head plan consumes it.

Where it sits in the graph

Loader → Head Plan → coarse sampler (the 0:4 LOW stage) → learned 3D latent upscale → Tail Plan + tail sampler for the 4:8 HIGH stage. The pair matters: Head without a Tail is a half-finished experiment.

That low-to-high 4+4 route totals 8 evaluations of the adapter, spread as 4 + 4 across resolutions. Worth internalising what it is not: it's a new-noise restart at the high resolution after a learned resize, not one continuous trajectory. The T8 docs state that outright, and it's the reason this route is labelled an upscale experiment rather than a continuation.

Install

ComfyUI Manager → MiniMax H3 Audio T8, or:

cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8.git minimax-h3-audio-T8

Full quit and restart of ComfyUI, then refresh the browser - Python changes don't come along for a frontend refresh. requirements.txt installs no extra packages, deliberately, so the base nodes and these Advanced ones lean on ComfyUI's own torch/numpy/Pillow/safetensors. For this node you need the HyperFlow safetensors in models/hyperflow/loras, an unpruned H3 base, and the H3 learned latent upscaler in models/latent_upscale_models (the chunked paths reference minimax_h3_latent_upscaler_3d_fp16.safetensors as their default).

Where it bites

Head plan on the wrong sampler is a hard error, not a weird image. The coarse sampler checks that its plan is exactly 0:4 and raises otherwise. If you mix up Head and Tail outputs on the canvas - they look identical, same type - that's the error you'll see. Nice of it to fail fast.

Don't pair Head with the full8 sampler. It'll refuse. Head plans are for the upscale route only.

Upscaling is a fresh restart, so the seed and noise matter twice. The HIGH half gets its own noise. If you're A/B-ing low-to-high against single-pass at final resolution, hold the seed and don't expect identical pixels - the pack never claims that for this route and it says so repeatedly.

Resolution choices have to stay legal. LOW dimensions must be representable on H3's 32-pixel grid, and the learned upscaler wants a clean 2x relationship. Picking "roughly half" is how you get either an error or a soft result.

CategoryT8/MiniMax H3/Performance/Experimental

Inputs (1)

NameTypeDefaultDescription
modelMODEL—

Outputs (2)

NameTypeDescription
hyperflow_planT8_H3_HYPERFLOW_PLAN_V1—
report_jsonSTRING—