LTX-V Remote CLIP Loader (Gemma + local projection)
The LTX-V 2.3 Hybrid CLIP Loader
- clip
LTX-2 and LTX-2.3 have the most obnoxious text encoder in the local video scene. Gemma-3-12B runs around 22 GB in fp16, caused the majority of the OOM errors in the messy January 2026 launch week, and loads so slowly that the community's immediate workarounds were "bypass Gemma entirely and write better prompts" or "run the encoding through an API." If your generation card can't hold Gemma, this node is the interesting third way: run Gemma on a separate GPU server, and keep only the small piece that needs to be local.
LTXVRemoteCLIPLoader is the LTX-Video 2.3 hybrid loader in the RemoteTextEncoder pack. It's called "hybrid" because it splits the text path down the middle - Gemma-3-12B encodes on the remote server, while the text_embedding_projection linear layer loads from a local .safetensors file on your ComfyUI machine. That projection is only about 1.4 GB, so keeping it local saves the dominant VRAM cost (Gemma) without forcing you to sync a big projection file to the server. It's the one node in this pack that genuinely earns the two-machine setup.
How it works
On load, the node does two things. It resolves the Gemma model against the server's model list, and it reads a projection file from ComfyUI's text_encoders folder (e.g. ltx-2.3_text_projection_bf16.safetensors). It inspects the state-dict keys to figure out which projection layout it's looking at:
- dual_linear - has separate
video_aggregate_embedandaudio_aggregate_embedweights. That's the LTX-2.3 form, because 2.3 generates audio natively and needs a projection head per modality. - single_linear - a plain
text_embedding_projection.weight. - legacy - an older
text_projectionkey.
If none of those keys are present, the loader errors out with the exact list of keys it found, which makes a wrong projection file easy to diagnose. When you later run LTXVTextEncodeRemote, Gemma encodes on the server via the /comfy/encode/gemma_raw endpoint (all-layer encode, which is why the node's timeout default is 120 rather than 60) and the projection is applied locally.
The inputs that matter
server_url- base URL of the server, defaulthttp://localhost:8288.model_name- the Gemma-3-12B model on the server (an HF repo-id likegoogle/gemma-3-12bor a path to a.safetensors).custom_modeloverrides the dropdown if it's not listed.projection_path- the projection file, picked from a dropdown of yourtext_encodersfolder. This is the file you have to actually obtain and place, separately from the pack.gemma_max_length- max Gemma token length, default 1024, range 64–8192. The tooltip carries the key fact: the LTX-V 2.3 tokenizer pads prompts to at least 1024 tokens, so don't set this below 1024 and expect padding math to work out.timeout- HTTP timeout, default 120; all-layer Gemma encoding is slower than single-layer, so this exists for a reason.api_key- only if the server requires auth.
Output is one clip socket, and it wires straight into LTXVTextEncodeRemote.
Setup
The pack install is the standard one - clone https://github.com/rwfsmith/ComfyUI-RemoteTextEncoder into ComfyUI/custom_nodes, pip install -r requirements.txt, set rte_config.json, restart (or ComfyUI Manager → ComfyUI-RemoteTextEncoder). Two extra things this node needs:
- The projection file in
ComfyUI/models/text_encoders/- named something likeltx-2.3_text_projection_bf16.safetensors. - Gemma-3-12B on the server - either downloaded from HF by repo-id or dropped as a
.safetensors(plusconfig.jsonand tokenizer files) intoserver/models/. The server half needs thetransformers/safetensors/fastapistack and torch.
The first encode is the slow one - the server downloads and loads Gemma on first use. Subsequent calls hit its cache.
Where it fits
Honest framing: this node exists because LTX-2.3's Gemma encoder is a genuinely unreasonable thing to load on a midrange card, and the community never found a clean local answer. If you have a second GPU that can hold a 12B+ encoder, this is the cleanest way to use it. If you're on one card, the lighter-weight answer is still "run LTX without full Gemma guidance" - but that's a different workflow. This one is for people who want Gemma and have somewhere to put it.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| server_url | STRING | http://localhost:8288 | Base URL of the Remote Text Encoder server. |
| model_name | COMBO | Gemma-3-12B model on the server (HF repo-id or path to .safetensors). | |
| projection_path | COMBO | Projection file from the text_encoders folder (e.g. ltx-2.3_text_projection_bf16.safetensors). | |
| gemma_max_length | INT | 102464–8192 | Max Gemma token length. LTX-V 2.3 tokenizer pads prompts to at least 1024 tokens. |
| timeout | INT | 1205–600 | HTTP request timeout in seconds (all-layer Gemma encode may be slower than single-layer). |
| api_keyopt | STRING | Bearer API key if the server requires authentication. | |
| custom_modelopt | STRING | Overrides the model_name dropdown. Use for models not yet in the discovery list. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| clip | CLIP | — |