Jalankan AI Coding Assistant Lokal dengan Ollama

by Marcus Chen
Jalankan AI Coding Assistant Lokal dengan Ollama

Kamu lagi nulis kode, butuh autocomplete yang ngerti konteks, tapi nggak mau bayar $10/bulan ke GitHub Copilot atau khawatir kode proprietary kamu dikirim ke server Microsoft. Masalah ini nyata — banyak developer di perusahaan dengan NDA ketat atau yang sekadar mau hemat budget nggak punya pilihan yang bagus.

Sampai Ollama ada.

Ollama adalah tool yang bikin kamu bisa jalankan LLM (Large Language Model) langsung di mesin sendiri. Kombinasikan dengan plugin editor yang tepat, kamu bisa punya AI coding assistant yang jalan 100% offline, nggak kirim data ke mana-mana, dan — yang paling penting buat indie hacker — gratis.

Artikel ini akan setup Ollama dari nol, pilih model yang cocok buat coding, integrasikan ke VS Code, dan kasih tahu gotcha yang gue temuin waktu pertama kali setup.

Kenapa Ollama, Bukan yang Lain?

Ada beberapa alternatif: LM Studio, Jan, llama.cpp langsung. Tapi Ollama punya keunggulan spesifik buat developer:

  • API-compatible dengan OpenAI — endpoint-nya mirip, jadi banyak tool yang udah support OpenAI bisa langsung pointing ke Ollama.
  • CLI yang bersih — ollama run codellama dan langsung jalan.
  • Model library — tinggal ollama pull, nggak perlu download GGUF manual dan config sendiri.
  • Background service — jalan sebagai daemon, siap dipanggil kapan aja.

Kalau kamu udah familiar sama Docker, anggap aja Ollama itu kayak Docker tapi buat LLM.

Install Ollama

Linux (paling gampang)

curl -fsSL https://ollama.com/install.sh | sh

Script ini install Ollama sebagai systemd service. Setelah selesai, service langsung running.

# Cek status
systemctl status ollama

# Output yang diharapkan:
# ● ollama.service - Ollama Service
#    Loaded: loaded (/etc/systemd/system/ollama.service)
#    Active: active (running)

macOS

Download dari ollama.com atau pakai Homebrew:

brew install ollama
ollama serve &

Windows

Ada installer .exe-nya. Tapi kalau kamu pakai WSL2, lebih recommended install di Linux side supaya GPU passthrough lebih stabil.

Pilih Model yang Tepat Buat Coding

Ini bagian yang paling sering bikin orang salah pilih. Bukan berarti model terbesar = terbaik. Yang penting adalah fit antara ukuran model dan RAM/VRAM kamu.

Patokan kasar:

Model VRAM/RAM yang dibutuhkan Cocok untuk
codellama:7b ~4 GB Laptop biasa, CPU-only
codellama:13b ~8 GB Laptop gaming, GPU entry
deepseek-coder:6.7b ~4 GB Alternatif ringan, bagus buat Python/JS
qwen2.5-coder:7b ~5 GB State-of-the-art buat ukurannya
codellama:34b ~20 GB Workstation dengan GPU dedicated

Rekomendasi gue buat yang baru mulai: qwen2.5-coder:7b. Model ini dari Alibaba, surprisingly bagus buat ukurannya, dan ngerti konteks kode lebih baik dari CodeLlama 7B di benchmark coding.

# Pull model
ollama pull qwen2.5-coder:7b

# Test langsung dari CLI
ollama run qwen2.5-coder:7b
>>> Tulis fungsi Python untuk validasi email

Model akan di-download sekali (~4.7 GB), setelah itu jalan lokal.

Expose API Ollama

Ollama secara default jalan di http://localhost:11434. Kamu bisa test dengan curl:

curl http://localhost:11434/api/generate \
  -d '{
    "model": "qwen2.5-coder:7b",
    "prompt": "Tulis fungsi Go untuk reverse string",
    "stream": false
  }'

Response-nya JSON dengan field response berisi output model.

Endpoint /v1/chat/completions juga tersedia dan compatible dengan OpenAI SDK:

curl http://localhost:11434/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen2.5-coder:7b",
    "messages": [
      {"role": "user", "content": "Explain this Go code: fmt.Println(\"hello\")"}  
    ]
  }'

Ini penting karena berarti kamu bisa pakai OpenAI Python SDK pointing ke Ollama:

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:11434/v1",
    api_key="ollama"  # string apapun, nggak divalidasi
)

response = client.chat.completions.create(
    model="qwen2.5-coder:7b",
    messages=[
        {
            "role": "system",
            "content": "Kamu adalah senior backend engineer. Jawab dalam Bahasa Indonesia."
        },
        {
            "role": "user",
            "content": "Apa perbedaan antara goroutine dan thread OS?"
        }
    ]
)

print(response.choices[0].message.content)

Integrasi ke VS Code dengan Continue

Ini bagian yang bikin setup ini benar-benar berguna sehari-hari. Continue adalah extension VS Code (dan JetBrains) open-source yang bisa connect ke Ollama.

# Install dari VS Code marketplace
# Cari: "Continue - Codestral, Claude, and more"
# Publisher: Continue

Setelah install, buka config Continue (~/.continue/config.json) dan edit:

