AI-codeerassistenten lokaal draaien op je Mac: zo werkt het

AI-codeerassistenten lokaal draaien op je Mac: zo werkt het

Jul 06, 2026 local-ai apple-silicon llama-cpp coding-agents gemma macos machine-learning speculative-decoding

Waarom Lokaal Draaien?

Herken je dat? Je zit midden in een flinke coderingssessie, de flow zit er goed in, en dan — internet eruit. Je cloud-gebaseerde AI-assistent wordt nutteloos, en je blijft naar je scherm staren.

Zo ging het mij onlangs. Dat was de trigger om eindelijk serieus te kijken naar een volwaardige AI coding agent die lokaal draait. Wat ik ontdekte? Met de juiste setup presteert het verrassend goed op Apple Silicon. Sterker nog: het verslaat specialized Mac-geoptimaliseerde oplossingen.

De Setup Die Echt Werkt

Na flink wat testen en benchmarken, dit is de configuratie die op mijn M1 Max met 64GB unified memory de beste resultaten leverde:

Kernonderdelen:

  • llama.cpp gebouwd met Metal-acceleratie
  • Gemma 4 26B-A4B in GGUF-formaat (gequantiseerd naar Q4)
  • Multi-Token Prediction (MTP) draft model voor speculative decoding
  • Gemma 4 multimodal projector voor screenshot-ondersteuning
  • Pi als terminal-gebaseerde coding agent

Dit is niet de theoretisch krachtigste setup, maar wel de sweet spot voor praktisch gebruik. Je wilt snelheid in tokens per seconde, niet minuten per antwoord.

De Cijfers Die Tellen

Ik heb consistent gebenchmarkd met dezelfde prompt:

"Schrijf een compacte Python-functie die een unified diff parseert en de gewijzigde bestandspaden teruggeeft. Leg daarna twee edge cases uit."

Elke test genereerde zo'n 128 tokens. Zo kon ik de generatiesnelheid eerlijk vergelijken.

Baseline prestaties:

Gemma 4 draaien via llama.cpp met Metal gaf 58,2 tokens per seconde. Bruikbaar, maar eerlijk? Het voelde traag aan tijdens echte codersessies waar je meerdere tool calls maakt en wacht op响应en.

Het MTP Verschil:

Hier wordt het interessant. Multi-Token Prediction laat het model meerdere tokens vooruit "gokken". Correcte voorspellingen worden geaccepteerd, verkeerde worden teruggedraaid. Met het Q8 MTP draft model ingeschakeld schoot de performance naar 72,2 tokens per seconde — een verbetering van 24% zonder enige aanpassing aan het hoofdmodel.

De prompt-verwerking bleef nagenoeg gelijk (rond 297-299 tokens/seconde), maar generatiesnelheid is wat telt voor agent workflows. Je dient niet constant nieuwe prompts in — je wacht tot het model antwoorden genereert, beslissingen neemt en tools uitvoert.

Ik testte draft token-aantallen van 1 tot 6. Op mijn M1 Max lag 3 draft tokens in de sweet spot. Waarden boven 4 begonnen juist te vertragen — logisch, want meer speculatie betekent meer verspilde moeite bij verkeerde voorspellingen.

llama.cpp vs. MLX: De Verrassende Winnaar

Dit overviel me: ik verwachtte dat MLX (Apple's native ML-framework) zou domineren, want het is specifiek geoptimaliseerd voor Apple Silicon. De werkelijkheid was anders.

| Runtime | Generatie tok/s | |---------|-----------------| | llama.cpp Metal + MTP | 72,2 | | llama.cpp Metal | 58,2 | | MLX-LM (Unsloth 4-bit) | 45,8 | | MLX-LM (standaard 4-bit) | 43,9 | | MLX-LM (OptiQ 4-bit) | 38,1 |

Llama.cpp met MTP was roughly 58% sneller dan de beste MLX-configuratie. De jaren aan optimalisatiewerk in llama.cpp hebben duidelijk vruchten afgeworpen — het draait uitstekend op macOS ondanks dat het cross-platform is.

Vision Toegevoegd

Voor een volwaardige coding agent-ervaring wil je screenshots kunnen sturen. Misschien wil je dat de agent ziet wat hij gebouwd heeft, of een UI-wijziging reviewt die je net maakte.

De adder onder het gras? Alleen Gemma 4 12B is native multimodal. Het 26B-model dat we gebruiken heeft de externe multimodal projector nodig.

Toen ik de --mmproj projector toevoegde aan llama.cpp, adverteerde het correct de multimodal capabilities naar Pi. Image tool outputs begonnen correct te flowen. Belangrijker: dit introduceerde geen merkbare vertraging — de generatiesnelheid bleef op 72,2 tokens per seconde.

De Praktijk

Met deze setup kijk je naar roughly 17GB aan modelbestanden (16GB voor het hoofdmodel, plus de MTP head en projector). Voor iemand met 64GB unified memory is dat prima te doen.

Pi als agent biedt een clean terminal interface die aanhaakt op de OpenAI-compatible API die llama.cpp's server mode exposeert. Dit betekent dat je elke tool kunt gebruiken die OpenAI's API-format ondersteunt — flexibiliteit zonder lock-in.

Het grootste voordeel? Als je internet uitvalt — en dat gebeurt, op het slechtst mogelijke moment — blijf je doorwerken. De agent is misschien iets langzamer dan cloud-alternatieven, maar responsief genoeg om je workflow vast te houden.

Aan de Slag

Je moet llama.cpp bouwen met Metal support ingeschakeld. Het project heeft solide documentatie voor macOS-builds. Eenmaal gecompileerd, geeft server mode je dat OpenAI-compatible endpoint.

Voor modellen: de Unsloth GGUF quantizations op Hugging Face zijn goed geoptimaliseerd. Je wilt Q4_K_XL quantization voor het hoofdmodel en het matching Q8 MTP draft model.

Tune je --spec-draft-n-max waarde — start bij 3 en test van 1 tot 6 om te vinden wat het beste werkt op jouw specifieke hardware. Verschillende Apple Silicon-configuraties kunnen verschillende sweet spots hebben.

Is Het De Moeite Waard?

Als je regelmatig codeert met AI assistants en de hardware hebt (16GB minimum, 32GB+ aanbevolen), absoluut. De onafhankelijkheid van internet alleen al maakt het waardevol. En met MTP die generatiesnelheden naar echt bruikbaar territory brengt, is de ervaring verrassend gepolijst.

Je gaat geen GPT-4-klasse intelligentie matchen met deze open modellen. Maar voor code completion, refactoring, debugging assistance en algemene coding agent-taken? Het is capabeler dan de meeste mensen verwachten. En het is van jou — lokaal draaiend, privé, zonder latency spikes of service-uitval.

De tools zijn significant volwassen geworden. Als je eerder lokale modellen hebt geprobeerd en teleurgesteld was door de snelheid, probeer deze setup. MTP verandert de vergelijking aanzienlijk.

Read in other languages:

RU BG EL CS UZ TR SV FI RO PT PL NB HU IT FR ES DE DA ZH-HANS EN