ComfyUI custom nodes for loading weights from CNCF ModelPack OCI artifacts. The nodes use modelpack-client to pull and validate an artifact, then load the selected weight file with ComfyUI's native loaders. They can also select models already installed in ComfyUI.
-
Place this repository at
ComfyUI/custom_nodes/comfyui-modelpack. -
Install the dependency in the Python environment used by ComfyUI:
python -m pip install -r ComfyUI/custom_nodes/comfyui-modelpack/requirements.txt
-
Restart ComfyUI. The nodes appear under ModelPack and ModelPack/loaders.
Python 3.10 or later is required. Pulling an artifact requires access to its OCI registry. Credentials saved by docker login in ~/.docker/config.json are used.
Enter an OCI artifact reference in reference, for example registry.example.com/models/my-checkpoint:v1. If the artifact contains exactly one supported weight file, leave file blank. If it contains several, set file to the path of the desired file inside the artifact, such as weights/clip_l.safetensors. Files with the extensions ComfyUI accepts for models are used: .safetensors, .sft, .ckpt, .pt, .pt2, .pth, .bin, and .pkl.
To use an existing ComfyUI model, leave reference blank and set file to a model filename from the corresponding ComfyUI model folder. At least one of these fields must be set.
| Node | Result | Additional inputs |
|---|---|---|
| ModelPack Download / Select File | Absolute model path as a STRING |
model_type selects the model folder |
| ModelPack Checkpoint | MODEL, CLIP, VAE |
— |
| ModelPack Diffusion Model | MODEL |
weight_dtype |
| ModelPack CLIP | CLIP |
type selects the CLIP architecture; device can load it on the CPU |
| ModelPack VAE | VAE |
— |
| ModelPack LoRA | Updated MODEL, CLIP |
model, clip, strength_model, strength_clip |
For example, add ModelPack Checkpoint, set reference to the artifact reference, and connect its MODEL, CLIP, and VAE outputs as you would with a native checkpoint loader. For a LoRA, connect existing MODEL and CLIP outputs to ModelPack LoRA, then set its reference and strengths.
Downloaded files are stored under ComfyUI/models/modelpack/<model folder>/<reference hash>/. A digest reference such as registry.example.com/models/my-checkpoint@sha256:… is downloaded once and then reused without contacting the registry. A tag reference is pulled again the first time it is used after ComfyUI starts, so a tag that has moved is picked up; if the registry cannot be reached, the copy downloaded earlier is used. Use a digest reference for a reproducible workflow and to avoid downloading again after a restart. If a requested file is missing or the artifact has multiple weight files without a file selection, the node reports the available weight paths.
The tests do not need ComfyUI:
uv run python -m unittest discover -s testsApache License 2.0. See LICENSE.