MACOS · MPS · ORIGINAL FORGE

Prove MPS before you install Forge on a Mac

Original Forge contains a macOS launcher and MPS branches, but it does not publish a current Mac support matrix. Verify Apple Silicon, the operating system, native Python and a real MPS tensor first; then test Forge in a disposable clone with a conservative model.

01 · Route gate

Choose the machine you actually have

A tutorial written for an M1 in 2024 is not evidence for every Mac, macOS release, PyTorch wheel or Forge model in 2026.

Mac environment
COMMUNITY-REPORTED

Run the MPS gate, then test a clean clone

This is the only route we take through the complete procedure. Current upstream PyTorch documentation requires Apple Silicon and macOS 14 or later, but that proves MPS availability—not original Forge compatibility.

Eligible for the reversible lab
READINESS RECEIPT

Record eight facts before cloning

0 / 8 checks recorded
02 · Compatibility chain

Four layers must agree

Forge cannot repair an unavailable MPS backend, and a working MPS tensor cannot make every model dtype compatible.

01MacApple Silicon · arm64 shell
02macOS + MetalCurrent MPS requirement met
03PyTorchis_built + is_available + tensor
04Original ForgeModel, dtype and commit tested
VERIFIED

The code detects MPS

backend/memory_management.py selects torch.device("mps") when PyTorch reports MPS available and assigns shared-memory state.

STALE SNAPSHOT

The shell pins a dated stack

At dfdcbab6, Apple Silicon receives PyTorch 2.3.1 / torchvision 0.18.1 plus MPS fallback and conservative VAE flags.

UNKNOWN

Support remains undefined

Issue #2177 asked the project to clarify Mac support. It remains open without an assignee, milestone or maintainer answer.

COMMUNITY-REPORTED

Output failures are real intents

Open reports document black images, Float8 and BFloat16 failures. They are dated cases, not proof that all Macs fail.

Do not confuse fallback with acceleration.

PYTORCH_ENABLE_MPS_FALLBACK=1 lets unsupported MPS operations fall back to CPU when PyTorch implements that path. It can turn a hard failure into a very slow generation; it does not prove that the workflow stayed on the GPU.

03 · Reversible lab

Build a clean Apple Silicon baseline

This procedure follows current host requirements and the inspected Forge launcher. It was source-audited on Linux; no Mac hardware run is claimed.

Inspect Forge macOS defaults ↗
  1. HOST

    Confirm a native Apple Silicon Terminal

    Both commands must describe the same host you intend to test. If uname -m returns x86_64, stop and leave Rosetta before installing packages.

    uname -m && sw_vers -productVersion

    Expected route: arm64 and macOS 14 or later.

  2. TOOLS

    Install or verify Xcode Command Line Tools

    The current Apple and Homebrew instructions require the Command Line Tools. The install command opens Apple’s system dialog.

    xcode-select -p || xcode-select --install

    Expected when installed: a path such as /Library/Developer/CommandLineTools.

  3. PYTHON

    Use native Homebrew Python 3.10 and Git

    Install Homebrew only from its official instructions. Then install the versioned Python used by Forge and Git. On Apple Silicon, brew --prefix should normally return /opt/homebrew.

    brew install [email protected] git
    brew --prefix && /opt/homebrew/bin/python3.10 --version && git --version

    Homebrew marks Python 3.10 for deprecation on 15 October 2026. That future package event is a refresh trigger for this guide.

  4. SOURCE

    Clone only the original repository into a disposable folder

    The destination name makes the rollback target unambiguous and avoids colliding with an existing Forge or A1111 checkout.

    git clone https://github.com/lllyasviel/stable-diffusion-webui-forge.git forge-mac-lab
    cd forge-mac-lab && git rev-parse --short HEAD

    Record the returned commit. This page inspected dfdcbab6; a different result means a different code snapshot.

  5. OVERRIDE

    Pin the native Python path—nothing else

    Create webui-user.sh with one override. The macOS defaults load first and already set the project’s MPS fallback, Torch command and conservative arguments.

    printf '%s\n' 'python_cmd="/opt/homebrew/bin/python3.10"' > webui-user.sh
    sed -n '1,40p' webui-user.sh

    Do not add --xformers, CUDA stream/malloc flags, --all-in-fp16, or nightly Torch to the first run.

  6. INSTALL

    Run the Unix launcher and keep the full console

    The first run creates venv, installs dependencies and starts localhost. Use the repository’s ./webui.sh, not Windows update.bat or run.bat.

    ./webui.sh

    A started UI should print Device: mps, Set vram state to: SHARED and a local URL. Localhost alone proves only that the server started.

  7. FREEZE

    Save the environment before changing it

    Stop Forge with Control-C, then capture versions. This receipt makes a later model or extension failure diagnosable.

    ./venv/bin/python -c "import platform,torch; print(platform.platform()); print('torch',torch.__version__); print('mps-built',torch.backends.mps.is_built()); print('mps-available',torch.backends.mps.is_available())"
    git rev-parse HEAD && ./venv/bin/python -m pip freeze

    Save the output as text. Do not paste only the last line of a traceback.

