H3 Remote Text Encoder (CLIP over LAN)
Run H3's 18 GB text encoder on a second PC
- clip
H3 Remote Text Encoder is the node for anyone who has watched the Qwen3-VL encoder eat 15+ GB of VRAM while their H3 render sits idle waiting for the next encode. It's a CLIP whose encode actually runs on another machine: the 18 GB text encoder never loads on your render card at all. Encode travels over the LAN, results come back identical to a local encode, and repeated scene text is answered from a local disk cache without touching the network.
This is a serious fix for a real bottleneck. The H3 text encoder runs for seconds per shot but occupies gigabytes the whole rest of the time - on a 32 GB card it's the difference between the DiT loading fully and the DiT streaming part of its weights from system RAM every step. If you have a second PC with ComfyUI and this pack, you can get the encoder off the render card entirely. The README reports it verified across machines to float precision.
How it works
You point it at the other box's ComfyUI instance and it builds a proxy CLIP. Key inputs:
endpoint(defaulthttp://OTHER-PC:8188) - the ComfyUI box that will hold the encoder resident. It must have this pack installed (the encode route registers on load) and the encoder file in itsmodels/text_encoders.clip_name- the encoder filename on the remote box. The default is the nvfp4 AWQqwen3vl_32b_minimax_h3encoder. GGUF encoders auto-pair their-mmprojsidecar exactly as a local load would.timeout_seconds(default 600) - the first request may include the remote box loading an 18 GB encoder from disk.clip_type(defaultminimax) - a STRING rather than a dropdown because the valid list lives on the remote box.
The output is a normal clip socket, so it drops into the graph where a local CLIP would go - typically through an H3 Any Switch against the local loader, so you can flip between local and remote encoding without rewiring.
The fail-fast behavior is the quiet gem: the node checks the endpoint the moment it executes. Empty address, the untouched OTHER-PC placeholder, or an unreachable host each fail in about a second with a message that says exactly what to fix - instead of surfacing at the first encode, after the LLM writer has spent minutes producing a script that then gets thrown away.
Installing it
Part of the ComfyUI-H3-Multishot pack, on both machines:
cd ComfyUI/custom_nodes
git clone https://github.com/jlucasmcrell/ComfyUI-H3-Multishot
Or search H3 Multishot in ComfyUI Manager on each box. Requires ComfyUI v0.30.0+. The remote box needs the encoder in its models/text_encoders; the render box needs nothing extra beyond the pack. No Python dependencies either way.
Gotchas
The OTHER-PC placeholder is the classic trap - it's the default, and it's checked, so a graph that never had the field filled dies instantly with a message telling you to replace it. Turn the feature on (there's a remote_encoder switch on the H3 Studio Switches panel) only after the remote node is configured, or the graph fails at first run. And if the second box is slow to answer, remember the 600-second default timeout exists for the first cold load - later requests are served from the cache and don't pay it.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| endpoint | STRING | http://OTHER-PC:8188 | The ComfyUI instance that will hold the text encoder resident and serve encodes. It must have this node pack installed (the route registers on load) and the encoder file in its models/text_encoders. |
| clip_name | STRING | qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors | Encoder filename ON THE REMOTE BOX. GGUF encoders auto-pair their -mmproj exactly as a local load would. |
| timeout_seconds | INT | 60030–86400 | First request may include the remote box loading an 18 GB encoder from disk. |
| clip_type | STRING | minimax | CLIP type as core's CLIPLoader names it. 'minimax' for H3. A STRING rather than a dropdown because the valid list lives on the remote box. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| clip | CLIP | — |