SSD Nodes Learn 🎉 VPS mulai $5.50/bln
Panduan Matt ConnorOleh Matt Connor · Diperbarui 2026-08-13

Cara Menggunakan Ollama dengan Coding Agent

Pelajari base URL Ollama, API key dummy, serta panjang konteks yang dapat mengacaukan hasil. Temukan pekerjaan coding yang paling cocok untuk model lokal.

Yang Anda hubungkan

Anda dapat menggunakan Ollama dengan coding agent. Konfigurasinya lebih sederhana daripada yang diperkirakan banyak orang. Anda hanya perlu mengubah satu base URL dan memilih satu nama model. Kolom API key tetap mengharuskan Anda mengisi nilai, tetapi server lokal mengabaikannya. Jadi, string apa pun dapat digunakan.

Ollama listening pada port 11434 dan melayani dua bentuk request secara bersamaan. /v1/chat/completions adalah bentuk yang kompatibel dengan OpenAI. Dokumentasi Ollama menyebutkan bahwa key di sana wajib diisi, tetapi diabaikan. /v1/messages adalah bentuk yang kompatibel dengan Anthropic dan digunakan oleh Claude Code. Agent Anda sudah menggunakan salah satu dari dua bentuk tersebut. Jadi, tidak ada bagian lain yang perlu diubah.

Bagian ini dapat diselesaikan dalam lima menit. Kegunaan hasilnya ditentukan oleh dua pengaturan yang hampir tidak pernah diubah, yaitu panjang konteks dan keep-alive, serta oleh jenis pekerjaan yang diberikan kepada model. Masing-masing akan dibahas dalam bagian tersendiri. Batasan yang sebenarnya dijelaskan di bagian akhir.

Agen coding mana yang menerima base URL lokal

Ujiannya hanya satu: apakah tool tersebut menyediakan pengaturan base URL? Jika ya, tool tersebut dapat berkomunikasi dengan server Anda.

Ollama menyediakan halaman integrasi untuk Claude Code, OpenCode, Codex, Cline, Roo Code, Zed, JetBrains IDEs, dan VS Code. Aider mendokumentasikan dukungan Ollama secara terpisah. Daftar ini mencakup sebagian besar tool yang dimaksud orang sebagai agen coding pada August 2026. Tool-tool tersebut tidak semuanya menggunakan format yang sama. Perbedaan inilah yang sering menyebabkan konfigurasi gagal.

  • Sebagian besar agen memerlukan endpoint yang kompatibel dengan OpenAI. Berikan base URL http://localhost:11434/v1 dan string API key apa pun yang tidak kosong.
  • Claude Code sama sekali tidak menerima OpenAI base URL. Tool ini menggunakan Anthropic Messages API, sehingga ANTHROPIC_BASE_URL harus diatur ke http://localhost:11434, tempat Ollama menyediakan /v1/messages.
  • Codex menggunakan OpenAI Responses API. Ollama juga menyediakan /v1/responses, yang ditambahkan pada version 0.13.3.
  • Agen yang tidak memiliki pengaturan base URL tidak dapat dialihkan karena endpoint-nya sudah ditentukan di dalam client. Letakkan translation layer di depannya, misalnya gateway LiteLLM yang di-host sendiri, lalu sediakan kembali model Anda dalam format yang diminta client.

Ollama dapat menulis konfigurasi ini untuk Anda. ollama launch opencode menjalankan OpenCode dengan konfigurasi inline untuk model yang Anda pilih, ollama launch claude melakukan hal yang sama untuk Claude Code, dan ollama launch droid --config menulis konfigurasi tanpa menjalankan tool tersebut.

Instal Ollama dan tarik model yang dapat memanggil tools

curl -fsSL https://ollama.com/install.sh | sh
systemctl status ollama --no-pager
ollama pull qwen3-coder:30b
ollama ls

Installer menambahkan unit systemd dan menjalankannya, sehingga systemctl status ollama seharusnya menampilkan active (running). Jika tidak, journalctl -e -u ollama menampilkan penyebabnya.

