Glide Vision
Caption a reference with Ollama and feed the words into H3 Studio
- image
- description
The rest of the ComfyUI-CGlide pack is about generating H3 video. This node is about the workflow around it: looking at a reference image and turning it into words you can paste into H3 Studio's prompt. Glide Vision is a vision-language-model captioner - point it at a picture, get a description, and let that description become the seed of your prompt.
The setup is refreshingly local-first. The default backend is Ollama pointing at http://localhost:11434 with the llava model. That's the whole appeal: no API key, no cloud, free per call, works offline. There's an openai backend too, which hits an OpenAI-compatible chat endpoint at the server_url you give it - useful if you want a bigger model than a local card can hold, at the cost of sending your image somewhere and paying per call. The local-vs-API decision is the same one every captioning tool makes, and here the local tier is clearly the intended path.
How it works
The inputs are simple: image_name is the file in ComfyUI/input, custom_prompt is what you ask the model (the default is a decent "describe in three parts: subject, setting, style" prompt), and description is where the text lands. The actual captioning happens through an Analyze button in the node's panel - the browser sends the image to a small server route the node registers, which calls Ollama's /api/generate with the image as base64. The node's own execution then loads the image from the input folder and passes description straight through to its output.
So you get two outputs: image (the loaded image as a tensor) and description (the string). Both feed the rest of your graph - the description slots right into a prompt builder, and the image can carry on as a reference.
The auto_eject toggle is the smart one if you're on a tight card: with it on, the node tells Ollama to unload the model (keep_alive: 0) after use, so the vision model isn't sitting in VRAM next to the 11.8–21GB H3 checkpoint. Ollama itself runs as a separate process, which is the standard local pattern - you're running two services, not two models squeezed into one.
Where it's good and where it isn't
For the H3 cast workflow - describe a character reference, feed the description into the prompt, generate - it's genuinely handy, because H3 wants prompt detail and a VLM is a fast way to get it. But keep the known ceiling in mind: vision-language models are reliably bad at multi-subject attribution. Two people in a frame and it'll mix up who's wearing what. And a caption is a starting point, not a finished prompt - the author of the LTX-Video node summed it up after testing a wall of local models: you can't always get storytelling from a vision model. Use the description as scaffolding and rewrite the important sentences yourself.
A word of caution that applies to any node that phones an external service: a captioner is exactly the kind of custom node people install without reading. Ollama-local keeps everything on your machine with no credential, which is the safe shape - but if you switch the backend to openai with a key in the URL, you're now sending your images to a server. Know which one, and make sure it's one you chose.
Install
It ships in the ComfyUI-CGlide pack:
cd ComfyUI/custom_nodes
git clone https://github.com/CGlide/ComfyUI-CGlide
Restart ComfyUI and it appears under the CSGlide category. The pack itself needs no extra pip packages beyond what ComfyUI already has - but Glide Vision additionally assumes Ollama is installed and running, and that you've pulled a vision model (ollama pull llava) if you haven't already. Same restart rules as the rest of the pack: a .py change needs a full ComfyUI restart, not a browser refresh.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| image_name | STRING | — | |
| custom_prompt | STRING | — | |
| description | STRING | — | |
| backend | COMBO | ollama | 2 options: ollama, openai |
| server_url | STRING | http://localhost:11434 | — |
| model | STRING | llava | — |
| auto_eject | BOOLEAN | false | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| description | STRING | — |