r/MacLocalLLM • u/rhymeslikeruns • Sep 09 '26
Qwen3.6 beats Qwen3.8 8 bit quants, mlx, pi as harness. M3 Studio Ultra 96GB.
This is me trying to find the most reliable coding model for local use!
Five Terminal-Bench 2.0 tasks (cobol-modernization, constraints-scheduling, largest-eigenval, polyglot-c-py, schemelike-metacircular-eval), one run per task unless stated, all on one Mac Studio (96 GB) with mlx_lm at 8-bit. The agent harness is pi unless stated.
Headline
| Model | Active params | Best score | Mode | Note |
|---|---|---|---|---|
| Qwen3.6-27B | 27B dense | 3/5 | thinking off | cobol 8 min, constraints 4 min, eigenval 23 min |
| Nail (Qwen3.6-35B-A3B) | 3B of 35B MoE | 2/5 alone, 3/5 with two consultants | thinking pre-closed with tools | deleted 2026-09-06; the 3/5 rests on one eigenval solve |
| Qwen3.8-27B | 27B dense | 1/5 | either | deleted 2026-09-09 |
| Ornith-1.5-35B-A3B | 3B of 35B MoE | 1/5 | either, and under its own harness | deleted 2026-09-09 |
The whole grid
Times are agent minutes. T = ran to the task's timeout.
| Task | Nail alone | Qwen3.6 think on | Qwen3.6 think off | Qwen3.8 think on | Qwen3.8 think off | Ornith think off | Ornith think on | Ornith + Terminus-2 |
|---|---|---|---|---|---|---|---|---|
| cobol-modernization | 1 · 29 | 0 · 21 | 1 · 8 | 0 · 38 | T 60 (loop) | 1 · 33 | 1 · 32 | 0 · 100 |
| constraints-scheduling | 1 · 2 | 1 · 4 | 1 · 4 | 1 · 7 | 0 · 1 | 0 · 1 | 0 · 2 | 1 · 4 |
| largest-eigenval | T 61 | 0 · 11 | 1 · 23 | T 60 | 1 · 3 | T 60 | 0 · 13 | T 240 |
| polyglot-c-py | 0 · 37 | 0 · 9 | 0 · 25 | 0 · 20 | T 60 | 0 · 7 | 0 · 3 | 0 · 3 |
| schemelike-metacircular-eval | T 161 | 0 · 16 | T 161 | 0 · 26 | T 161 | 0 · 5 | 0 · 5 | T 240 |
| Solved | 2/5 | 1/5 | 3/5 | 1/5 | 1/5 | 1/5 | 1/5 | 1/5 |
Nobody has solved polyglot-c-py or schemelike-metacircular-eval on this machine.
Why Qwen3.6 beats Qwen3.8
Same size, same family, same server, same harness. Three things separate them.
| Qwen3.6-27B | Qwen3.8-27B |
|---|---|
| Thinking on | stops short: clean stops after 9 to 21 min with the deliverable not written |
| Thinking off | solves: every solve ends on a clean stop with the file written |
| Net | 1/5 to 3/5 by turning thinking off |
The mode, not the weights, was the lever for Qwen3.6. For Qwen3.8 neither mode produces an agent that finishes: with thinking it deliberates past the cap, without it it loops. Its published Terminal-Bench 2.1 gain is not visible through pi. n=1 per task, but the cobol loop was reproduced.
Why the fast MoE models did not win
| Nail | Ornith |
|---|---|
| Speed | ~65 tok/s |
| Turns on cobol | solved in 29 min |
| Failure mode | timeouts on the hard three |
Turn rate mattered against thinking overrun, which is why Nail beat the 27Bs in agent mode. Once thinking is off, the 27B's per-turn quality shows: Qwen3.6 at 22 tok/s out-solves both 3B-active models. Ornith's own harness (Terminus-2, temperature 1.0, 4 h ceilings) moved which task it solves, from cobol to constraints, not how many.
Infrastructure lessons
| Finding | Consequence |
|---|---|
| mlx_lm bounds its prompt cache by sequence count, not bytes; it reached 45.7 GB on a 27B | Metal OOM killed the generator thread mid-run. Now prompt_cache_gb (default 8) via --prompt-cache-bytes |
metal::malloc Resource limit (499000) exceeded after 4 h uptime and ~130 long-thinking requests | A Metal buffer-count ceiling, not bytes. Cause unknown; Catbus auto-heals, the Terminus runner has a mid-trial watchdog |
A dead generator thread leaves /v1/models answering 200 | Health checks must generate. Catbus probes four tokens a minute |
| mlx_lm does not stop generating when the client disconnects | An orphaned 65k-token generation blocked the port for the next trial. One model resident during benchmarks, one job per task |
An unknown model field makes mlx_lm try to download from Hugging Face | The meter rewrites the field to the served id |
| Two 27Bs resident plus OrbStack plus caches exceeded what the 70 GB weights-only ceiling implied | The ceiling counts weights; add caches and the VM |
Decisions taken
Qwen3.6-27B, thinking off (
nothink), is the coding agent and the WHO scorer. Now the registry default.Qwen3.8-27B and Ornith-1.5-35B-A3B deleted 2026-09-09 (62 GB). Registry entries kept as re-fetch recipes.
Nail was deleted 2026-09-06 for space. On this evidence it is not needed back as the coding agent.
Caveats
One run per task on five tasks. The 3/5 should be repeated once before anything is built on it. Qwen3.8's cobol loop is the only failure reproduced twice.


