JoyAI_Echo_SM_Clip
The 12B brain behind JoyAI-Echo's long stories
- clip
JoyAI-Echo doesn't use a dinky CLIP or T5 for its text conditioning. It uses Gemma 3 12B - a text encoder bigger than most image checkpoints people run - wrapped up with a multimodal "connector." This node is what loads that pair. It's the least glamorous node in the pack and also the one where the GGUF habit saves your GPU, because 12B of Gemma at fp16 is not free.
If you've read the LTX-2 lore, this should look familiar: LTX-2 moved to Gemma 3 12B as its text encoder, and JoyAI-Echo inherits that stack wholesale since it's an LTX-2.3 finetune. The difference is that JoyAI-Echo's wrapper is deliberately pure text to embedding - no built-in prompt enhancer rewriting your words. What you type is what gets encoded, which for a multi-shot story model is exactly what you want: the pack's own Encoder node is where your shot list gets structured, and this node is just the thing that makes the encoder able to run.
How it works
load_joyai_te builds a GemmaTextEncoderWrapper: the Gemma weights plus an embeddings_processor (that's your connector) that turns raw text into the paired video-context / audio-context embeddings the distilled generator expects. The wrapper is what the Encoder node later uses to encode every shot, one at a time. The Gemma config files live inside the pack at JoyAI_Echo/configs/gemma/, so you don't manage a tokenizer separately.
Inputs that matter
clip- the safetensors Gemma (gemma-3-12b-it-qat.safetensors) fromComfyUI/models/clip. Optional, in the sense that you can instead use the next field.gguf-gemma-3-12b-it-qat-Q4_0.gguffromComfyUI/models/gguf. Pick this orclip, not both. Q4 on a 12B encoder is the low-VRAM move, and honestly for a text encoder it's a fine trade - you lose almost nothing you'd notice on a storyboard.connector- the multimodal connector, also inComfyUI/models/clip. The README listsconnector.safetensorsand mentions an "11 version" - if your Gemma and connector are from different revisions, swap the connector to match your checkpoint's era. This one is not optional; no connector, no embeddings.infer_device-cudaorcpu. CPU works and is how people on tiny cards keep the 12B encoder from nuking VRAM, it just takes a while to encode a full shot list.
Output is a single clip (CLIP) that feeds straight into JoyAI_Echo_SM_Encoder.
Install and models
Same pack install as everything else in ComfyUI_JoyAI_Echo - git clone into custom_nodes, or search "JoyAI Echo" in ComfyUI Manager - then drop the Gemma files where the combo boxes expect them:
ComfyUI/models/clip/ gemma-3-12b-it-qat.safetensors # optional
ComfyUI/models/gguf/ gemma-3-12b-it-qat-Q4_0.gguf # optional
ComfyUI/models/clip/ connector.safetensors # required
The files come from smthem/LTX-2.3-test-gguf, alongside the two VAEs the Model node needs. Install requirements.txt from the pack, but skip the torch/torchvision/torchaudio lines if you're on an existing ComfyUI env - reinstalling those is the fastest way to brick a working setup.
Common issues
- OOM on the encoder. The 12B Gemma is a serious lump of VRAM. This is the node where the GGUF path pays off:
Q4_0+infer_device: cpuis a workable combo on 8 GB cards and under. Slow, but it doesn't OOM. - Nothing shows up in the
ggufdropdown. The pack registers its ownggufmodel folder when it loads (it does this in code, independent of city96's ComfyUI-GGUF), so if the dropdown is empty, check that the pack actually loaded and that your.ggufis underComfyUI/models/gguf/. - Garbage or empty conditioning later. Nine times out of ten that's a Gemma/connector revision mismatch, not a prompt problem. Both come from the same HF repo, so re-download the connector from the same folder as your Gemma and try again.
- Your other workflows' models suddenly unload. Every node in this pack calls
clear_comfyui_cache()on execute, which flushes ComfyUI's loaded models. Expected behavior, not a leak.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | COMBO | 1 options: none | |
| gguf | COMBO | 1 options: none | |
| connector | COMBO | 1 options: none | |
| infer_device | COMBO | 2 options: cuda, cpu |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| clip | CLIP | — |