04 · MPS proof

Separate the backend test from Forge

If this tensor test fails, stop changing Forge. The failure belongs to the macOS/PyTorch layer.

MPS TENSOR PROBE
./venv/bin/python -c "import torch; print('built',torch.backends.mps.is_built()); print('available',torch.backends.mps.is_available()); print(torch.ones(1,device='mps'))"
PASSbuilt True
available True
tensor([1.], device='mps:0')

Continue to the Forge baseline.

STOPbuilt False
or available False
or tensor error

Diagnose Python, wheel, macOS and architecture first.

IS_BUILT = FALSE

The installed PyTorch wheel lacks MPS support

Confirm the Python executable and architecture inside venv. Installing random global packages cannot repair a different virtual environment. Original Forge is not yet the failing layer.

BUILT = TRUE · AVAILABLE = FALSE

The wheel knows MPS, but this host cannot expose it

Record sw_vers, uname -m and the exact tensor error. Current upstream documentation names macOS 14+ and Apple Silicon.

05 · First generation

Use a model that tests one thing

The first goal is not maximum quality or FLUX. It is a repeatable image that proves original Forge can use this MPS environment.

COMMUNITY-REPORTED

Conservative Mac baseline

Repository
Clean original Forge clone
Backend
MPS tensor probe passed
Model
Known FP16 SD 1.5 checkpoint
Preset
SD 1.5
Canvas
512 × 512
Batch
1 image
Extras
No LoRA, extensions, ControlNet, hires or upscale
Record
Prompt, seed, sampler, steps, commit and console
  1. 01

    Place one checkpoint

    Put one compatible checkpoint in models/Stable-diffusion/, then follow the model file location guide. Forge does not bundle a generation model.

  2. 02

    Match the model-family preset

    Select SD 1.5 for an SD 1.5 checkpoint. A preset mismatch can produce broken or black output that looks like an MPS failure.

  3. 03

    Generate the smallest useful baseline

    Use 512×512, batch size 1, no LoRA or extension, and a fixed seed. Save the image and full infotext whether the result succeeds or fails.

  4. 04

    Add one variable at a time

    Only after the baseline repeats should you test SDXL, higher resolution, LoRA or an extension. FLUX, FP8/BF16, GGUF and nightly Torch are separate experiments.

06 · Failure map

Stop at the first failed layer

A workaround is useful only when it targets the layer that actually failed.

HOST

uname -m is x86_64

Leave the Rosetta shell and use native arm64 Homebrew/Python. Do not mix /usr/local and /opt/homebrew packages.

TOOLS

brew or python3.10 is missing

Repair the official Homebrew PATH and verify the executable directly. Do not start Forge with an unknown python3.

MPS

The standalone tensor fails

Record is_built, is_available, macOS, architecture and Torch. Forge is not yet the failing layer.

STARTUP

No local URL appears

Capture the first traceback and package install error. Re-running repeatedly can bury the original failure under secondary messages.

DTYPE