{
  "models": [
    {
      "title": "Qwen2.5 Coder Local",
      "provider": "ollama",
      "model": "qwen2.5-coder:7b",
      "apiBase": "http://localhost:11434"
    }
  ],
  "tabAutocompleteModel": {
    "title": "Autocomplete",
    "provider": "ollama",
    "model": "qwen2.5-coder:7b",
    "apiBase": "http://localhost:11434"
  },
  "allowAnonymousTelemetry": false
}

Setelah save, kamu bisa:

  • Chat dengan AI di sidebar (Ctrl+L) — tanya tentang kode yang sedang dibuka
  • Inline edit (Ctrl+I) — highlight kode, minta refactor atau explain
  • Tab autocomplete — mirip Copilot, tapi jalan lokal

Gotcha #1: Tab autocomplete dengan model 7B di CPU-only laptop bakal terasa lambat (~3-8 detik per suggestion). Kalau ini mengganggu, matikan autocomplete dan pakai chat mode aja — lebih sabar, tapi tetap berguna.

// Di config.json, disable autocomplete kalau terlalu lambat:
{
  "tabAutocompleteOptions": {
    "disable": true
  }
}

Buat Script Helper untuk Workflow Coding

Selain dari editor, gue sering pakai Ollama langsung dari terminal untuk task-task spesifik. Ini script bash yang gue taruh di ~/bin/ai:

#!/bin/bash
# ~/bin/ai — quick AI query dari terminal
# Usage: ai "jelaskan error ini" atau cat error.log | ai "apa penyebabnya?"

MODEL="qwen2.5-coder:7b"
PROMPT="$*"

# Kalau ada stdin (pipe), gabungkan dengan prompt
if [ ! -t 0 ]; then
  STDIN=$(cat)
  PROMPT="$PROMPT\n\nKonteks:\n$STDIN"
fi

if [ -z "$PROMPT" ]; then
  echo "Usage: ai <pertanyaan>"
  echo "       cat file.py | ai <pertanyaan tentang file>"
  exit 1
fi

curl -s http://localhost:11434/api/generate \
  -d "$(jq -n \
    --arg model "$MODEL" \
    --arg prompt "$PROMPT" \
    '{model: $model, prompt: $prompt, stream: false}')" \
  | jq -r '.response'
chmod +x ~/bin/ai

# Contoh penggunaan:
ai "apa bedanya slice dan array di Go?"

# Pipe error log:
cat server.log | ai "kenapa ada panic di sini?"

# Review kode:
cat main.go | ai "ada security issue di kode ini?"

Gotcha #2: Script ini butuh jq terinstall. Di Ubuntu: sudo apt install jq. Di macOS: brew install jq.

Ollama di Server Remote (Opsional)

Kalau kamu punya VPS atau homelab dengan GPU yang lebih kenceng, kamu bisa jalankan Ollama di sana dan akses dari laptop.

# Di server, expose ke semua interface:
OLLAMA_HOST=0.0.0.0 ollama serve

# Atau set di systemd service:
sudo systemctl edit ollama

Tambahkan:

[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"

Dari laptop, akses via SSH tunnel supaya nggak expose port ke internet:

# Di laptop, buka tunnel:
ssh -L 11434:localhost:11434 user@your-server-ip -N &

# Sekarang localhost:11434 di laptop = Ollama di server
# Config Continue atau script kamu tetap sama

Gotcha #3: Kalau Ollama di-expose tanpa authentication ke internet publik, siapapun bisa pakai LLM kamu. Selalu pakai SSH tunnel atau firewall rule yang ketat. Ollama belum punya built-in auth.

Benchmarking Sederhana

Sebelum commit pakai model tertentu, gue biasanya test dulu dengan prompt yang relevan sama kerjaan gue:

# Test kecepatan dan kualitas
time ollama run qwen2.5-coder:7b \
  "Tulis REST API handler di Go untuk endpoint POST /users yang validasi JSON body dengan field name (string, required) dan email (string, valid email format). Sertakan error handling."

Ukur waktu response dan lihat kualitas kode yang dihasilkan. Kalau terlalu lambat, coba model yang lebih kecil (deepseek-coder:1.3b buat yang RAM-nya mepet).

Yang Gue Lakuin Sekarang

Setup yang gue pakai sehari-hari:

  1. Ollama jalan sebagai systemd service di laptop (AMD Ryzen 7, 16GB RAM, tanpa GPU dedicated)
  2. Model: qwen2.5-coder:7b untuk chat, deepseek-coder:1.3b untuk autocomplete (lebih ringan)
  3. Continue di VS Code untuk chat dan inline edit — autocomplete gue matikan karena terlalu lambat di CPU
  4. Script ai di terminal untuk quick query tanpa buka editor

Hasilnya? Gue punya AI coding assistant yang nggak pernah minta subscription, nggak pernah kirim kode gue ke mana-mana, dan tetap jalan waktu internet mati.

Langkah lanjutan yang worth dicoba:

  • Coba ollama create untuk bikin custom model dengan system prompt spesifik (misalnya, AI yang selalu jawab dalam Bahasa Indonesia dan paham codebase kamu)
  • Integrasikan Ollama ke CI pipeline lokal untuk automated code review
  • Explore ollama show --modelfile untuk lihat dan modifikasi konfigurasi model

Kalau kamu stuck di bagian mana pun — terutama soal VRAM vs RAM tradeoff atau this guide untuk config Continue — drop di kolom komentar.