ComfyUI

ComfyUI on Apple Silicon: the install that works

Quick answer

Install the ComfyUI desktop app for macOS from comfy.org, choose Metal (MPS) on first launch, and put models under ~/Library/Application Support/ComfyUI/models/. Use bf16 checkpoints — fp8 does not work on Metal. Budget roughly model size × 1.3 inside 70% of your unified memory.

ComfyUI is the strongest open image and video engine available, and on a Mac it works — but almost every tutorial assumes an NVIDIA card. The differences matter: no CUDA, no fp8, unified memory instead of VRAM, and a Metal backend that is fast in some nodes and useless in others.

This is the path that avoids the usual afternoon of Python errors.

1. Choose your install route

There are three official routes, and they are genuinely different:

RouteBest forEffort
Desktop appAlmost everyone on macOS~10 minutes, no terminal
Manual installYou need custom Python or comfy-cliAn afternoon if PyTorch fights you
Windows portableNot applicable on macOS—

Start with the desktop app. Download it from comfy.org/download, drag it into Applications, and on first launch pick Metal (MPS) as the backend. It manages its own Python environment, which removes the single largest source of failures.

One macOS caveat: the first launch may be blocked by Gatekeeper. Go to System Settings → Privacy & Security and allow it to open.

2. Know where models live

The desktop app stores models under:

~/Library/Application Support/ComfyUI/models/

The folders you will actually use:

  • checkpoints/ — full models (SDXL, FLUX)
  • loras/ — style and character adapters
  • vae/ — separate VAEs if the model needs one
  • controlnet/ — structure guidance
  • text_encoders/ — required by some FLUX workflows

A model in the wrong folder is invisible in the UI, and the error message will not tell you why. If a node cannot see a file, check the path before you check anything else.

3. The Mac-specific settings

Prefer bf16 over fp8. fp8 weights do not work on Metal — you will get either an error or a silent fallback to CPU. If a workflow ships with fp8 checkpoints, look for a bf16 conversion.

Budget memory like this: model size × 1.3 should be under roughly 70% of your unified memory. A 12B FLUX-class model wants a 32 GB machine to be pleasant; on 16 GB expect to close everything else.

Set the PyTorch memory flag if you hit out-of-memory errors on a machine that should cope:

PYTORCH_MPS_HIGH_WATERMARK_RATIO=0.0

This stops PyTorch from reserving memory it does not need. It is a workaround, not a fix — if you need it constantly, the model is simply too big.

4. Where MLX changes the picture

Apple’s MLX framework runs some diffusion models noticeably faster than the PyTorch/MPS path, with lower memory use. The catch: MLX nodes are separate from the standard ComfyUI graph.

In practice:

  • MLX custom nodes usually expose their own loader and sampler nodes.
  • They return standard IMAGE tensors, so saving, upscaling and post-processing still work downstream.
  • They often do not plug into the native KSampler or ControlNet stack.

That last point is the trade-off: MLX buys speed, and costs you some of the ecosystem’s composability. For iteration-heavy work (many prompts, one style), it is usually worth it. For complex ControlNet pipelines, stay on MPS.

5. A sanity check before you blame the Mac

If generation is far slower than expected, check in this order:

  1. Is it actually using MPS? A CPU fallback looks exactly like a “slow Mac”.
  2. Is the model fp8? Convert to bf16.
  3. Is macOS swapping? Watch memory pressure in Activity Monitor during a run.
  4. Is the resolution quietly huge? 1024×1024 is the sane default; 2048×2048 quadruples the work.

6. What to expect

Rough expectations, not benchmarks:

  • 16 GB — SDXL stills are practical; FLUX-class models are slow but possible.
  • 24–32 GB — the comfortable zone for modern image models and short video clips.
  • 64 GB+ — video workflows and large batches stop being painful.

If you are unsure where your machine lands, run the model checker with Image generation selected — it accounts for the higher memory overhead that diffusion pipelines need.

FAQ

Does ComfyUI work on Apple Silicon?

Yes. The official desktop app ships for macOS, and the underlying engine supports the Metal (MPS) backend. Performance is well below an equivalent NVIDIA card, but it is genuinely usable for stills on 16 GB and above.

Why do fp8 models fail on a Mac?

fp8 quantisation is a CUDA-oriented format; Metal does not support it. Workflows that ship with fp8 checkpoints will either error or silently fall back to CPU. Look for a bf16 conversion of the same model instead.

Should I use MLX nodes or the standard MPS workflow?

MLX is usually faster and lighter on memory, but its nodes sit outside the native sampler and ControlNet stack. Use MLX for iterating on prompts and styles; stay on MPS when you need complex ControlNet pipelines.

How much memory does ComfyUI need on a Mac?

16 GB is the practical floor for SDXL stills. Modern FLUX-class models want 24–32 GB to be comfortable, and video workflows want more. Close other apps before a long run — unified memory is shared with everything else.