Float8 or BFloat16 is rejected

Return to the FP16 SD 1.5 baseline. The model stack is asking MPS for a dtype or operation this environment cannot execute.

OUTPUT

Localhost works, but the image is black

Localhost proves only the web server. Reset preset, model, VAE, sampler and extras; preserve the failed image, infotext and console warning.

MEMORY

MPS backend out of memory

Close other apps, set batch 1, reduce dimensions, remove second-pass tools and test a smaller family. Unified memory is shared system memory.

PERFORMANCE

Generation runs on CPU or is extremely slow

Confirm Device: mps, then test without LoRAs or extensions. MPS fallback can make unsupported operators execute on CPU.

07 · Boundaries

Know when this guide no longer applies

Switching projects is a valid technical decision when the required workflow is not supported by original Forge on MPS.

VERIFIED

Original Forge

Repository owner lllyasviel. The code snapshot has macOS defaults and MPS branches. This page does not mirror binaries or apply patches.

Open original repository ↗
COMMUNITY-REPORTED

Nightly Torch and monkey patches

These can change behavior, but they are a new environment. Test them in a second clone and report the full diff; do not call the result a verified default install.

UNKNOWN

FLUX and low-bit formats on MPS

Conflicting community outcomes and open dtype issues prevent a universal Forge-on-Mac recipe. FP16 success does not validate FP8, BF16, NF4 or GGUF.

ASSUMPTION

A Mac-native alternative may fit better

If your goal is reliable local generation rather than original Forge specifically, evaluate a separately maintained Mac-native application. That is product-fit advice, not an SEO or Forge-support claim.

08 · Questions

Mac installation FAQ

These answers consolidate installation, MPS, model precision, black-output, memory and rollback intents without creating duplicate pages.

Does original Forge officially support macOS?

The repository contains macOS and MPS code, but it does not publish a current Mac support matrix or a tested parity promise. Issue #2177 remains an unanswered request for clarification. We therefore label this route community-reported.

Can I use the Windows one-click Forge archive on a Mac?

No. The published one-click archives contain Windows batch files and CUDA/PyTorch environments. On macOS, use a source clone only after the MPS preflight.

Do I need an M1, M2, M3, M4 or newer Apple chip?

For the route on this page, yes: the current upstream PyTorch MPS instructions require Apple Silicon. A chip name alone still does not guarantee that a particular Forge model, dtype or extension will work.

Does Forge use CUDA on Apple Silicon?

No. Apple GPU acceleration in PyTorch uses the MPS backend. A non-fatal console warning mentioning CUDA can come from a CUDA-only monitor; the decisive checks are Device: mps and a successful MPS tensor probe.

Which Python version should I use for Forge on Mac?

The inspected Forge launcher is built around Python 3.10 and its macOS shell defaults pin PyTorch 2.3.1 on Apple Silicon. This page uses Homebrew [email protected] in a dedicated Forge virtual environment.

Why does brew say command not found?

Homebrew may be installed but absent from the current shell PATH. On Apple Silicon, verify /opt/homebrew/bin/brew and follow the shellenv instructions printed by the official installer.

Why does Forge say Torch is not compiled with CUDA enabled?

First confirm you launched ./webui.sh from the original Forge clone. Its macOS defaults include --skip-torch-cuda-test. If the process continues and Device: mps appears, a CUDA memory-monitor warning is not the same as a fatal startup exception.

How do I check whether PyTorch can use my Mac GPU?

Inside the Forge virtual environment, check torch.backends.mps.is_built(), torch.backends.mps.is_available(), and create a tensor on device="mps". All three checks must agree before you diagnose Forge.

Can I install the newest PyTorch nightly to fix Forge?

That creates a new, unverified environment. A community report used a nightly build on an M2 Ultra, but the inspected Forge script pins 2.3.1. Preserve the working virtual environment and test a nightly only in a separate clone.

Why do I get BFloat16 is not supported on MPS?

That is a dtype/backend mismatch, not a missing Forge flag. The open Forge report #2399 shows the failure while loading a GGUF FLUX setup. Return to the FP16 SD 1.5 baseline before testing newer model formats.