Model harus mendukung pemanggilan tools karena pemanggilan tools merupakan cara kerja agent. Agent membaca file, menulis patch, menjalankan pengujian, lalu membaca kegagalan dan mencoba lagi. Model yang tidak dapat menghasilkan pemanggilan tool akan menjelaskan perubahan dalam bentuk teks, bukan menerapkannya. Akibatnya, agent akan mengulang atau berhenti. Cari label tools pada halaman model di ollama.com sebelum melakukan pull. qwen3-coder:30b memiliki label tersebut. Per Agustus 2026, tag itu berukuran 19 GB dengan context window 256K. Jika server Anda hanya menggunakan CPU atau memiliki RAM terbatas, perhitungan memori untuk tag Qwen 27B pada VPS menunjukkan konfigurasi yang benar-benar dapat digunakan pada 8 hingga 64 GB sebelum Anda mengunduhnya.

Sekarang, pastikan nama yang benar-benar disediakan server:

curl http://localhost:11434/v1/models

String dalam respons tersebut harus dicantumkan dalam konfigurasi agent, karakter demi karakter. Memeriksanya terlebih dahulu menyelesaikan sebagian besar error model tidak ditemukan. Jika Ollama belum terinstal, panduan yang lebih panjang tersedia di menjalankan LLM secara mandiri dengan Ollama pada VPS.

Arahkan OpenCode ke Ollama

Edit ~/.config/opencode/opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "ollama": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Ollama",
      "options": {
        "baseURL": "http://localhost:11434/v1"
      },
      "models": {
        "qwen3-coder:30b": {
          "name": "qwen3-coder 30b"
        }
      }
    }
  }
}

Kunci di bawah models adalah nama model yang dikirim ke Ollama, jadi harus sama persis dengan ollama ls. Kolom name hanya digunakan sebagai label pada pemilih model. Jalankan opencode, pilih provider Ollama, lalu pantau journalctl -e -u ollama untuk memastikan permintaan tiba di server Anda, bukan di tempat lain. Penyiapan agent itu sendiri dibahas di menjalankan OpenCode pada VPS.

Arahkan Claude Code ke Ollama

export ANTHROPIC_AUTH_TOKEN=ollama
export ANTHROPIC_API_KEY=""
export ANTHROPIC_BASE_URL=http://localhost:11434
claude --model qwen3-coder:30b

ANTHROPIC_API_KEY sengaja diatur sebagai string kosong. Jika kunci nyata dibiarkan di environment, permintaan Anda akan dikirim ke API ter-host, sehingga Anda dikenai biaya dan tidak mendapatkan inferensi lokal. ollama launch claude mengatur semua ini untuk Anda.

Pahami hal-hal yang tidak disediakan oleh lapisan kompatibilitas. Lapisan ini tidak mengimplementasikan tool_choice atau caching prompt. Lapisan ini juga tidak memiliki endpoint penghitungan token, sehingga jumlah token yang Anda lihat merupakan perkiraan dari tokenizer milik model itu sendiri. Claude Code juga membawa system prompt yang besar dan kumpulan tool yang besar, sehingga memerlukan context lebih banyak daripada client chat. Pembahasan yang lebih luas tentang hal-hal yang dapat digunakan dan yang tidak dapat digunakan tercakup dalam apakah Claude dapat Anda self-host.

Arahkan Aider ke Ollama

export OLLAMA_API_BASE=http://127.0.0.1:11434
aider --model ollama_chat/qwen3-coder:30b

Dokumentasi Aider merekomendasikan awalan ollama_chat/ daripada ollama/. Anda juga dapat menetapkan context window untuk setiap model di .aider.model.settings.yml. Ini berguna jika salah satu model memerlukan window yang berbeda dari default server:

- name: ollama_chat/qwen3-coder:30b
  extra_params:
    num_ctx: 65536

Mengapa konfigurasi yang berfungsi tetap menghasilkan keluaran yang tidak masuk akal

Ini adalah bagian yang paling penting. Ollama memilih panjang konteks default berdasarkan VRAM (memori video pada GPU) yang dapat dilihatnya, dan nilai default tersebut dipublikasikan:

ChartOllama default context length by available VRAM, documented August 2026
The data behind this chart
[
  {
    "label": "Under 24 GiB VRAM",
    "default_context_tokens": "4,096"
  },
  {
    "label": "24 to 48 GiB VRAM",
    "default_context_tokens": "32,768"
  },
  {
    "label": "48 GiB VRAM or more",
    "default_context_tokens": "262,144"
  }
]

