H3 Relay · Accepted Raw Latent
The escape hatch that turns an H3 Relay shot back into a plain LATENT
- sequence
- latent
- checkpoint_uri
- status
Most of H3 Relay lives in its own world. Generated shots, once you review and accept them, are stored in the pack's private sequence stream and its disk-backed cache - not as ordinary ComfyUI latents you can route anywhere. That's deliberate: the whole design is "approve a cheap native shot before paying for finishing." But it also means anything outside the pack that wants the raw footage can't see it. Accepted Raw Latent is the bridge back. It pulls an accepted shot's video/audio checkpoint out of the cache and hands it to you as a standard nested LATENT, ready for any latent-aware node.
The name isn't marketing spin. Where a lot of "bridge" nodes quietly decode and re-encode (and quietly change your footage), this one loads the actual saved checkpoint tensors off disk and hands them over. No regeneration, no GPU inference, no hard-coded cache paths you have to babysit.
What it's for
You'd reach for this when a finishing or editing tool expects ComfyUI's native nested H3 LATENT type but isn't part of H3 Relay's own chain. The canonical example is MMH3 Ultimate Upscale - in fact H3 Relay's own Ultimate finisher internally uses this node to feed the accepted raw shot into the upscaler. If you're hand-building a graph that does that, or you have some other latent-aware finisher, this is your clean way in: the sequence stays the source of truth, and you never regenerate a shot you already approved just to get its latent back.
How it works
The node reads the accepted sequence's segment records, resolves the durable checkpoint file for the shot you asked for, and (with verify_sha256 on, which is the default) recomputes the file's SHA-256 and compares it to the hash recorded when the shot was accepted. Mismatch, missing file, or missing recorded hash and it refuses with a specific error - you get integrity checking rather than a silent corrupt latent. It also sanity-checks that the frame count implied by the video tokens matches what the sequence metadata claims.
Three inputs, and only one you'll touch:
sequence(H3_RELAY_SEQUENCE) - wire in the accepted sequence stream from your H3 Relay generation graph.shot_index--1(the default) loads the latest accepted shot; positive values are one-based positions into the sequence. Position 1 is the first shot, not "shot number 1 you generated."verify_sha256- leave it on. There's no real reason to turn it off except debugging a cache you've deliberately moved.
It outputs latent (the nested video/audio LATENT - feed it to a VAEDecode for pixels or to a latent upscaler), plus checkpoint_uri (the durable artifact path) and status (a human-readable summary of what loaded). The last two are there so you can see where a shot came from without digging through the cache folder yourself.
Install and gotchas
Installation is just the pack itself - search H3 Relay in ComfyUI Manager, or:
cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/akatz-ai/h3-relay.git
restart ComfyUI, then get the MiniMax H3 model files (MODELS.md in the repo lists exact filenames and folders) and make sure FFmpeg is on PATH. But here's the thing: this node is useless until you've actually generated and accepted at least one shot, which means the whole heavy H3 stack - the FL2VA/Ref2VA checkpoints, the Qwen text encoder, both VAEs - has to be working first. The most common error is exactly that: no accepted shots, no segments, and the node tells you so flat out.
Where people get burned: -1 means latest accepted shot, not latest generated one. If you generated a shot but never accepted it (the pack's review step), this node can't see it - the sequence is only appended to on accept. And if you later prune the relay cache or move user/__h3_relay_cache, a previously-valid shot_index will start failing its hash check, and the fix is to regenerate and re-accept, not to fight the error.
Honestly? If you're a beginner you will probably never place this node yourself. It exists so H3 Relay can feed its own reviewed work into latent-aware finishers and so power users can do the same. But if you've ever stared at an H3 Relay graph wishing you could grab "the current shot as a latent," this is the exact node you were looking for.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| sequence | H3_RELAY_SEQUENCE | — | |
| shot_index | INT | -1-1–1000 | Accepted shot to load. -1 selects the latest shot; positive values are one-based sequence positions. |
| verify_sha256 | BOOLEAN | true | Verify the durable checkpoint against the hash recorded in the accepted sequence before loading. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| latent | LATENT | — |
| checkpoint_uri | STRING | — |
| status | STRING | — |