Mac
Mac mini as a local AI server: which chip and how much RAM
Size a Mac mini for local LLMs (Ollama, LM Studio, MLX): M4, M4 Pro, or the new M6 / M5 Pro, 16 to 64GB, the macOS GPU memory ceiling, and the always-on settings.
Problem summary
I'm here because I want a Mac mini that sits on a shelf and answers my phone, my laptop, and my home automations with a local model, no per-token bills and no cloud. The buying question is the only one that matters: which chip and how much memory, because on Apple silicon the model must fit in unified memory or it does not run, and memory bandwidth, not core count, decides how fast tokens come out. Rule of thumb: a 4-bit model needs roughly 0.55 to 0.6 GB per billion parameters (a 35B model is about 20 GB), macOS only lets the GPU pin about two thirds to three quarters of RAM by default, and you need 6 to 8 GB left over for the OS and context. That makes 16 GB a 7 to 9B box, 24 GB a 14B box, 48 GB the sweet spot for 30-class models, and 64 GB the minimum for a 70B model at 4-bit. Apple's new Mac mini (announced 25 August 2026, ships 22 September with macOS 27) changes the speed but not the arithmetic: M6 is 16 to 32 GB at 170 GB/s, M5 Pro is up to 64 GB at 307 GB/s. Then make it a server: never sleep, restart after power loss, unlock FileVault over SSH, run the model server under launchd, and reach it over Tailscale rather than an open port.
Compute the model's memory need: 4-bit file size + 6 to 8 GB OS + context.
sysctl iogpu.wired_limit_mb hw.memsize
The total sits comfortably under the Mac's GPU ceiling (about 65 to 78 percent of RAM).
Stop before buying a base-chip 16 GB mini for a 30B model.
Layer path
Step-by-step runbook
Start here. Do each check in order, compare it to the expected result, and stop when the evidence explains the failure or the safe stop point applies.
Size the model
Check: Pick the largest model you will run; total its 4-bit size + 6 to 8 GB + context.
Expected result: A memory target in GB.
If not: If undecided, size for the next class up.
Pick the configuration
Check: 16 GB: 7 to 9B. 24 GB: 14B. 48 GB: 30-class and 35B MoE. 64 GB: 70B at 4-bit. Pro chips for 48 and 64 GB; the new M5 Pro adds bandwidth and Neural Accelerators.
Expected result: A specific Mac mini configuration.
If not: Above 64 GB, buy a Mac Studio instead.
Safe stop: Stop before buying a base-chip 16 GB mini for a 30B model.
Install and measure
Check: Install Ollama or LM Studio (MLX engine), load the model, check `the "See where a running model lives" command below` or the runtime badge, note tokens per second and memory pressure.
Expected result: Model fully on the GPU, green memory pressure.
If not: Smaller quantization or context; raise the wired limit only for a near miss.
Make it a service
Check: Run the server under launchd (`the "Run the model server as a launchd service" command below`, or a LaunchDaemon); set the host binding for LAN access.
Expected result: The API is up after a reboot with no login.
If not: Convert Terminal or login-item starts to launchd.
Make it survive power loss
Check: Never-sleep, `pmset autorestart 1`, Remote Login on for FileVault SSH unlock, then pull the plug and watch it recover.
Expected result: It boots, unlocks, and answers on its own.
If not: Follow the auto power-on and FileVault SSH pages.
Connect clients privately
Check: Tailscale on the mini and your devices; point apps and Home Assistant at the tailnet address; no router forwards.
Expected result: Chat from anywhere with the API reachable only by your devices.
If not: If a forward exists, remove it now.
Decision tree
If: You want a capable assistant for chat, summaries and small coding help, budget-first.
Then: 7 to 9B models at 4-bit are the target; 16 GB is enough, 24 GB is comfortable.
Action: Mac mini M6 16 GB (or 24 GB M4 Pro if discounted); Ollama or LM Studio with MLX.
If: You want 30-class or 35B mixture-of-experts models with headroom for context and other apps.
Then: Around 20 GB for the model plus OS plus context lands at 48 GB.
Action: Mac mini with M5 Pro (or M4 Pro) at 48 GB.
If: You want a 70B model at 4-bit.
Then: About 40 GB of weights plus OS plus context needs 64 GB, and it will still be bandwidth-limited.
Action: Mac mini M5 Pro 64 GB, and accept modest tokens per second; above that, a Mac Studio.
If: A model refuses to load although Activity Monitor shows free memory.
Then: The GPU wired-memory ceiling, not free RAM, is the limit.
Action: Drop a quantization level or shorten context first; for a near miss, raise `iogpu.wired_limit_mb` for the session.
Safe stop: Stop before setting the limit near 100 percent of RAM; leave 4 to 6 GB for macOS or the machine becomes unstable.
If: The mini stays dark or unreachable after a power cut.
Then: Sleep, missing auto power-on, or FileVault waiting at the pre-boot screen.
Action: pmset sleep 0 and autorestart 1; Remote Login on for the macOS 26 SSH unlock; server under launchd.
Evidence table
| Symptom | Evidence to collect | Likely layer | Next action |
|---|---|---|---|
| Model fails to load; free memory looks sufficient. | `sysctl iogpu.wired_limit_mb hw.memsize` and the engine's 'recommendedMaxWorkingSetSize' log line. | GPU wired-memory ceiling. | Smaller quant/context, or raise the limit per session. |
| Tokens crawl at a few per second. | `ollama ps` shows a CPU/GPU split, or LM Studio shows the GGUF runtime instead of MLX. | Model not fully resident on the GPU, or wrong engine. | Fit the model entirely in memory; reload under MLX. |
| Long pause before the first token, then normal speed. | Prompt length and chip class. | Compute-bound prompt processing on a base chip. | Shorter prompts, or a Pro chip with Neural Accelerators. |
| API works at home, unreachable away; or reachable by strangers. | Server host binding and router port-forward rules. | Network exposure, not the model. | Bind to LAN/tailnet, remove forwards, use Tailscale. |
| Mini shows the FileVault password screen after a power cut. | Remote Login state; macOS version. | FileVault pre-boot with no SSH unlock configured. | Enable Remote Login (macOS 26+) and unlock over SSH; see the dedicated page. |
Commands and settings paths
Read the GPU memory ceiling and installed RAM
sysctl iogpu.wired_limit_mb hw.memsize
Where: Terminal on the Mac mini.
Expected: wired_limit_mb 0 (default) and hw.memsize in bytes; plan on about 65 to 78 percent of hw.memsize for models.
Failure means: A non-zero wired_limit_mb means someone raised it; check it is not close to hw.memsize.
Safe next step: Reset with `sudo sysctl iogpu.wired_limit_mb=0` if the system feels starved.
Raise the ceiling for one session (near-miss models only)
sudo sysctl iogpu.wired_limit_mb=<MB, leaving at least 4 to 6 GB for macOS>
Where: Terminal on the Mac mini, before starting the model server.
Expected: The engine's next load reports a larger recommended working set and the model fits.
Failure means: Yellow or red memory pressure afterwards means you took too much; lower it.
Safe next step: Prefer a smaller quantization or shorter context; reset to 0 when done.
See where a running model lives
ollama ps
Where: Terminal on the Mac mini (Ollama).
Expected: PROCESSOR shows 100% GPU.
Failure means: Any CPU percentage means the model does not fit in GPU memory and will be slow.
Safe next step: Use a smaller model or quantization, or more memory.
Run the model server as a launchd service
brew services start ollama
Where: Terminal on the Mac mini (Homebrew install).
Expected: Ollama starts at boot without a login session and restarts if it crashes.
Failure means: If it only runs while a Terminal window is open, it is not a service.
Safe next step: Check `launchctl print gui/$(id -u)/homebrew.mxcl.ollama` and the log path Homebrew reports.
Confirm the API is not exposed to the internet
lsof -iTCP:11434 -sTCP:LISTEN
Where: Terminal on the Mac mini.
Expected: Bound to 127.0.0.1 or the LAN address; no matching port-forward on the router.
Failure means: Bound to *:11434 with a router forward means it is public and unauthenticated.
Safe next step: Remove the forward; reach it over Tailscale instead.
Hardware and platform boundary
Change only when
- Your model needs more memory than the mini you own can give the GPU, and you have already tried a smaller quantization and shorter context.
- You are buying new in autumn 2026: the M6 and M5 Pro Mac mini (22 September) add bandwidth and Neural Accelerators at the same memory tiers.
- You want 70B-class models daily: 64 GB M5 Pro is the floor, a Mac Studio is the comfortable answer.
Evidence that matters
- Unified memory size: it decides what runs at all.
- Memory bandwidth (120 / 170 / 273 / 307 GB/s): it decides tokens per second.
- Pro-class GPU with Neural Accelerators if long prompts and RAG-style contexts are your workload.
- 2.5Gb or 10Gb Ethernet if the mini also serves files or Frigate; standard on the new models.
Evidence that does not matter
- CPU core count beyond the base configuration; inference is memory-bound.
- Internal SSD size beyond what your models need; models load once, and an external Thunderbolt drive can hold the library.
Avoid
- Avoid 16 GB for anything beyond 9B models; there is no upgrade path.
- Avoid leaving the wired-memory limit raised on a shared machine.
- Avoid exposing the API port to the internet; use Tailscale.
- Avoid a laptop as the always-on box; lid-close sleep and battery wear make the mini the better server.
Related tool/checklist
Use the linked tool when you need a guided plan from your exact symptoms instead of a static checklist.
NAS setup plannerRelated problems
Last reviewed
2026-09-06 · Reviewed by HomeTechOps. Written for the September 2026 Mac mini refresh (M6 and M5 Pro announced 25 August, shipping 22 September with macOS 27) and the wave of Mac-mini-as-local-AI-server discussion that followed. The page keeps Apple's own numbers (configurations, bandwidth, idle power) separate from practitioner rules (GB per billion parameters, the 65 to 78 percent GPU ceiling, Ollama's README minimums, ModelPiper's measured Metal working set on macOS 26.5), and treats iogpu.wired_limit_mb as the unsupported, per-session knob it is. The always-on half reuses the site's tested auto-power-on and FileVault-over-SSH runbooks rather than repeating them. No model is recommended by name; examples are dated and labelled as examples.
Sources/assumptions
- Apple configurations and bandwidth figures are from Apple's Mac mini (2024) tech specs and Apple's 25 August 2026 newsroom announcement of the Mac mini with M6 and M5 Pro (availability 22 September 2026). Idle power (4 W M4, 5 W M4 Pro) is from Apple's Mac mini power consumption page; new-model power figures were not published at the time of writing.
- The 0.55 to 0.6 GB per billion parameters rule for 4-bit models, the 6 to 8 GB macOS overhead, and the 65 to 78 percent default GPU wired-memory ceiling are practitioner measurements (Ollama's README minimums of 8 GB for 7B, 16 GB for 13B, 32 GB for 33B; ModelPiper's measured Metal working-set on macOS 26.5) rather than Apple statements; verify on your own machine with `sysctl iogpu.wired_limit_mb hw.memsize`.
- Model names and sizes (a 4-bit 35B mixture-of-experts at about 20 GB, a 4B-class model at about 2.4 GB) are examples from a September 2026 published setup, not recommendations; models change monthly.
- Raising `iogpu.wired_limit_mb` is an undocumented, unsupported Apple setting. It is reversible (set 0 or reboot) but Apple may change its behaviour.
Source-backed checks
HomeTechOps turns official docs and conservative safety rules into a shorter runbook. These links are the source trail for the page direction.