Why does Forge fail on Float8_e4m3fn on Mac?

The model or text encoder is asking MPS to use an unsupported Float8 path. Do not patch the original checkout or hide the error. Record the exact model files and prove a plain FP16 baseline first.

Why does Forge generate black images on a Mac?

Open original-repository reports show black output on multiple Apple Silicon machines and commits. Reset to a clean clone, correct model-family preset, one FP16 checkpoint, no LoRA, no extensions, 512×512 and batch size 1; then capture the first warning and infotext.

How do I fix MPS backend out of memory?

Close memory-heavy apps, use batch size 1, reduce dimensions, remove hires/upscale/ControlNet, and test a smaller model family. Unified memory is shared with macOS and other apps; installed RAM is not wholly available to Forge.

Why is Forge extremely slow on M1?

First prove the console says Device: mps. Then remove LoRAs and extensions and test a small baseline. PYTORCH_ENABLE_MPS_FALLBACK=1 can move unsupported operations to CPU, so a working generation can still be slow. Community timing cannot predict your Mac.

Should I add --xformers or CUDA flags on Mac?

No. xformers and CUDA tuning flags target different backends. Start with the Forge macOS defaults and change one documented variable only after a reproducible baseline.

Can I run FLUX in Forge on a Mac?

Community members have reported both success on a high-memory M2 Ultra and failures involving FP8, BF16 and GGUF. Original Forge does not publish a validated Mac FLUX recipe. This guide deliberately stops at an FP16 SD 1.5 baseline.

Can Forge share models with AUTOMATIC1111 on macOS?

The inspected launcher supports --forge-ref-a1111-home, and dated community reports use it. First make both installations work independently and never share their virtual environments.

How do I undo the Mac test?

Stop Forge and move only the dedicated forge-mac-lab folder to Trash. If you created a separate virtual environment inside that folder, it goes with the clone. Do not delete Homebrew, Python, Git or another UI installation as part of this rollback.

09 · Evidence ledger

What this page can prove

Product claims come from the original repository, Apple, PyTorch, Homebrew and Git. Tutorials and community reports contribute procedures, vocabulary and failure intents only.

Primary and direct sources

18 SOURCES
Original Forge repositoryRepository identity and README boundary.Inspected commit dfdcbab6Frozen code snapshot used for every Forge code claim.Forge macOS environment defaultsApple Silicon/Intel Torch pins, macOS arguments and MPS fallback.Forge Unix launcherDarwin detection, user override order, clone and virtual-environment behavior.Forge launch environmentPyTorch 2.3.1 pin and CUDA-test behavior.Forge memory managementMPS detection, shared-memory state and MPS cache handling.Forge mac_specific.pyMost inherited workaround code is commented in the inspected snapshot.Mac support clarification issue #2177Open request with no published support answer.macOS black-image issue #978Open, dated sampler/output report on two Apple Silicon Macs.macOS BF16 issue #2399Open Intel/AMD Mac failure with complete Forge log.Running Forge on Mac discussion #2105Mixed M2 Ultra results and unverified nightly workaround.Running on M1 discussion #270Dated M1 installation, performance and shared-model reports.Mac M3 black-image discussion #1438Unanswered reproducible-output intent.Apple: PyTorch acceleration on MacCurrent Apple Silicon, macOS, Python and MPS verification requirements.PyTorch MPS backend notesAuthoritative is_built/is_available distinction.Homebrew installation documentationSupported prefixes, CLT and shell PATH setup.Homebrew Python 3.10 formulaCurrent formula command, version and deprecation date.Git installation on macOSCommand Line Tools and Homebrew Git routes.

Sources selected from the project research catalog

8 SOURCES
Author: Forge Field Guide teamReviewer: evidence reviewCode: dfdcbab6 · 26 Jun 2025Fact-check: 29 Aug 2026Runtime: no Mac/MPS generation runRefresh: Forge Mac code, PyTorch MPS requirement, Homebrew Python 3.10 status, or issue resolution changes