Sebagian besar paket VPS, serta semua server khusus CPU, berada pada baris pertama: 4,096 token. Hanya GPU besar yang mendapatkan 262,144 token pada baris terakhir.

Sebuah agent menggunakan 4096 token sebelum melakukan pekerjaan apa pun. System prompt, definisi tool, daftar repository, dan file pertama yang dibukanya sudah lebih besar daripada jumlah tersebut. Selanjutnya, inilah masalah utamanya: tidak ada error yang muncul. Dokumentasi Aider menyatakan bahwa Ollama membuang konteks yang melebihi ukuran window secara diam-diam. Token paling lama dikeluarkan, sehingga model menjawab dengan yakin tentang file yang sudah tidak dapat dilihatnya, atau melupakan instruksi yang Anda berikan dua langkah sebelumnya. Mekanisme ini menyebabkan sebagian besar laporan bahwa model lokal terlalu tidak cerdas untuk menulis kode.

Dokumentasi Ollama menyatakan bahwa tugas seperti agent dan coding tool harus diatur ke setidaknya 64000 token. Atur nilainya pada server:

sudo systemctl edit ollama.service

Tambahkan baris berikut ke file override:

[Service]
Environment="OLLAMA_CONTEXT_LENGTH=64000"

Kemudian muat ulang dan restart:

sudo systemctl daemon-reload
sudo systemctl restart ollama
ollama ps

ollama ps adalah pemeriksaannya. Perintah ini menampilkan kolom CONTEXT, dan angka tersebut adalah jumlah yang benar-benar diterima model. Nilai ID dan SIZE Anda akan berbeda:

NAME               ID              SIZE     PROCESSOR    CONTEXT    UNTIL
qwen3-coder:30b    a1b2c3d4e5f6    24 GB    100% GPU     64000      4 minutes from now

Atur nilainya pada server, bukan di agent, karena dua alasan. Skema OpenAI chat completions tidak memiliki field untuk panjang konteks, sehingga client yang kompatibel dengan OpenAI tidak dapat memintanya. Selain itu, pengaturan ini berlaku per server, sehingga setiap agent yang diarahkan ke server tersebut akan mewarisinya. Jika salah satu model memerlukan window yang berbeda, masukkan pengaturan itu ke salinan model menggunakan Modelfile:

FROM qwen3-coder:30b
PARAMETER num_ctx 65536
ollama create qwen3-coder-64k -f Modelfile

Konteks tidak gratis. Window yang lebih panjang membutuhkan lebih banyak memori, jadi pantau kolom PROCESSOR. 100% GPU adalah nilai yang Anda inginkan. Setelah sebagian model berpindah ke CPU, laju token turun cukup jauh sehingga loop agent tidak dapat digunakan, dan mengukur token per detik pada LLM lokal adalah cara untuk menemukan batas nyata server Anda. Penentuan spesifikasi mesin sebelum membelinya dibahas dalam berapa RAM dan CPU yang dibutuhkan VPS untuk coding agent.

Pertahankan model tetap dimuat di antara permintaan

Secara default, Ollama membongkar model 5 menit setelah permintaan terakhir. Perilaku ini sesuai untuk kotak chat, tetapi tidak sesuai untuk pekerjaan agen. Anda berhenti sejenak untuk membaca diff, penghitung waktu habis, lalu permintaan berikutnya memuat ulang puluhan gigabita bobot dari disk sebelum token pertama muncul. Kondisi ini terlihat seperti proses yang macet.

OLLAMA_KEEP_ALIVE menerima string durasi seperti 10m atau 24h, angka biasa dalam detik, -1 untuk mempertahankan model tetap dimuat tanpa batas waktu, atau 0 untuk langsung membongkar model. Atur parameter ini bersama panjang konteks:

[Service]
Environment="OLLAMA_CONTEXT_LENGTH=64000"
Environment="OLLAMA_KEEP_ALIVE=-1"

