SenseNova SI Loader
The node that drags a second repo along for the ride
- model
This is the node that actually loads SenseNova-SI, SenseTime's open-source vision-language model, into your ComfyUI graph so you can ask questions about images in plain English and get text back. No API key, no cloud - the whole thing runs on your own GPU.
First, the naming trap, because it's real: if you've heard "SenseNova" in ComfyUI circles it was probably SenseNova-U1, the infographic image generation model that had a moment in 2026. That's a diffusion model. SenseNova-SI is a different animal - a reasoning VLM ("SI" = self-instruction), and it reads images instead of drawing them. The community that buzzes about U1 is barely talking about SI, which is exactly the situation where you end up installing the wrong thing. This loader only touches the SI family.
How it loads, and the second-repo gotcha
The first thing to know: this pack is a wrapper around a source checkout of the upstream OpenSenseNova/SenseNova-SI repo. It isn't pip-installed. The loader imports the upstream model classes by dropping the repo onto sys.path at runtime, and if it can't find that repo you get a FileNotFoundError that helpfully lists every path it tried.
It looks, in order, for:
- the
repo_pathyou type into the node - the
SENSENOVA_SI_REPOenvironment variable deps/SenseNova-SIinside the pack (the documented spot)- the parent directory of the pack (so local development inside the upstream repo works)
Once found, the loader builds the model once and caches it, keyed by repo path, model path, model type, dtype, device map, and generation config. ComfyUI re-runs loaders constantly, and that cache is what keeps a workflow from spending ten minutes re-importing a model on every run. Flip force_reload to tear it down and rebuild.
Inputs that actually matter
model_path- a local path or a Hugging Face model id. The default issensenova/SenseNova-SI-1.1-Qwen3-VL-8B, so a bare first run downloads an 8B model from HF. Change it if you want an InternVL variant or a local copy.model_type-auto,qwen, orinternvl.autosniffs the model path for "qwen" or "internvl" and falls back to qwen.repo_path- the second repo. Leave blank if you cloned upstream intodeps/; fill it if you keep the checkout elsewhere.dtype-auto,bfloat16,float16, orfloat32. Worth knowing:dtypeanddevice_mapare only passed to Qwen models. The InternVL path just hands upstream amodel_path, so don't go hunting for a dtype setting InternVL quietly ignores.
The output is a single model handle of the custom SENSENOVA_SI_MODEL type. It won't display anywhere meaningful and you can't save it - it wires straight into a SenseNova SI Generate node, and there's no point loading it without one.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/GACLove/ComfyUI-SenseNova-SI.git
cd ComfyUI-SenseNova-SI
git clone https://github.com/OpenSenseNova/SenseNova-SI.git deps/SenseNova-SI
pip install -r requirements.txt
Then restart ComfyUI. The requirements.txt pulls the heavy stack - transformers, accelerate, timm, einops, opencv-python - and the upstream repo has model-specific dependencies on top of that, so follow its README for whichever model you picked. You also want Python 3.10+ and a GPU that can hold an 8B VLM; on a shared card that's a real budget question. ComfyUI Manager may install the pack by URL if you prefer, but with a second repo to wrangle, the manual clone above is honestly the cleaner path.
Where people get burned
The #1 failure is the missing second clone - the pack ships an empty deps/ folder, and skipping the upstream step produces that path-listing error. The #2 is the model download: the default id means a multi-gigabyte HF fetch on first run, and an 8B VLM will happily eat your VRAM while it sits loaded. And the example workflow references a file called Q2_1.png that doesn't exist in your install - reconnect LoadImage to your own image or the graph fails at the start.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| model_path | STRING | sensenova/SenseNova-SI-1.1-Qwen3-VL-8B | — |
| model_type | COMBO | auto | 3 options: auto, qwen, internvl |
| repo_path | STRING | — | |
| dtype | COMBO | auto | 4 options: auto, bfloat16, float16, float32 |
| device_map | STRING | auto | — |
| generation_config_path | STRING | — | |
| force_reload | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | SENSENOVA_SI_MODEL | — |