Nodes/comfyui-minimax-h3-audio-T8/Prepared LTX · Generate Refined Latent (T8 EXP)
ComfyUI Node

Prepared LTX · Generate Refined Latent (T8 EXP)

The Sampler Half of a Split LTX Refinement

By T8mars·Created 2 months ago·Updated about 7 hours ago· 1,158
Prepared LTX · Generate Refined Latent (T8 EXP)
  • prepared_bundle
  • generation_receipt
  • latent_path
  • report_json
◄noise_seed8301►
◄chain_idltx_split_trial_01►
◄resume_existingtrue►
◄serial_lease_path►

"Prepared LTX" is one of the stranger corners of this pack, and it's worth being blunt about what it is before you wire anything: it runs an LTX-2 refinement worker over an H3-produced latent, through a 194M adapter that maps between the two latent spaces. It is not a general "convert my H3 video to LTX" button, and it isn't a LoRA-and-a-few-steps imitation of the upstream Tao pipeline. It calls pinned upstream implementations.

The reason the whole thing is split into three nodes is resource discipline. Generating and decoding a clip like this on a 16 GB card means you don't want the VAE sitting in memory while the sampler works, and you really don't want a crash during decode to cost you the generation.

What this node does

It runs only the refinement worker. Hand it a prepared_bundle and it performs the LTX generation, commits a SHA-bound latent receipt, and returns:

  • generation_receipt - a typed T8_MODULAR_PREPARED_LTX_GENERATION value, the token that proves what ran. Feed it to the decode node.
  • latent_path - where the frozen latent landed on disk.
  • report_json - what actually happened, in detail.

It never touches the VAE and never implicitly starts another sampler. If you were hoping it would "just finish and give me a video," the answer is the next node down the chain.

Inputs that matter

  • prepared_bundle - the identity manifest, built with tools/prepare_generation_bundle.py. Paths in it must be your real local inputs; copying the node directory around or editing Python invalidates the fingerprint.
  • noise_seed (default 8301) - the worker's noise draw. Part of chain identity, so changing it means a new chain, not a cache hit.
  • chain_id (default ltx_split_trial_01) - name your experiment. New chain ID whenever you change prompts, checkpoints, implementation or the import environment.
  • resume_existing (default true) - with the same chain and identical inputs, the committed receipt is verified and reused instead of re-running the worker.
  • serial_lease_path (advanced) - an absolute shared lease path so two workers can't fight over the same GPU/host resources.

One detail that surprises people: this node forces fingerprint_inputs to NaN, so ComfyUI's own caching can't decide the node is redundant and skip it. The identity checking happens inside the worker, against the bundle and the receipt - which is the only place it can be done honestly.

Install

Manager, search 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

Restart ComfyUI, refresh the page. The base pack deliberately installs no Python packages - requirements.txt is comments - because the author won't risk swapping your Torch/CUDA stack.

Prepared LTX is the exception to that rule, and it's on you. Upstream LTX-2, the Tao worker, Sana and the adapter are pinned by revision and provided by your local directories; the node pack doesn't vendor them or download them. The resource observer needs NVIDIA's nvidia-ml-py (import name pynvml) in the Prepared environment, and it is required to fail before a worker starts rather than fabricate a VRAM number. Missing it is the most common first-run failure here, and it looks like a startup error rather than a node error.

The author's own qualification notes say the isolated environment was Python 3.12 and that the pack's requires-python >= 3.10 should not be read as "this route is tested on 3.10." Take that literally.

Where people get burned

Pasting a bundle path from someone else's machine. The manifest binds to actual local files, and path identity is checked, not assumed. Same story for the placeholder values in the shipped example graphs under examples/workflows/61-prepared-ltx-split/ and 32-prepared-generation/ - they're templates with obvious blanks.

And the licence angle, since this route moves weights around: the node source is GPL-3.0-or-later, but H3's own weights are under the MiniMax H3 Community License, which voids its grant in the US, EU, UK and South Korea. The pack says plainly that conversion doesn't change those boundaries. Converting a checkpoint for this pipeline doesn't launder its terms.

CategoryT8/MiniMax H3/Modular Sampling/Experimental

Inputs (5)

NameTypeDefaultDescription
prepared_bundleT8_PREPARED_GENERATION_BUNDLE—
noise_seedINT83010–18446744073709550000—
chain_idSTRINGltx_split_trial_01—
resume_existingBOOLEANtrue—
serial_lease_pathSTRING—

Outputs (3)

NameTypeDescription
generation_receiptT8_MODULAR_PREPARED_LTX_GENERATION—
latent_pathSTRING—
report_jsonSTRING—