Moondream 2
The 1.6B captioner that runs anywhere
- image
- STRING
Not every VLM needs 16GB of VRAM and a 20-minute first download. Moondream2model is the pack's little guy: a 1.6B-parameter vision-language model from @vikhyatk that's built to run on edge hardware. It's SigLIP + Phi-1.5 trained on the LLaVA dataset, and it fits in under 2GB of memory. If you want image captioning and simple visual Q&A without rearranging your life around it, this is the one to reach for.
What it's for
Fast, cheap captioning at scale: tagging folders of images, generating descriptions for training sets where you'll rewrite them anyway, or just asking "what's in this image?" on a machine where Qwen2-VL is out of the question. It's a great first VLM to get working in ComfyUI because it downloads fast and the failure surface is tiny.
How it works
First run pulls vikhyatk/moondream2 from Hugging Face into models/LLavacheckpoints/files_for_moondream2. The current version pins a specific checkpoint revision and loads it through Moondream's own query API - the node asks the model a question and gets back a text answer. The default text_input is "Describe this image in detail."; change it to anything - "what color is the car?", "is this image safe for work?".
The inputs that matter
It's a two-input node in the basic form:
- image - any image batch. Hand it multiple frames and it answers each.
- text_input - the question or instruction. This is the whole game; be specific.
The STRING output is the model's answer. Feed it to ViewText to read it, or run it into the pack's prompt-generation nodes to build a workflow that captions an image and immediately generates a new prompt from that caption.
Install
Pack-standard install - ComfyUI Manager (search VLM_nodes) or:
cd ComfyUI/custom_nodes
git clone https://github.com/gokayfem/ComfyUI_VLM_nodes
python -m pip install -r ComfyUI/custom_nodes/ComfyUI_VLM_nodes/requirements.txt
The catch: licensing
Moondream is research use only - no commercial use. The README says it plainly, and it's the single most important thing to know before you build a product on this node. For anything you might sell, use a permissively-licensed captioner instead. Also set expectations: at 1.6B parameters it's not going to nail fine details or read small text the way a 7B+ model will. If you need OCR or nuanced reasoning, that's Qwen2-VL territory. For everything else, this node is the fastest, lightest caption in the pack.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| text_input | STRING | Describe this image in detail. | — |
| max_tokensopt | INT | 2561–2048 | — |
| temperatureopt | FLOAT | 0.000–2 | — |
| top_popt | FLOAT | 0.300.01–1 | — |
| reasoningopt | BOOLEAN | false | — |
| unload_afteropt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |