Tutorial Setup Local Coding Agent dengan Gemma 4 dan llama.cpp di macOS
AP
Adrian Prat

Dipublikasikan 13 Juni 2026

Tutorial Setup Local Coding Agent dengan Gemma 4 dan llama.cpp di macOS

Dependensi penuh pada API cloud untuk coding agent mulai terasa riskan saat koneksi internet bermasalah atau kuota API menipis. Untungnya, kemajuan model lokal seperti Gemma 4 dari Google kini memungkinkan kita menjalankan coding agent sepenuhnya offline dengan performa yang masih nyaman digunakan. Artikel ini adalah panduan lengkap untuk membangun local coding agent di macOS menggunakan Gemma 4 26B-A4B yang dijalankan melalui llama.cpp dengan Metal acceleration.

Setup yang dibahas di sini diuji pada Apple M1 Max dengan 64 GB unified memory, menjalankan macOS 15.7.7. Meski demikian, langkah-langkahnya dapat diadaptasi untuk Mac dengan spesifikasi berbeda asalkan memiliki RAM yang cukup besar untuk menampung model sekitar 17 GB.

Kenapa Gemma 4 dan llama.cpp?

Gemma 4 hadir dengan fitur Multi-Token Prediction (MTP) yang memungkinkan model memprediksi beberapa token sekaligus, mengurangi latency secara signifikan. Ketika dikombinasikan dengan llama.cpp yang sudah dioptimasi untuk Metal, hasilnya adalah generation speed sekitar 72 token per detik: cukup responsif untuk coding agent yang sering melakukan tool calls berulang kali.

Benchmark dari pengujian menunjukkan perbandingan yang menarik antara berbagai runtime di Mac:

  • llama.cpp Metal + MTP: 72.2 token/s

  • llama.cpp Metal saja: 58.2 token/s

  • MLX-LM 4-bit: 45.8 token/s

  • MLX-LM OptiQ 4-bit: 38.1 token/s

Hasil ini menunjukkan bahwa llama.cpp dengan MTP draft model adalah pilihan terbaik saat ini untuk Mac, bahkan mengungguli MLX yang secara khusus dioptimasi untuk Apple Silicon.

Langkah 1: Install llama.cpp dengan Metal Support

Pertama, install dependency yang diperlukan melalui Homebrew. Anda membutuhkan cmake, git, tmux, dan Python 3.11 untuk menjalankan server dan download model.

brew install cmake git tmux python@3.11

Kemudian clone repositori llama.cpp dan build dengan Metal serta Accelerate framework aktif. Pastikan direktori kerja sudah disiapkan:

mkdir -p ~/Developer/ML-Models/Gemma4/repos
cd ~/Developer/ML-Models/Gemma4

git clone https://github.com/ggml-org/llama.cpp repos/llama.cpp

cd repos/llama.cpp
cmake -B build \n  -DCMAKE_BUILD_TYPE=Release \n  -DGGML_METAL=ON \n  -DGGML_ACCELERATE=ON

cmake --build build --config Release -j

Build dengan Metal ON akan memastikan sebagian besar komputasi model dijalankan di GPU Apple Silicon, bukan di CPU yang jauh lebih lambat.

Langkah 2: Download Model Gemma 4 GGUF

Buat virtual environment Python dan install huggingface_hub untuk mengunduh model:

cd ~/Developer/ML-Models/Gemma4
python3.11 -m venv .venv
source .venv/bin/activate
pip install -U huggingface_hub hf_xet

Download tiga file utama: model utama, multimodal projector, dan MTP draft model. Model utama yang direkomendasikan adalah gemma-4-26B-A4B-it-UD-Q4_K_XL.gguf dengan ukuran sekitar 16 GB. Dengan projector dan draft model, total folder akan mencapai sekitar 17 GB:

mkdir -p models/unsloth-gemma-4-26B-A4B-it-GGUF

huggingface-cli download unsloth/gemma-4-26B-A4B-it-GGUF \n  gemma-4-26B-A4B-it-UD-Q4_K_XL.gguf \n  mmproj-BF16.gguf \n  MTP/gemma-4-26B-A4B-it-Q8_0-MTP.gguf \n  --local-dir models/unsloth-gemma-4-26B-A4B-it-GGUF

Struktur folder yang dihasilkan:

models/unsloth-gemma-4-26B-A4B-it-GGUF/
  gemma-4-26B-A4B-it-UD-Q4_K_XL.gguf
  mmproj-BF16.gguf
  MTP/gemma-4-26B-A4B-it-Q8_0-MTP.gguf

Langkah 3: Jalankan Server dengan MTP Draft Model