Kolom permintaan keep_alive hanya tersedia pada endpoint native Ollama, yaitu /api/generate dan /api/chat, bukan pada endpoint kompatibilitas. Karena itu, agen tidak dapat mengaturnya untuk setiap permintaan. Variabel lingkungan adalah satu-satunya cara yang tersedia. Saat memerlukan kembali memorinya, ollama stop qwen3-coder:30b membongkar model tanpa menghentikan server.

Menjalankan Ollama pada server terpisah

Ollama terikat pada localhost. Agar dapat diakses dari mesin lain, tetapkan OLLAMA_HOST=0.0.0.0:11434 pada override systemd yang sama, lalu restart service.

Lakukan ini hanya pada jaringan privat. Dokumentasi Ollama menyatakan bahwa API lokal tidak memerlukan autentikasi. Artinya, jika port 11434 terbuka ke Internet, siapa pun dapat menggunakan perangkat keras Anda dan membaca apa pun yang dikirim agen Anda. Ada dua opsi yang aman. Pertahankan binding pada localhost dan teruskan port melalui SSH dari laptop Anda:

ssh -N -L 11434:localhost:11434 you@your-vps

Agen Anda tetap mengarah ke http://localhost:11434/v1 dan tidak mengetahui perbedaannya. Opsi lainnya adalah VPN, dengan Ollama terikat pada alamat VPN, bukan 0.0.0.0. Jika beberapa orang atau beberapa agen akan berbagi satu mesin, scheduler Ollama tidak dirancang untuk beban tersebut. Perbandingan antara Ollama dan vLLM menunjukkan kapan perbedaan throughput mulai berdampak.

Kapan model coding lokal lebih unggul, dan kapan tidak

Agen yang digerakkan oleh model yang Anda host sendiri tidak menggantikan API frontier untuk setiap tugas. Model ini jelas lebih unggul untuk empat jenis pekerjaan.

  • Pengeditan mekanis dalam jumlah besar, ketika setiap perubahan kecil dan dapat diperiksa. Mengganti nama di seluruh repository, menambahkan type hints, menulis docstrings, atau menerjemahkan komentar. Model dapat berjalan selama berjam-jam tanpa menambah biaya.
  • Pekerjaan yang datanya tidak boleh keluar dari perangkat Anda. Misalnya, kode klien yang dilindungi perjanjian kerahasiaan atau repository internal yang tidak boleh Anda kirimkan kepada pihak ketiga.
  • Mesin offline dan air-gapped, ketika tidak ada hosted API yang dapat dipanggil.
  • Biaya yang dapat diprediksi. Setelah server dibayar, agen yang terus menggunakan token dalam loop tidak menimbulkan biaya tambahan. Ini berlawanan dengan API yang menggunakan penagihan berdasarkan pemakaian. Kapan GPU VPS mencapai titik impas dibandingkan token API memuat perhitungannya.

Model ini kurang unggul untuk tugas panjang yang terdiri dari banyak langkah. Perintah seperti "Cari penyebab test ini gagal, perbaiki penyebabnya, lalu perbarui pemanggilnya" memerlukan banyak tool call yang benar secara berurutan, dengan seluruh riwayat tetap berada dalam context. Model dalam rentang 8B hingga 14B pada server dengan spesifikasi sedang dapat menghasilkan tool call yang formatnya salah atau kehilangan rencana setelah beberapa giliran. Akibatnya, Anda menghabiskan lebih banyak waktu untuk mengarahkannya daripada waktu yang diperlukan untuk menyelesaikan tugas tersebut. Ini bukan masalah prompt yang dapat diatasi hanya dengan menulis prompt yang lebih baik. Masalahnya adalah kapasitas.

Model ini juga kurang unggul ketika kesalahan menimbulkan biaya besar dan Anda tidak akan membaca setiap baris. Berikan model lokal tugas yang sempit dan verifikasi hasilnya. Gunakan hosted model untuk pekerjaan yang tidak akan Anda periksa langkah demi langkah.

Mode kegagalan dan string yang akan Anda lihat

curl: (7) Failed to connect to localhost port 11434 after 0 ms: Connection refused. Server tidak berjalan, atau agent diarahkan ke host yang berbeda. Jalankan systemctl status ollama, lalu journalctl -e -u ollama.

