Coding agent सोबत Ollama कसे वापरावे
Ollama ला coding agent शी जोडताना base URL, चालणारी dummy key, context length मुळे येणारी अडचण आणि local model साठी योग्य कामे जाणून घ्या.
तुम्ही कशाशी जोडत आहात
तुम्ही तुमच्या coding agent सोबत Ollama वापरू शकता. ही जोडणी अपेक्षेपेक्षा सोपी आहे. तुम्ही एक base URL बदलता आणि एक model name निवडता. API key फील्डमध्ये मूल्य आवश्यक असते, पण local server ते दुर्लक्षित करतो. त्यामुळे कोणतीही string चालते.
Ollama port 11434 वर ऐकते आणि एकाच वेळी दोन request shapes पुरवते. /v1/chat/completions हा OpenAI-compatible shape आहे. Ollama च्या documentation मध्ये या ठिकाणी key आवश्यक पण दुर्लक्षित असल्याचे सांगितले आहे. /v1/messages हा Anthropic-compatible shape आहे. Claude Code हाच shape वापरतो. तुमचा agent या दोन्हीपैकी एक shape आधीपासून वापरतो. त्यामुळे त्यामध्ये इतर कोणताही बदल करावा लागत नाही.
हा भाग पूर्ण करण्यासाठी पाच मिनिटे लागतात. मात्र परिणाम प्रत्यक्ष वापरण्यायोग्य आहे की नाही, हे जवळजवळ कोणीही न बदलणाऱ्या दोन settings वर अवलंबून असते: context length आणि keep-alive. तसेच model ज्या प्रकारच्या कामासाठी योग्य आहे ते काम त्याला देणे आवश्यक आहे. या दोन्ही settings साठी स्वतंत्र section आहे. शेवटी त्याच्या प्रत्यक्ष मर्यादा स्पष्ट केल्या आहेत.
कोणते coding agents local base URL स्वीकारतात
चाचणी एकाच प्रश्नावर आधारित आहे: या tool मध्ये base URL सेट करण्याची सुविधा आहे का? असल्यास, ते तुमच्या server शी संवाद साधू शकते.
Ollama मध्ये Claude Code, OpenCode, Codex, Cline, Roo Code, Zed, JetBrains IDEs आणि VS Code यांच्यासाठी integration pages उपलब्ध आहेत. Aider साठी Ollama support स्वतंत्रपणे documented आहे. August 2026 मध्ये coding agent म्हटल्यावर सामान्यतः अपेक्षित असलेल्या बहुतेक tools चा यात समावेश होतो. हे सर्व agents एकसारख्या API रचनेशी संवाद साधत नाहीत. सेटअप अयशस्वी होण्याचे मुख्य कारण हेच आहे.
- बहुतेक agents ना OpenAI-compatible endpoint हवा असतो. त्यांना base URL
http://localhost:11434/v1आणि कोणतीही रिकामी नसलेली API key string द्या. - Claude Code कोणताही OpenAI base URL स्वीकारत नाही. ते Anthropic Messages API वापरते. त्यामुळे
ANTHROPIC_BASE_URLमध्येhttp://localhost:11434सेट करणे आवश्यक आहे. Ollama येथे/v1/messagesउपलब्ध करून देते. - Codex OpenAI Responses API वापरते. Ollama
/v1/responsesदेखील उपलब्ध करून देते. ही सुविधा version 0.13.3 मध्ये जोडली गेली. - ज्या agent मध्ये base URL सेटिंग नाही, त्याला redirect करता येत नाही, कारण endpoint client मध्येच निश्चित केलेले असते. त्याऐवजी पुढे translation layer ठेवा. उदाहरणार्थ, self-hosted LiteLLM gateway वापरा आणि client ला आवश्यक असलेल्या रचनेत तुमचे model पुन्हा उपलब्ध करून द्या.
Ollama तुमच्यासाठी या configurations लिहू शकते. ollama launch opencode तुम्ही निवडलेल्या model साठी inline config सह OpenCode सुरू करते, ollama launch claude Claude Code साठी तेच करते, आणि ollama launch droid --config tool सुरू न करता configuration लिहिते.
Ollama स्थापित करा आणि tools कॉल करू शकणारे model डाउनलोड करा
curl -fsSL https://ollama.com/install.sh | sh
systemctl status ollama --no-pager
ollama pull qwen3-coder:30b
ollama lsInstaller systemd unit जोडतो आणि तो सुरू करतो. त्यामुळे systemctl status ollama च्या output मध्ये active (running) दिसले पाहिजे. तसे नसेल, तर journalctl -e -u ollama कारण दाखवते.
Agent कार्य करण्यासाठी model ने tool calling ला support केले पाहिजे. Agent याच पद्धतीने कार्य करते. ते file वाचते, patch लिहिते, test चालवते, त्यानंतर failure वाचून पुन्हा प्रयत्न करते. Tool call emit करता न येणारे model बदल करण्याऐवजी त्याचे वर्णन prose मध्ये करते. त्यामुळे agent पुन्हा पुन्हा तेच कार्य करते किंवा थांबते. Model pull करण्यापूर्वी ollama.com वरील त्याच्या page वर tools label शोधा. qwen3-coder:30b मध्ये हे label आहे. August 2026 पर्यंत हा tag 19 GB download असून त्याची context window 256K आहे. तुमचा box CPU-only असेल किंवा RAM कमी असेल, तर download सुरू करण्यापूर्वी VPS वरील Qwen 27B tag साठीचे memory arithmetic 8 ते 64 GB मध्ये प्रत्यक्षात काय बसते ते दाखवते.
आता server प्रत्यक्षात कोणती names serve करतो ते तपासा:
curl http://localhost:11434/v1/modelsत्या response मधील strings तुमच्या agent config मध्ये character for character असणे आवश्यक आहे. आधी ही तपासणी केल्यास model-not-found errors पैकी बहुतेक errors चे कारण स्पष्ट होते. Ollama अद्याप install केलेले नसेल, तर VPS वर Ollama वापरून LLM self-host करण्याचे सविस्तर मार्गदर्शन पहा.
Ollama कडे OpenCode निर्देशित करा
~/.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"
}
}
}
}
}models अंतर्गत असलेले मूल्य Ollama कडे पाठवले जाणारे model name आहे. त्यामुळे ते ollama ls शी तंतोतंत जुळले पाहिजे. name field हे model picker मधील label इतकेच आहे. opencode सुरू करा, Ollama provider निवडा आणि विनंती तुमच्या server वरच आली आहे, इतरत्र नाही, याची खात्री करण्यासाठी journalctl -e -u ollama monitor करा. Agent स्वतः configure करण्याची माहिती VPS वर OpenCode चालवणे येथे दिली आहे.
Claude Code ला Ollama कडे निर्देशित करा
export ANTHROPIC_AUTH_TOKEN=ollama
export ANTHROPIC_API_KEY=""
export ANTHROPIC_BASE_URL=http://localhost:11434
claude --model qwen3-coder:30bANTHROPIC_API_KEY जाणूनबुजून रिकामी string ठेवले आहे. Environment मध्ये खरी key राहिल्यास तुमच्या विनंत्या hosted API कडे पाठवल्या जातात. त्यामुळे शुल्क आकारले जाते आणि local inference होत नाही. ollama launch claude हे सर्व तुमच्यासाठी सेट करते.
Compatibility layer मध्ये काय उपलब्ध नाही हे समजून घ्या. यात tool_choice किंवा prompt caching लागू केलेले नाही. तसेच token counting endpoint उपलब्ध नाही. त्यामुळे तुम्हाला दिसणारी token संख्या model च्या स्वतःच्या tokenizer कडून मिळालेला अंदाज असते. Claude Code मोठा system prompt आणि मोठा tool set देखील पाठवते. त्यामुळे chat client पेक्षा त्याला अधिक context आवश्यक असतो. काय हस्तांतरित होते आणि काय होत नाही, हा व्यापक प्रश्न Claude स्वतः host करता येतो का येथे समाविष्ट केला आहे.
Ollama कडे Aider निर्देशित करा
export OLLAMA_API_BASE=http://127.0.0.1:11434
aider --model ollama_chat/qwen3-coder:30bAider च्या दस्तऐवजात ollama/ पेक्षा ollama_chat/ prefix वापरण्याची शिफारस केली आहे. .aider.model.settings.yml मध्ये प्रत्येक model साठी context window निश्चित करता येते. एखाद्या model ला server default पेक्षा वेगळी window आवश्यक असल्यास हे उपयुक्त ठरते:
- name: ollama_chat/qwen3-coder:30b
extra_params:
num_ctx: 65536कार्यरत सेटअप असूनही निरर्थक आउटपुट का मिळते
हा महत्त्वाचा भाग आहे. Ollama ला दिसणाऱ्या VRAM (GPU वरील video memory) वरून ते default context length निवडते आणि ही defaults प्रकाशित केलेली आहेत:
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"
}
]बहुतेक VPS plans आणि प्रत्येक CPU-only server पहिल्या row मध्ये येतात: 4,096 tokens. शेवटच्या row मधील 262,144 tokens फक्त मोठ्या GPU ला मिळतात.
Agent कोणतेही काम करण्यापूर्वीच 4096 tokens पाठवतो. System prompt, tool definitions, repository listing आणि तो उघडणारी पहिली file यांची एकूण लांबी आधीच त्यापेक्षा जास्त असते. त्यानंतर नेमके हेच घडते: कोणतीही error दिसत नाही. Aider च्या documentation नुसार window पेक्षा जास्त असलेला context Ollama शांतपणे टाकून देते. सर्वात जुने tokens बाहेर पडतात. त्यामुळे model ज्या file ला आता पाहू शकत नाही तिच्याबद्दलही आत्मविश्वासाने उत्तर देते किंवा तुम्ही दोन steps आधी दिलेली instruction विसरते. Local model code लिहिण्यासाठी खूपच कमी क्षमतेचे आहे अशा बहुतेक reports मागे हीच यंत्रणा असते.
Ollama च्या documentation नुसार agents आणि coding tools सारख्या tasks साठी किमान 64000 tokens सेट केले पाहिजेत. ते server वर सेट करा:
sudo systemctl edit ollama.serviceOverride file मध्ये या lines जोडा:
[Service]
Environment="OLLAMA_CONTEXT_LENGTH=64000"त्यानंतर reload आणि restart करा:
sudo systemctl daemon-reload
sudo systemctl restart ollama
ollama psollama ps ही तपासणी आहे. ती CONTEXT column दाखवते आणि तो number model ला प्रत्यक्षात मिळालेला context दर्शवतो. तुमचे ID आणि SIZE वेगळे असतील:
NAME ID SIZE PROCESSOR CONTEXT UNTIL
qwen3-coder:30b a1b2c3d4e5f6 24 GB 100% GPU 64000 4 minutes from nowहे agent मध्ये नव्हे, server वर सेट करा. याची दोन कारणे आहेत. OpenAI chat completions schema मध्ये context length साठी कोणतेही field नाही. त्यामुळे OpenAI-compatible client त्यासाठी विनंती करू शकत नाही. तसेच हे setting per server असते. त्यामुळे तुम्ही त्या box कडे निर्देशित केलेला प्रत्येक agent ते inherit करतो. एखाद्या model ला वेगळी window हवी असल्यास Modelfile वापरून त्याची copy तयार करा:
FROM qwen3-coder:30b
PARAMETER num_ctx 65536ollama create qwen3-coder-64k -f ModelfileContext विनामूल्य नसतो. मोठ्या window साठी अधिक memory लागते. त्यामुळे PROCESSOR column monitor करा. 100% GPU हे तुम्हाला हवे असलेले value आहे. Model चा काही भाग CPU वर spill झाला की token rate इतका कमी होतो की agent loop वापरण्यायोग्य राहत नाही. तुमच्या box ची वास्तविक मर्यादा शोधण्यासाठी local LLM वर tokens per second मोजणे ही पद्धत वापरा. Server खरेदी करण्यापूर्वी त्याचा आकार ठरवण्याची माहिती coding agent VPS साठी किती RAM आणि CPU आवश्यक आहे येथे दिली आहे.
विनंत्यांदरम्यान मॉडेल लोड ठेवणे
डीफॉल्टनुसार, Ollama शेवटची विनंती झाल्यानंतर 5 मिनिटांनी मॉडेल unload करते. Chat box साठी ही पद्धत योग्य आहे, पण agent कामासाठी योग्य नाही. Diff वाचण्यासाठी तुम्ही थांबता, timer ची मुदत संपते आणि पुढील विनंतीवर पहिला token दिसण्यापूर्वी disk वरून दहापट gigabytes चे weights पुन्हा load होतात. त्यामुळे प्रक्रिया hang झाल्यासारखी दिसते.
OLLAMA_KEEP_ALIVE मध्ये 10m किंवा 24h सारखा duration string, seconds ची साधी संख्या, मॉडेल indefinitely loaded ठेवण्यासाठी -1 किंवा ते त्वरित unload करण्यासाठी 0 देता येते. ते context length सोबत सेट करा:
[Service]
Environment="OLLAMA_CONTEXT_LENGTH=64000"
Environment="OLLAMA_KEEP_ALIVE=-1"keep_alive हे request field केवळ Ollama च्या native /api/generate आणि /api/chat endpoints मध्ये उपलब्ध आहे; compatibility endpoints मध्ये नाही. त्यामुळे agent ते प्रत्येक विनंतीसाठी सेट करू शकत नाही. तुमच्याकडे असलेला एकमेव पर्याय environment variable आहे. memory पुन्हा उपलब्ध हवी असल्यास, server थांबवता ollama stop qwen3-coder:30b मॉडेल unload करते.
वेगळ्या सर्व्हरवर Ollama चालवणे
Ollama localhost शी bind होते. दुसऱ्या मशीनवरून त्याच्यापर्यंत पोहोचण्यासाठी, त्याच systemd override मध्ये OLLAMA_HOST=0.0.0.0:11434 सेट करा आणि सेवा पुन्हा सुरू करा.
हे फक्त private network वर करा. Ollama च्या दस्तऐवजानुसार local API साठी authentication आवश्यक नाही. त्यामुळे port 11434 इंटरनेटवर खुला असल्यास, कोणतीही व्यक्ती तुमचे hardware वापरू शकते आणि तुमचा agent जे काही पाठवतो ते वाचू शकते. दोन सुरक्षित पर्याय आहेत. bind localhost वरच ठेवा आणि तुमच्या laptop वरून SSH द्वारे port forward करा:
ssh -N -L 11434:localhost:11434 you@your-vpsतुमचा agent http://localhost:11434/v1 कडेच निर्देश करत राहतो आणि त्याला कोणताही फरक जाणवत नाही. दुसरा पर्याय VPN आहे. त्यामध्ये Ollama ला 0.0.0.0 ऐवजी VPN address शी bind करा. एकाच box वर अनेक लोक किंवा अनेक agents सामायिकपणे काम करणार असल्यास, Ollama चे scheduler त्या भारासाठी तयार केलेले नाही. Ollama आणि vLLM मधील तुलना यात throughput मधील फरकामुळे अडचण कुठून सुरू होते ते दाखवते.
स्थानिक coding model कुठे उपयुक्त ठरते आणि कुठे ठरत नाही
तुम्ही होस्ट केलेल्या model वर चालणारा agent प्रत्येक कामासाठी frontier API ची जागा घेत नाही. मात्र चार प्रकारच्या कामांमध्ये तो स्पष्टपणे उपयुक्त ठरतो.
- मोठ्या प्रमाणातील यांत्रिक बदल, ज्यामध्ये प्रत्येक बदल लहान असतो आणि तुम्ही तो तपासू शकता. Repository मध्ये सर्वत्र renaming करणे, type hints जोडणे, docstrings लिहिणे आणि comments चे भाषांतर करणे. Model अनेक तास चालू राहतो, पण खर्च वाढत नाही.
- तुमच्या hardware बाहेर जाऊ नये असे काम. Confidentiality agreement अंतर्गत असलेला client code किंवा third party कडे पाठवण्याची परवानगी नसलेली internal repository.
- Offline आणि air-gapped machines, जिथे call करण्यासाठी hosted API उपलब्धच नसते.
- अंदाज करता येणारा खर्च. Server साठी पैसे भरल्यानंतर loop मध्ये tokens वापरणाऱ्या agent साठी अतिरिक्त खर्च होत नाही. Metered API मध्ये याच्या उलट परिस्थिती असते. GPU VPS चा API tokens च्या तुलनेत खर्च समसमान कधी होतो येथे त्याचे गणित दिले आहे.
दीर्घ multi-step कामांमध्ये तो कमी पडतो. "ही test का fail होते ते शोधा, कारण दुरुस्त करा आणि callers अपडेट करा" यासाठी सलग अनेक अचूक tool calls आवश्यक असतात आणि संपूर्ण history context मध्ये ठेवावी लागते. मध्यम server वर 8B ते 14B श्रेणीतील model malformed tool call तयार करू शकतो किंवा काही turns नंतर plan विसरू शकतो. त्यामुळे काम पूर्ण करण्यापेक्षा model ला दिशा देण्यातच अधिक वेळ जातो. हा prompt चा प्रश्न नाही, जो अधिक चांगल्या prompt ने सोडवता येईल. ही क्षमता मर्यादा आहे.
चूक महागात पडते आणि तुम्ही प्रत्येक line वाचणार नसाल, तेव्हाही तो कमी पडतो. स्थानिक model ला असे मर्यादित काम द्या ज्याचा output तुम्ही पडताळू शकता. ज्या कामाची step by step तपासणी तुम्ही करणार नाही, त्यासाठी hosted model वापरा.
अपयशाच्या स्थिती आणि दिसणाऱ्या स्ट्रिंग
curl: (7) Failed to connect to localhost port 11434 after 0 ms: Connection refused. सर्व्हर सुरू नाही किंवा agent वेगळ्या host कडे निर्देश करत आहे. systemctl status ollama चालवा आणि त्यानंतर journalctl -e -u ollama चालवा.
agent कळवतो की model अस्तित्वात नाही. तुमच्या config मधील नाव server उपलब्ध करून देत असलेल्या नावाशी जुळत नाही. ते curl http://localhost:11434/v1/models मधील नावाशी तुलना करा आणि तेथील स्ट्रिंग कॉपी करा. tag हा नावाचाच भाग आहे. त्यामुळे तुम्ही कधीही pull न केलेल्या tag चे नाव config मध्ये दिल्यास, तत्सम model स्थापित असला तरीही अपयश येते.
agent prose मध्ये उत्तर देतो आणि कोणतीही file संपादित करत नाही. model मध्ये tool support नसू शकतो किंवा request आणि त्याच्या tool definitions मुळे context window आधीच भरलेली असू शकते. model page वरील tools label तपासा. त्यानंतर ollama ps मधील CONTEXT column तपासा.
पहिल्या token पूर्वी बराच वेळ शांतता असते आणि त्यानंतर वेग सामान्य असतो. keep-alive ची मुदत संपली आहे आणि weights पुन्हा disk वरून वाचले जात आहेत. OLLAMA_KEEP_ALIVE सेट करा.
model नुकतीच वाचलेल्या file शी विसंगत उत्तर देतो. हे context truncation आहे. ollama ps मध्ये साधारणपणे तुम्ही सेट केलेल्या मूल्यापेक्षा लहान CONTEXT मूल्य दिसते, कारण environment variable तुमच्या shell मध्ये गेले आणि systemd unit मध्ये गेले नाही.
सर्व काही कार्य करते, पण हळू; आणि PROCESSOR हे 100% GPU नाही. model आणि त्याचा context VRAM मध्ये बसत नाही. context length कमी करा किंवा लहान model अथवा लहान quantisation वापरा.
FAQ
मी Claude Code ला Ollama कडे निर्देशित करू शकतो का?
होय, परंतु OpenAI-compatible URL सह नाही. Claude Code हे Anthropic Messages API वापरते आणि Ollama त्याच पोर्ट 11434 वर /v1/messages येथे हा format उपलब्ध करून देते. ANTHROPIC_BASE_URL=http://localhost:11434, ANTHROPIC_AUTH_TOKEN=ollama आणि रिकामे ANTHROPIC_API_KEY export करा, त्यानंतर ते claude --model qwen3-coder:30b सह सुरू करा. ollama launch claude ही settings तुमच्यासाठी लिहिते. Compatibility layer मध्ये tool_choice किंवा prompt caching लागू केलेले नाही. तसेच token counting endpoint उपलब्ध नाही. त्यामुळे दाखवलेली token counts ही अंदाजे असतात.
माझे स्थानिक model त्याला न दिसणाऱ्या code विषयी उत्तर का देते?
कारण request context window मध्ये बसत नाही आणि त्यातील सर्वात जुना भाग कोणतीही error न देता काढून टाकला जातो. Ollama ला सापडणाऱ्या VRAM वरून ते आपला default context ठरवते. 24 GiB पेक्षा कमी VRAM असल्यास हा default 4,096 tokens असतो. Agent चा system prompt आणि tool definitions यापेक्षा जास्त जागा स्वतःच घेतात. systemd unit मध्ये OLLAMA_CONTEXT_LENGTH=64000 सेट करा, Ollama restart करा आणि ollama ps मधील CONTEXT column मध्ये नवीन value दिसते का ते तपासा.
VPS वर coding agent साठी कोणते model चालवावे?
64k context window सह memory मध्ये बसणारे आणि tools label असलेले सर्वात मोठे model निवडा. Code साठी tuning केलेल्या model ला प्राधान्य द्या. पुरेशी VRAM असलेल्या GPU server वर qwen3-coder:30b हा सामान्य पर्याय आहे. अंदाजे 14B parameters पेक्षा कमी असलेले model code विषयीच्या प्रश्नांची चांगली उत्तरे देऊ शकते, परंतु multi-step edits करताना अपयशी ठरू शकते. कारण tool calls मधील formatting च्या छोट्या चुका agent च्या कामावर मोठा परिणाम करतात. Sample prompt ऐवजी तुमच्या स्वतःच्या repository मधील एका प्रत्यक्ष task सह चाचणी करा.
माझ्या स्वतःच्या model वर coding agent चालवण्यासाठी GPU आवश्यक आहे का?
व्यवहारात होय. CPU-only inference कार्य करते आणि एकेरी प्रश्नांसाठी पुरेसे असते. परंतु agent प्रत्येक task साठी अनेक requests पाठवते आणि प्रत्येक request मध्ये दीर्घ history पुन्हा वाचली जाते. त्यामुळे token rate कमी असल्यास दोन मिनिटांचा task पूर्ण होण्यासाठी एक तास लागू शकतो. ollama ps मधील PROCESSOR column तपासा. 100% GPU व्यतिरिक्त कोणतीही value दिसत असल्यास model चा काही भाग CPU वर चालत आहे. त्यामुळे token rate मोठ्या प्रमाणात कमी होते.