Ini adalah perintah server final yang mengaktifkan MTP speculative decoding. Parameter --spec-draft-n-max 3 adalah sweet spot untuk M1 Max, tapi Anda bisa bereksperimen dari 1 hingga 6 untuk menemukan nilai optimal per hardware:

repos/llama.cpp/build/bin/llama-server \n  -m models/unsloth-gemma-4-26B-A4B-it-GGUF/gemma-4-26B-A4B-it-UD-Q4_K_XL.gguf \n  --model-draft models/unsloth-gemma-4-26B-A4B-it-GGUF/MTP/gemma-4-26B-A4B-it-Q8_0-MTP.gguf \n  --mmproj models/unsloth-gemma-4-26B-A4B-it-GGUF/mmproj-BF16.gguf \n  --spec-type draft-mtp \n  --spec-draft-n-max 3 \n  -ngl 999 \n  -fa on \n  -c 65536 \n  --parallel 1 \n  --host 127.0.0.1 \n  --port 8080

Server ini menyediakan endpoint OpenAI-compatible di http://127.0.0.1:8080/v1, sehingga kompatibel dengan berbagai coding agent seperti Pi, Claude Code, atau Continue.dev.

Untuk kemudahan, buat wrapper script start_server.sh yang menjalankan server dalam sesi tmux:

#!/usr/bin/env bash
set -euo pipefail

ROOT_DIR=""
SESSION_NAME="gemma4-server"

LLAMA_SERVER="/repos/llama.cpp/build/bin/llama-server"
MODEL="/models/unsloth-gemma-4-26B-A4B-it-GGUF/gemma-4-26B-A4B-it-UD-Q4_K_XL.gguf"
DRAFT_MODEL="/models/unsloth-gemma-4-26B-A4B-it-GGUF/MTP/gemma-4-26B-A4B-it-Q8_0-MTP.gguf"
MMPROJ="/models/unsloth-gemma-4-26B-A4B-it-GGUF/mmproj-BF16.gguf"
LOG_FILE="/logs/llama-server-mtp.log"

mkdir -p "/logs"

tmux new-session -d -s "" -c "" \n  " \n    -m  \n    --model-draft  \n    --mmproj  \n    --spec-type draft-mtp \n    --spec-draft-n-max 3 \n    -ngl 999 \n    -fa on \n    -c 65536 \n    --parallel 1 \n    --host 127.0.0.1 \n    --port 8080 \n    2>&1 | tee -a "

chmod +x start_server.sh
./start_server.sh

Langkah 4: Tuning Parameter MTP untuk Hardware Anda

Tidak semua Mac merespons parameter MTP dengan cara yang sama. Tabel berikut menunjukkan hasil pengujian --spec-draft-n-max dari 1 sampai 6 pada M1 Max:

  • 1: 68.4 token/s

  • 2: 72.0 token/s

  • 3: 72.2 token/s (tercepat)

  • 4: 70.7 token/s

  • 5: 63.7 token/s

  • 6: 61.2 token/s

Dari data ini, nilai 3 adalah optimal untuk M1 Max, tapi nilai 2 sudah cukup dekat. Nilai di atas 4 justru menurunkan performa karena overhead speculative decoding melebihi keuntungannya.

Langkah 5: Konfigurasi Coding Agent dengan Image Support

Salah satu kelebihan Gemma 4 adalah kemampuan multimodal. Dengan projector mmproj-BF16.gguf yang sudah dimuat, model dapat menerima input gambar seperti screenshot. Ini berguna ketika coding agent perlu melihat tampilan aplikasi yang sedang dibangun.

Untuk mengaktifkan image support, pastikan model entry di coding agent dideklarasikan sebagai multimodal. Misalnya di Pi, ubah konfigurasi dari input: [text] menjadi input: [text, image]. Server llama.cpp akan otomatis mengadvertise kemampuan multimodal ketika --mmproj aktif.

Uji coba menunjukkan bahwa memuat projector tidak menurunkan speed text generation (tetap 72.2 token/s), jadi tidak ada downside mengaktifkannya.

Kesimpulan

Dengan kombinasi llama.cpp + Gemma 4 + MTP draft model, Mac Anda dapat menjadi workstation AI yang mandiri tanpa ketergantungan API cloud. Total investasi storage sekitar 17 GB, tapi hasilnya adalah coding agent yang responsif, multimodal, dan bebas biaya subscription. Setup ini ideal untuk developer yang sering bekerja di lokasi dengan koneksi terbatas atau yang ingin menjaga privasi kode tetap lokal.

Untuk detail lebih lanjut, Anda dapat merujuk ke repositori llama.cpp dan model Gemma 4 GGUF di Hugging Face.