Agent melaporkan bahwa model tidak ada. Nama dalam konfigurasi Anda tidak cocok dengan nama yang disediakan server. Bandingkan dengan curl http://localhost:11434/v1/models dan salin string dari sana. Tag merupakan bagian dari nama. Karena itu, konfigurasi yang mencantumkan tag yang belum pernah Anda pull akan gagal meskipun model serupa sudah terpasang.

Agent menjawab dalam bentuk prosa dan tidak pernah mengedit file. Model mungkin tidak mendukung tool, atau permintaan beserta definisi tool-nya sudah memenuhi context window. Periksa label tools pada halaman model, lalu periksa kolom CONTEXT di ollama ps.

Hening cukup lama sebelum token pertama, lalu kecepatannya normal. Keep-alive telah kedaluwarsa dan weights sedang dibaca ulang dari disk. Atur OLLAMA_KEEP_ALIVE.

Model menyangkal isi file yang baru saja dibacanya. Ini adalah truncation context. ollama ps biasanya menampilkan nilai CONTEXT yang lebih kecil dari yang Anda tetapkan, karena environment variable diterapkan ke shell, bukan ke unit systemd.

Semuanya berfungsi, tetapi lambat, dan PROCESSOR bukan 100% GPU. Model beserta context-nya tidak muat di VRAM. Kurangi panjang context, atau gunakan model yang lebih kecil maupun quantisation yang lebih kecil.

FAQ

Dapatkah saya mengarahkan Claude Code ke Ollama?

Ya, tetapi bukan dengan URL yang kompatibel dengan OpenAI. Claude Code menggunakan Anthropic Messages API, sedangkan Ollama menyediakan format tersebut pada /v1/messages di port yang sama, yaitu 11434. Ekspor ANTHROPIC_BASE_URL=http://localhost:11434, ANTHROPIC_AUTH_TOKEN=ollama, dan ANTHROPIC_API_KEY yang kosong, lalu jalankan dengan claude --model qwen3-coder:30b. ollama launch claude menulis pengaturan yang sama untuk Anda. Lapisan kompatibilitas ini tidak mengimplementasikan tool_choice atau caching prompt, serta tidak memiliki endpoint penghitungan token. Karena itu, jumlah token yang dilaporkan hanya perkiraan.

Mengapa model lokal saya menjawab tentang kode yang tidak dapat dilihatnya?

Karena permintaan tersebut tidak lagi muat dalam context window, dan bagian paling awalnya dibuang tanpa error. Ollama menetapkan context default berdasarkan VRAM yang ditemukan. Jika VRAM kurang dari 24 GiB, nilai default tersebut adalah 4,096 token, sedangkan system prompt dan definisi tool milik agent saja sudah melebihi jumlah itu. Tetapkan OLLAMA_CONTEXT_LENGTH=64000 pada unit systemd, restart Ollama, lalu pastikan kolom CONTEXT di ollama ps menampilkan nilai baru.

Model mana yang sebaiknya saya jalankan untuk coding agent di VPS?

Pilih model terbesar yang memiliki label tools dan masih muat di memori dengan context window 64k. Utamakan model yang dioptimalkan untuk kode. qwen3-coder:30b adalah pilihan yang umum pada server GPU dengan VRAM yang memadai. Di bawah sekitar 14B parameter, model masih dapat menjawab pertanyaan tentang kode dengan baik, tetapi dapat gagal saat melakukan pengeditan multi-langkah. Pekerjaan agent sangat terpengaruh oleh kesalahan format kecil dalam tool call. Uji dengan satu tugas nyata dari repository Anda sendiri, bukan dengan sample prompt.

Apakah saya memerlukan GPU untuk menjalankan coding agent dengan model sendiri?

Dalam praktiknya, ya. Inferensi hanya dengan CPU dapat berjalan dan cukup untuk pertanyaan tunggal. Namun, agent mengirim banyak permintaan untuk setiap tugas, dan setiap permintaan membaca ulang histori yang panjang. Akibatnya, laju token yang rendah dapat mengubah tugas dua menit menjadi satu jam. Periksa kolom PROCESSOR di ollama ps. Nilai apa pun selain 100% GPU berarti sebagian model berjalan pada CPU, sehingga laju token turun tajam.

#ollama#coding-agent#openai-compatible#local-llm#self-hosted-ai