H3 Relay · Pack LTX Model
For people who already built their own LTX stack
- model
- vae
- latent_2x_model
- clip
- ltx_model
Most people use H3 Relay · LTX Upscale Model Loader and never look back. H3RelayLTXModelAdapter - displayed as H3 Relay · Pack LTX Model - is the door for everyone else: the people who already have a favorite LTX stack assembled from native ComfyUI nodes, with their own LoRA choices, attention backends, and model patches. This node takes your native MODEL, VAE, LATENT_UPSCALE_MODEL, and CLIP outputs and packs them into H3 Relay's one-wire H3_RELAY_MODEL bundle so the rest of the pipeline treats them like any other LTX model.
The README's framing is the honest one: "Advanced users can build an LTX stack with native ComfyUI MODEL, VAE, LATENT_UPSCALE_MODEL, CLIP, LoRA, attention, and patch nodes, then use Pack LTX Model to convert those four components into H3 Relay's one-wire bundle." If that sounds like you, this is the node. If it doesn't, the regular loader is simpler and automatically tracks your choices.
What you feed it
model(MODEL) - your LTX diffusion model, after any native LoRA, attention, or model-patch nodes. Order matters; pack last.vae(VAE) - the LTX video VAE.latent_2x_model(LATENT_UPSCALE_MODEL) - the learned latent spatial upscaler that creates the 2x target latent.clip(CLIP) - an LTX-compatible text encoder, normally the projected Gemma4 12B encoder.cache_identity(defaultcustom-ltx-v1) - this one's the trap, see below.
Output: ltx_model (H3_RELAY_MODEL), ready to fan out to every LTX 2× Enhance node.
The one thing you must not forget: cache_identity
Here's the asymmetry that catches people. The regular LTX loader fingerprints every filename and strength it loads, so a swap invalidates the cache automatically. This node can't - it receives already-loaded objects, and generic loaded objects don't retain stable, cross-restart provenance you can fingerprint. So the pack falls back on you.
Whenever you change any upstream checkpoint, LoRA, strength, patch, VAE, latent upscaler, or CLIP, bump cache_identity. Otherwise H3 Relay's content-addressed cache will happily hand you artifacts derived from the old model chain, and you'll swear the pack is broken when it's just faithful to a stale identity. It's one manual step, and it's the entire price of bringing your own stack.
Install and gotchas
Shared pack install: ComfyUI Manager → H3 Relay, restart, or git clone https://github.com/akatz-ai/h3-relay into custom_nodes. You need the LTX 2.5 models from MODELS.md in their folders (separately licensed - the pack's GPL-3.0 covers source only), and since you're building your own chain you also need whatever nodes that chain uses.
The two failure modes to know: an empty cache_identity is rejected outright (it can't safely cache with no identity), and forgetting to bump it after a swap produces stale-but-valid-feeling results. Both are fixable in seconds once you know what the field is for.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | LTX diffusion model after any native LoRA, attention, or model-patch nodes. | |
| vae | VAE | — | |
| latent_2x_model | LATENT_UPSCALE_MODEL | Learned latent spatial upscaler used to create the 2x target latent. | |
| clip | CLIP | LTX-compatible text encoder, normally the projected Gemma4 12B encoder. | |
| cache_identity | STRING | custom-ltx-v1 | Stable identity for this custom native model chain. Change it whenever an upstream checkpoint, LoRA, strength, patch, VAE, latent upscaler, or CLIP changes. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| ltx_model | H3_RELAY_MODEL | — |