H3RelayInternalAcceptUltimate
The invisible receipt-writer that finishes every H3 Ultimate job
- base_enhanced
- sequence
- segment
- images
- audio
- enhanced
- video
- video_path
- status
If you searched for this node because it appeared in your graph or in a "missing nodes" warning, take a breath: this is plumbing, and it's working as intended. H3RelayInternalAcceptUltimate is the persist-and-accept stage that runs at the end of every H3 Relay · H3 Ultimate 2× Enhance job. When you place the public Ultimate node and hit run, H3 Relay expands it into a whole subgraph of model loading, conditioning, the MMH3 upscaler, VAE decoding - and this node as the final hop. You normally never place it by hand; it's registered under the pack's /internal category so that saved workflows containing expanded subgraphs can reopen and run.
What it does
Think of it as the bookkeeper for a finished shot. It receives the decoded pixel frames and audio from the Ultimate refinement, plus a cache_key that H3 Relay fingerprints from everything that affects the result (model, prompts, references, seeds, tiling, the accepted raw shot's revision and hash). Its job is to make the result durable and reproducible:
- writes the enhanced frames to disk as hashed video segments (a full segment plus a delivery segment, H.264 at your
output_crf, 18 by default), - records each file's SHA-256 alongside all the finishing parameters - seeds, temporal windows, tile sizes, overlap - into a JSON manifest,
- appends the record into the
enhancedfinishing stream, - returns the updated stream, the video, its path, and a status string.
That disk-backed record is what makes the whole "reroll only what changed" contract work: re-run the same Ultimate job and the pack restores the verified cached result instead of redoing inference, and changing an earlier raw shot invalidates only the finishing derived from it.
The inputs and outputs, briefly
Nearly every input is internal bookkeeping that the expansion feeds automatically, so don't feel like you need to understand all of it: base_enhanced (the finishing stream to append to), sequence and segment (which accepted shot this refines), images and audio (the decoded enhancement output), cache_key, and the parameters recorded into the cache: checkpoint_frames, output_crf, refinement_seed, temporal_chunk_frames (136), temporal_overlap_frames (17), tile_width/tile_height (1024), spatial_overlap (128). The one detail worth knowing if you're debugging: for continuation shots, the raw generation window is larger than the sampled checkpoint latent - Ultimate keeps one context/boundary frame, and this node crops that prefix out before publishing the delivered segment, so your enhanced stream contains exactly the delivered frames with no duplication.
Outputs: enhanced (H3_RELAY_ENHANCED, the updated finishing stream to chain into the next Ultimate node, Interpolate, or Assemble), video, video_path, and status.
What to do about it
If you see it in a saved workflow, leave it alone - it belongs to H3 Relay, and editing or deleting it will break the finish/accept flow. If ComfyUI reports it as a missing node class, the pack isn't installed or is out of date, not the node: install or update H3 Relay through ComfyUI Manager (search "H3 Relay") or git clone https://github.com/akatz-ai/h3-relay into custom_nodes, restart, and the class resolves. The one genuine gotcha is that a fresh Ultimate execution also needs the external Comfyui-MMH3-UltimateUpscale pack - if that's missing, the parent Ultimate node fails with an actionable error before this stage even runs, and an already-cached verified result can still be restored without the external engine.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| base_enhanced | H3_RELAY_ENHANCED | — | |
| sequence | H3_RELAY_SEQUENCE | — | |
| segment | H3_CHAIN_SEGMENT | — | |
| images | IMAGE | — | |
| audio | AUDIO | — | |
| cache_key | STRING | — | |
| checkpoint_frames | INT | 51–100000 | — |
| output_crf | INT | 180–51 | — |
| refinement_seed | INT | 4242640–18446744073709550000 | — |
| temporal_chunk_frames | INT | 13617–100000 | — |
| temporal_overlap_frames | INT | 170–100000 | — |
| tile_width | INT | 102432–4096 | — |
| tile_height | INT | 102432–4096 | — |
| spatial_overlap | INT | 1280–2048 | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| enhanced | H3_RELAY_ENHANCED | — |
| video | VIDEO | — |
| video_path | STRING | — |
| status | STRING | — |