Rewrite the README as a lean landing page and move depth into a docs/ folder. Correct the supported-model story and several stale facts, and answer the recurring questions from issue #21. - Convert-only is the supported path: suite-converted .mlpackage is the only supported input; drop coreml-community download guidance. - Remove all .mlmodelc / Xcode references — compilation was dropped and the loader handles .mlpackage only. - Fix compute-unit name (CPU_AND_NE, not CPU_AND_ANE) and the loader input name (coreml_name). - Document CoreMLSamplerAdvanced (previously undocumented). - Add docs/: hardware, nodes, conversion, workflows, faq, troubleshooting, limitations (with a support matrix). - Note conversion now lives in the coreml-diffusion package. - Remove dev scaffolding specs; ignore *.log, .DS_Store, .claude/.
6.8 KiB
Node Reference
All nodes live in the Core ML Suite category. Right-click the canvas → Add Node → Core ML Suite, or double-click and search.
| Display name | Class | Purpose |
|---|---|---|
| Load Core ML UNet | CoreMLUNetLoader |
Load a converted .mlpackage |
| Core ML Sampler | CoreMLSampler |
Sample (KSampler-style) |
| Core ML Sampler (Advanced) | CoreMLSamplerAdvanced |
Sample (KSamplerAdvanced-style) |
| Core ML Adapter (Experimental) | CoreMLModelAdapter |
Wrap as a standard MODEL |
| Load LoRA to use with Core ML | Core ML LoRA Loader |
Bake LoRA(s) at conversion |
| Convert Checkpoint to Core ML | Core ML Converter |
Convert a checkpoint |
| Convert LCM to Core ML | Core ML LCM Converter |
Convert LCM Dreamshaper v7 |
Load Core ML UNet (CoreMLUNetLoader)
Loads a converted .mlpackage from models/unet and outputs a coreml_model
for the samplers. Only .mlpackage files are listed — this suite no longer uses
.mlmodelc.
- Inputs
coreml_name— the.mlpackageto load frommodels/unet.compute_unit— hardware to run on:CPU_AND_NE(default),CPU_AND_GPU,CPU_ONLY,ALL. See hardware.
- Output
coreml_model— for the Core ML Sampler or Adapter.
Core ML Sampler (CoreMLSampler)
Generates a latent from a Core ML model. Behaves like the standard KSampler and
outputs a LATENT you can decode or feed downstream.
- Inputs
coreml_model— output of the loader or a converter.latent_image(optional) — must match the model's input size. If omitted, a suitable empty latent is created. Provide one for img2img.negative(optional) — required for normal models; optional for LCM.- Remaining inputs (
seed,steps,cfg,sampler_name,scheduler,positive,denoise) match the KSampler.
- Output
LATENT— decode with a VAE Decode, or use downstream.
Core ML Sampler (Advanced) (CoreMLSamplerAdvanced)
The KSamplerAdvanced counterpart of the Core ML Sampler — same Core ML input, plus the advanced sampling controls. Use it for partial denoising, fixed noise, and multi-stage (e.g. SDXL base → refiner) workflows.
- Inputs
coreml_model— output of the loader or a converter.add_noise,noise_seed,start_at_step,end_at_step,return_with_leftover_noise— as in KSamplerAdvanced.steps,cfg,sampler_name,scheduler,positive— as usual.latent_image(optional),negative(optional, required for non-LCM).
- Output
LATENT.
Core ML Adapter (Experimental) (CoreMLModelAdapter)
Wraps a Core ML model so it presents as a standard ComfyUI MODEL, letting you
feed it to the normal KSampler and many other nodes (e.g. ModelSamplingDiscrete
for LCM LoRAs).
- Input
coreml_model.
- Output
MODEL— a Core ML model wrapped as a ComfyUI model.
Note
Experimental. The wrapper presents a
MODELinterface but cannot fully emulate one — model merges, IPAdapter, and similar advanced uses generally won't work, and the model's fixed input shapes are not validated, so mismatched inputs error at runtime. The native Core ML Sampler is faster when you don't need theMODELtype. See the FAQ and limitations.
Load LoRA to use with Core ML (Core ML LoRA Loader)
Collects LoRA name + strength_model to bake into the model at conversion, and
applies the LoRA to CLIP (which is not part of the Core ML path). Chain multiple
loaders for multiple LoRAs.
Because a converted model is immutable, the baked weights and strength_model
cannot be changed afterward — changing them means re-converting. strength_clip
only affects CLIP and can be changed freely. After conversion, when loading with
CoreMLUNetLoader, apply the same LoRAs to CLIP manually (see
workflows).
- Inputs
lora_name,strength_model,strength_clip.clip— fromCLIPLoader/CheckpointLoaderSimpleor another LoRA loader.lora_params(optional) — chain from another LoRA loader.
- Outputs
CLIP— with the LoRA applied.lora_params— pass to the converter or the next LoRA loader.
Note
LoRA support is experimental and inconsistent — some LoRAs convert cleanly, others produce poor results. Test per-LoRA. See troubleshooting.
Convert Checkpoint to Core ML (Core ML Converter)
Converts a SD1.5- or SDXL-based checkpoint from models/checkpoints to a Core ML
.mlpackage in models/unet. The conversion parameters are encoded in the
output name, so an already-converted model is reused instead of re-converted.
See conversion for details.
- Inputs
ckpt_name— checkpoint inmodels/checkpoints.model_version—SD15orSDXL(list is discovered fromcoreml-diffusion).height,width— target image size; any positive multiple of 8 (default 512). The model's input size is fixed at these values.batch_size— default 1; raise to convert a batch-capable model.attention_implementation—SPLIT_EINSUM/SPLIT_EINSUM_V2(ANE) orORIGINAL(GPU). See hardware.compute_unit— used only when loading the result; does not affect conversion.controlnet_support— setTrueto make the model usable with ControlNet (defaultFalse).quantize_nbits(optional) —none(default),8,6,4. See conversion → quantization.lora_params(optional) — from the LoRA loader, to bake LoRAs in.
- Output
coreml_model.
Note
Some checkpoints need a custom config
.yaml. Place it inmodels/configsnamed like the checkpoint (e.g.juggernaut.safetensors→juggernaut.yaml); it is loaded automatically during conversion.
Convert LCM to Core ML (Core ML LCM Converter)
Converts SimianLuo/LCM_Dreamshaper_v7
to Core ML in models/unet. As with the checkpoint converter, the parameters are
encoded in the name and an existing model is reused.
- Inputs
height,width— 512–768, multiple of 8 (default 512).batch_size— default 1.compute_unit— used only when loading.controlnet_support— defaultFalse.
- Output
coreml_model.
Note
When sampling an LCM model, set
sampler_nametolcmandschedulertosgm_uniform. Conversion can take a while.





