VNCSS Config
Make UniCanvas use your checkpoints, LoRAs and reference images
- model
- clip
- vae
- audio_vae
- reference_image_1
- reference_image_2
- reference_image_3
- reference_image_4
- reference_image_5
- reference_image_6
- reference_image_7
- reference_image_8
- reference_image_9
- reference_image_10
- config
VNCCS UniCanvas is the infinite-canvas editor that lives inside a ComfyUI node - paint a mask, generate in place, keep everything as layers. The annoying part of canvas-in-a-node tools is the model picker: you've already got your Qwen-Edit 2511 checkpoint and a LoRA stack wired up out in the graph, and now the canvas wants you to re-select all of it in its own dropdown.
VNCSS Config is the escape hatch. It's a plumbing node: feed it your MODEL, CLIP and VAE, attach reference images, and it hands UniCanvas a single config object to use instead of its built-in loaders.
What it changes in practice
Wire the config output into the config input on VNCCS UniCanvas and the roles flip. The canvas stops using its own model dropdown for that draw and takes the model, LoRA and reference images from your config; the duplicate controls in the UniCanvas sidebar go grey while it's linked, and Mode plus the sampling settings stay editable. Unlink it and your embedded settings come back exactly as they were - nothing was overwritten.
That's the whole appeal: you reuse a graph you've already tuned (a GGUF unet, an fp8 checkpoint, a LoRA at clip strength 0.7) instead of maintaining a second copy of your setup inside the canvas widget.
How it actually works
The node itself is dumb on purpose: it reads node_state, applies your LoRA stack, and packs the result into one VNCSS_CONFIG dict on the single config socket.
The interesting part is what UniCanvas does with it. A linked config hands over live tensors that only exist while the graph executes, so the canvas used to queue your whole prompt for every brush stroke. Now it traces the config's inputs backwards through the graph - checkpoint, diffusion-model and GGUF loaders, CLIP loaders, LoRA loaders, reroutes - finds the underlying files, and loads those same files itself. Canvas draws run through UniCanvas's own pipeline; the graph only fires when you queue a full prompt.
Two chains fall back to queueing everything: one containing a node UniCanvas can't reproduce (something custom patching your model), and reference images that come from a generated image rather than a Load Image node. If your reference is the output of another sampler upstream, expect the slow path.
The inputs that matter
model, clip and vae are marked optional in the node schema, but in practice all three are mandatory - the node raises at execution time if any is empty ([VNCCS Config] Model input is not connected. and friends). They're optional in the schema only so ComfyUI doesn't red-outline the node while you're wiring, which means a forgotten input shows up as a runtime error rather than a validator warning. Connect first, queue second.
audio_vae is there for the families that decode audio too; for plain image editing you'll leave it empty.
The ten reference_image_1 … reference_image_10 sockets are the fiddly bit, and it's deliberate. They exist only when Edit model is switched on, and they appear one at a time: connect reference_image_1 and slot 2 appears, then slot 3, up to 10 - the limit comes from the MiniMax H3 and Qwen-Image-2.1 edit modes. Numbering is offset from what you write in the prompt: the canvas counts its working area as slot 1, so reference_image_1 is the one the prompt calls Picture 2 (or <image2> on Qwen-Image-2.1). An edit-mode draw with nothing in reference_image_1 fails outright, by design.
node_state is the widget's own JSON and you shouldn't hand-edit it. It carries the LoRA stack (name, strength, clip strength, enabled) and the edit_model flag. Duplicate entries for the same file are dropped after the first, and disabled or zero-strength rows are skipped.
Output: one socket, config, type VNCSS_CONFIG → UniCanvas's config input. That's the only consumer worth connecting.
Installation
ComfyUI Manager: Custom Nodes Manager → search VNCCS Utils → Install → restart. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/AHEKOT/ComfyUI_VNCCS_Utils.git
cd ComfyUI_VNCCS_Utils
pip install -r requirements.txt
Restart ComfyUI afterwards - the config panel is a JavaScript widget and won't show up on a live reload. The pack's requirements are heavier than this node needs (opencv-python, av, kornia, timm, pytorch-lightning, transformers); that's the price of 3D Factory and Pose Studio sharing the pack. No model downloads are needed for VNCSS Config itself.
Where people get burned
The LoRA picker lists files from your ComfyUI loras folder, and names resolve against that folder rather than the process working directory. A LoRA that's listed but has since been moved fails at queue time with [VNCCS Config] LoRA not found: <name>.
The other classic: wondering why nothing changes. Linked, the config wins - the canvas's own model and LoRA controls are disabled, and the reference slots won't appear until Edit model is on. Flip the switch first, then wire your references.
One thing to know before planning a workflow around it: a config-linked draw bypasses UniCanvas's model cache by design, so two draws powered by different graphs never quietly share the first graph's model. Correctness over speed - but the first draw after a change pays full load time.
AHEKOT's track record is good here. The same author has been shipping VNCCS since 2025 - the visual-novel sprite suite that hit 3.0 in June 2026 - and the reception has been consistently warm for how much workflow it hands you for free.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| node_state | STRING | {} | — |
| modelopt | MODEL | — | |
| clipopt | CLIP | — | |
| vaeopt | VAE | — | |
| audio_vaeopt | VAE | — | |
| reference_image_1opt | IMAGE | — | |
| reference_image_2opt | IMAGE | — | |
| reference_image_3opt | IMAGE | — | |
| reference_image_4opt | IMAGE | — | |
| reference_image_5opt | IMAGE | — | |
| reference_image_6opt | IMAGE | — | |
| reference_image_7opt | IMAGE | — | |
| reference_image_8opt | IMAGE | — | |
| reference_image_9opt | IMAGE | — | |
| reference_image_10opt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| config | VNCSS_CONFIG | — |