---
title: "Local coding on Apple silicon, 64–128 GB"
description: "The local coding setup we tested on an M4 Max with 128 GB: Qwen3 8B 8-bit on MLX, its measured run, and the exact commands."
canonical: https://oloop.run/local/apple-silicon-64-128
updated: 2026-10-05
evidence: /setups/evidence/apple-silicon-64-128@1.5.2.json
---

# Local coding on Apple silicon, 64–128 GB

The tested setup is mlx-dspark/qwen3-8b-8bit on mlx-dspark: 8-bit weights, a 32,768-token context, and a 9.7 GB download. On an M4 Max with 128 GB, the probe took 123.6 s cold and 125.4 s warm. The catalog lists 64–128 GB for this class, but only the 128 GB machine was tested.

## Run it

Install the CLI. Start this exact setup. Open the harness. The first pull creates a free handle.

An explicit setup runs on the OS its catalog entry declares, after that entry's RAM, VRAM, and driver checks. The no-arg bootstrap is macOS on Apple silicon only.

```sh
curl -fsSL https://oloop.run/install.sh | sh
oloop host start --setup apple-silicon-64-128@1.5.2
oloop host open
```

- [Install and requirements](/docs#install)
- [Setup compatibility](/docs#compatibility)
- [The exact plan and lock](/docs#exact-plan)
- [This setup in the catalog](/setups#apple-silicon-64-128-1.5.2)

## Why this setup on Apple silicon

mlx-dspark/qwen3-8b-8bit runs on mlx-dspark, which uses Apple's MLX framework. MLX draws on unified memory, so the model and the harness share one pool instead of a separate card. At 8-bit the weights take 9 GB of that pool, and the download is 9.7 GB.

The measured peak was 9.69 GB on a 128 GB machine. A 64 GB machine would fit the same weights, and no run confirms it: the 64 GB half of this class has no passing record.

The exact pins and hardware.

| Fact | Value |
| --- | --- |
| OS / arch | darwin / arm64 |
| Memory kind | unified |
| Host | mlx-dspark@0.17.0 |
| Harness | opencode@1.18.21 |
| Model | mlx-dspark/qwen3-8b-8bit |
| Model revision | mlx-community/Qwen3-8B-8bit@48a0b75b1ae72503e21e1558d040bc227510ff06 |
| Quantization | 8bit |
| Context window | 32,768 tokens |
| Download | 9.7 GB |

Source: /setups/evidence/apple-silicon-64-128@1.5.2.json (qualified 2026-10-05, engine 0.1.0).

## Measured results

The timer measures one probe. The prompt asks for the word OK in answer.txt, and the run is capped at 3 turns. Cold is the first run, which starts the host and loads the model; warm repeats the same probe on the same machine. It is not coding throughput and not a tokens-per-second figure.

The two runs landed 1.8 s apart. At this size the gap is noise, not a speed result.

The qualification run on the tested machine.

| Run | Cold | Warm | Peak RAM | Peak VRAM |
| --- | --- | --- | --- | --- |
| Probe | 123.6 s | 125.4 s | 9.69 GB | none (no discrete GPU) |

Measured on Apple M4 Max, 128 GB unified memory (macOS/arm64) on 2026-10-05. Source: /setups/evidence/apple-silicon-64-128@1.5.2.json.

## Tested on, listed for

Tested on: Apple M4 Max, 128 GB unified memory (macOS/arm64).

Listed for: macOS arm64, 64–128 GB unified memory.

The catalog lists a range, and the record covers one machine in it. The times and memory numbers belong to that machine.

## What the run proves

One pinned setup passed one probe on the stated hardware and date, using the checksummed bundle from the catalog.

- The run is not a security review. It checks the named file; it does not audit the model, the harness, or their permissions.
- A pass is not a quality score. It means the configured check passed, not that every answer is correct.
- The model license belongs to the model publisher. Read it before you ship the output.
- The bundle is pinned to one version. A newer catalog version is a different record.

- [What the checks mean](/learn#checks)
- [All machine setups](/setups)

## Questions

### Will this run on a 64 GB Mac?

The catalog lists this class for 64–128 GB, and the record is from a 128 GB M4 Max. We have not measured a 64 GB machine, so we do not carry its times or its memory peak across.

### Can I run a larger model on the same machine?

Not from this record. It covers one 8B model at 8-bit; a 27B model needs more memory and a longer download, and we have not qualified one for this class.

### Why 8-bit and not 4-bit?

The catalog pins one quantization per setup, so every number here describes 8-bit. A 4-bit build would use less memory, and we have not measured one for this class.

### What does the first run need?

9.7 GB for the model download, a POSIX shell, and Node.js 20 or newer. The installed components live under one root you choose.

### Do I need a handle to run it?

Not for a local manifest. A handle is needed to publish, and to pull a bundle from the Hub. The setup flow creates one on first use.

## Related

- [Local coding on one NVIDIA L4, 24 GB](/local/nvidia-l4)
- [Local coding on Linux with 8–32 GB, no GPU](/local/linux-cpu-8-32)
- [Local coding model by memory size](/guides/local-coding-model-by-memory)
- [Why own the agent runtime](/guides/why-own-the-runtime)

## Evidence

Tested on Apple M4 Max, 128 GB unified memory (macOS/arm64). Listed for macOS arm64, 64–128 GB unified memory.

- [The qualification record](/setups/evidence/apple-silicon-64-128@1.5.2.json)
- [apple-silicon-64-128@1.5.2](/setups#apple-silicon-64-128-1.5.2)

Updated 2026-10-05 · Outerloop
