Ollama کو اپنے coding agent کے ساتھ کیسے چلائیں
Ollama کو coding agent سے جوڑیں: base URL، نظرانداز ہونے والی dummy API key، context length کی خرابی، اور مقامی model کے لیے موزوں کام جانیں۔
آپ کس سے connect ہو رہے ہیں
آپ اپنے coding agent کے ساتھ Ollama استعمال کر سکتے ہیں، اور اس کے لیے توقع سے کم تبدیلی درکار ہوتی ہے۔ آپ صرف ایک base URL تبدیل کرتے ہیں اور ایک model name منتخب کرتے ہیں۔ API key کے field میں پھر بھی کوئی value درکار ہوتی ہے، لیکن local server اسے نظرانداز کرتا ہے، اس لیے کوئی بھی string کام کرے گی۔
Ollama port 11434 پر سنتا ہے اور بیک وقت request کی دو شکلیں فراہم کرتا ہے۔ /v1/chat/completions OpenAI-compatible شکل ہے، اور Ollama کی documentation کے مطابق اس میں key درکار ہے، لیکن اسے نظرانداز کیا جاتا ہے۔ /v1/messages Anthropic-compatible شکل ہے، جس سے Claude Code بات کرتا ہے۔ آپ کا agent پہلے ہی ان دونوں میں سے ایک شکل استعمال کرتا ہے، اس لیے اس کے بارے میں کوئی اور تبدیلی نہیں ہوتی۔
یہ حصہ پانچ منٹ لیتا ہے۔ نتیجہ قابلِ استعمال ہوگا یا نہیں، اس کا انحصار تقریباً ہمیشہ تبدیل نہ کی جانے والی دو settings، context length اور keep-alive، اور model کو اس نوعیت کا کام دینے پر ہوتا ہے جس میں وہ اچھا ہے۔ دونوں کے لیے الگ section دیا گیا ہے، جبکہ حقیقی حدود آخر میں بیان کی گئی ہیں۔
کون سے coding agents مقامی base URL قبول کرتے ہیں
جانچ کا معیار ایک سوال ہے: کیا tool میں base URL کی setting موجود ہے؟ اگر موجود ہو تو وہ آپ کے server سے رابطہ کر سکتا ہے۔
Ollama، Claude Code، OpenCode، Codex، Cline، Roo Code، Zed، JetBrains IDEs اور VS Code کے لیے integration pages فراہم کرتا ہے۔ Aider اپنی Ollama support الگ سے document کرتا ہے۔ اگست 2026 میں coding agent سے عموماً یہی tools مراد ہوتے ہیں۔ یہ سب ایک جیسا API format استعمال نہیں کرتے، اور configurations کی ناکامی کی اصل وجہ یہی فرق ہے۔
- زیادہ تر agents کو OpenAI-compatible endpoint درکار ہوتا ہے۔ انہیں base URL
http://localhost:11434/v1اور کوئی بھی non-empty API key string دیں۔ - Claude Code کسی بھی OpenAI base URL کو قبول نہیں کرتا۔ یہ Anthropic Messages API استعمال کرتا ہے، اس لیے
ANTHROPIC_BASE_URLکوhttp://localhost:11434پر set کرنا ضروری ہے، جہاں Ollama/v1/messagesفراہم کرتا ہے۔ - Codex، OpenAI Responses API استعمال کرتا ہے۔ Ollama
/v1/responsesبھی فراہم کرتا ہے، جو version 0.13.3 میں شامل کیا گیا تھا۔ - جس agent میں base URL setting نہ ہو، اسے redirect نہیں کیا جا سکتا، کیونکہ endpoint client میں built-in ہوتا ہے۔ اس کے بجائے سامنے translation layer رکھیں، مثلاً self-hosted LiteLLM gateway، اور اپنے model کو اس format میں دوبارہ expose کریں جس کا client تقاضا کرتا ہے۔
Ollama یہ configurations آپ کے لیے لکھ سکتا ہے۔ ollama launch opencode آپ کے منتخب کردہ model کے لیے inline config کے ساتھ OpenCode شروع کرتا ہے، ollama launch claude Claude Code کے لیے یہی کام کرتا ہے، اور ollama launch droid --config tool شروع کیے بغیر config لکھتا ہے۔
Ollama انسٹال کریں اور ایسا model حاصل کریں جو tools کو کال کر سکے
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 کو active (running) دکھانا چاہیے۔ اگر ایسا نہ ہو تو journalctl -e -u ollama وجہ دکھاتا ہے۔
model میں tool calling کی سہولت ہونی چاہیے، کیونکہ agent اسی طریقے سے کام کرتا ہے۔ یہ file پڑھتا ہے، patch لکھتا ہے، test چلاتا ہے، پھر failure پڑھ کر دوبارہ کوشش کرتا ہے۔ جو model tool call جاری نہیں کر سکتا، وہ edit کرنے کے بجائے اسے نثر میں بیان کرے گا، اور agent loop میں پھنس جائے گا یا رک جائے گا۔ model کو pull کرنے سے پہلے ollama.com پر اس کے صفحے میں tools label تلاش کریں۔ qwen3-coder:30b میں یہ label موجود ہے، اور August 2026 تک اس tag کا download size 19 GB اور context window 256K ہے۔ اگر آپ کا box صرف CPU پر چلتا ہے یا RAM کم ہے تو VPS پر Qwen 27B tag کے لیے memory کا حساب دکھاتا ہے کہ download شروع کرنے سے پہلے 8 سے 64 GB میں عملی طور پر کیا fit ہو سکتا ہے۔
اب تصدیق کریں کہ server حقیقت میں کون سے names فراہم کرتا ہے:
curl http://localhost:11434/v1/modelsاس response میں موجود strings ہی وہ values ہیں جو آپ کی agent config میں حرف بہ حرف شامل ہونی چاہییں۔ پہلے یہ جانچ لینے سے model-not-found کی زیادہ تر errors حل ہو جاتی ہیں۔ اگر Ollama ابھی انسٹال نہیں ہے تو تفصیلی طریقہ VPS پر Ollama کے ساتھ LLM کی self-hosting میں موجود ہے۔
OpenCode کو Ollama سے منسلک کریں
~/.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 کے تحت موجود value وہ model name ہے جو Ollama کو بھیجا جاتا ہے، اس لیے اسے ollama ls سے بالکل مطابقت رکھنی چاہیے۔ name field صرف model picker میں دکھایا جانے والا label ہے۔ opencode شروع کریں، Ollama provider منتخب کریں، اور journalctl -e -u ollama کو monitor کریں تاکہ تصدیق ہو سکے کہ request کسی اور جگہ کے بجائے آپ کے server تک پہنچی ہے۔ agent کی configuration 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 پر set کیا گیا ہے۔ اگر environment میں حقیقی key موجود ہو تو آپ کی requests hosted API کو بھیجی جائیں گی، جس سے bill آئے گا اور local inference نہیں ہوگی۔ ollama launch claude یہ تمام settings خود configure کر دیتا ہے۔
یہ سمجھیں کہ compatibility layer میں کیا شامل نہیں ہے۔ یہ tool_choice یا prompt caching implement نہیں کرتی، اور اس میں token counting endpoint بھی نہیں ہے۔ اس لیے آپ کو نظر آنے والے token numbers، model کے اپنے tokenizer سے حاصل کردہ تخمینے ہوتے ہیں۔ Claude Code کے ساتھ ایک بڑا system prompt اور tools کا بڑا set بھی آتا ہے، اس لیے اسے chat client کے مقابلے میں زیادہ context درکار ہوتا ہے۔ کون سی چیزیں منتقل ہوتی ہیں اور کون سی نہیں، اس کا وسیع تر جائزہ کیا آپ Claude کو self-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فعال setup پھر بھی بے معنی نتائج کیوں دیتا ہے
یہی وہ section ہے جو اصل اہمیت رکھتا ہے۔ 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 servers، پہلی row میں آتے ہیں: 4,096 tokens۔ آخری row میں موجود 262,144 tokens صرف بڑے GPU کو ملتے ہیں۔
کوئی agent کام شروع کرنے سے پہلے ہی 4096 tokens استعمال کر لیتا ہے۔ system prompt، tool definitions، repository listing اور اس کی کھولی ہوئی پہلی file پہلے ہی اس حد سے بڑے ہوتے ہیں۔ اس کے بعد اصل مسئلہ شروع ہوتا ہے: کوئی error ظاہر نہیں ہوتا۔ Aider کی documentation کے مطابق Ollama window سے تجاوز کرنے والے context کو خاموشی سے خارج کر دیتا ہے۔ قدیم ترین tokens باہر نکل جاتے ہیں، اس لیے model اعتماد کے ساتھ ایسی file کے بارے میں جواب دیتا ہے جسے وہ اب دیکھ نہیں سکتا، یا وہ دو مراحل پہلے دی گئی instruction بھول جاتا ہے۔ زیادہ تر یہ شکایات اسی mechanism کی وجہ سے ہوتی ہیں کہ local model code لکھنے کے لیے بہت کم سمجھ دار ہے۔
Ollama کی documentation کے مطابق agents اور coding tools جیسے tasks کے لیے کم از کم 64000 tokens مقرر کرنے چاہییں۔ اسے server پر set کریں:
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 verification ہے۔ یہ CONTEXT column دکھاتا ہے، اور یہی number ہے جو model کو حقیقتاً ملا۔ آپ کے ID اور SIZE مختلف ہوں گے:
NAME ID SIZE PROCESSOR CONTEXT UNTIL
qwen3-coder:30b a1b2c3d4e5f6 24 GB 100% GPU 64000 4 minutes from nowاسے agent کے بجائے server پر set کریں، اس کی دو وجوہات ہیں۔ OpenAI chat completions schema میں context length کے لیے کوئی field نہیں، اس لیے OpenAI-compatible client اس کی درخواست نہیں کر سکتا۔ دوسری وجہ یہ ہے کہ setting فی server ہوتی ہے، اس لیے جس agent کو آپ اس server سے connect کریں گے، وہ اسے 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 پر منتقل ہو جاتا ہے تو token rate اتنا کم ہو جاتا ہے کہ agent loop ناقابل استعمال بن جاتا ہے، اور local LLM پر tokens per second کی پیمائش ہی وہ طریقہ ہے جس سے آپ اپنے server کی حقیقی حد معلوم کر سکتے ہیں۔ Server خریدنے سے پہلے machine sizing کی تفصیل coding agent VPS کے لیے درکار RAM اور CPU کی مقدار میں موجود ہے۔
درخواستوں کے درمیان model کو loaded رکھیں
By default Ollama آخری request کے 5 منٹ بعد model کو unload کر دیتا ہے۔ یہ chat box کے لیے درست ہے، لیکن agent work کے لیے مناسب نہیں۔ آپ diff پڑھنے کے لیے رک جاتے ہیں، timer ختم ہو جاتا ہے، اور اگلی request پر پہلا token ظاہر ہونے سے پہلے disk سے دسیوں gigabytes کے weights دوبارہ load ہوتے ہیں۔ اس صورت حال سے ایسا محسوس ہوتا ہے جیسے system hang ہو گیا ہو۔
OLLAMA_KEEP_ALIVE ایک duration string لیتا ہے، جیسے 10m یا 24h، seconds کا سادہ number، model کو غیر معینہ مدت تک loaded رکھنے کے لیے -1، یا model کو فوراً unload کرنے کے لیے 0۔ اسے context length کے ساتھ set کریں:
[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 اسے ہر request کے لیے set نہیں کر سکتا۔ آپ کے پاس صرف environment variable کا اختیار ہے۔ جب memory دوبارہ درکار ہو، تو ollama stop qwen3-coder:30b server کو stop کیے بغیر model کو unload کر دیتا ہے۔
علیحدہ سرور پر Ollama چلانا
Ollama، localhost پر bind ہوتا ہے۔ کسی دوسری مشین سے اس تک رسائی کے لیے اسی systemd override میں OLLAMA_HOST=0.0.0.0:11434 سیٹ کریں اور service کو restart کریں۔
یہ کام صرف private network پر کریں۔ Ollama کی دستاویزات کے مطابق local API کے لیے authentication درکار نہیں ہوتی، اس لیے port 11434 کو internet پر کھلا رکھنے کا مطلب ہے کہ کوئی بھی آپ کا hardware استعمال کر سکتا ہے اور وہ تمام مواد پڑھ سکتا ہے جو آپ کا agent بھیجتا ہے۔ دو محفوظ طریقے ہیں۔ bind کو localhost پر برقرار رکھیں اور اپنے laptop سے SSH کے ذریعے port forward کریں:
ssh -N -L 11434:localhost:11434 you@your-vpsآپ کا agent بدستور http://localhost:11434/v1 کو target کرتا رہے گا اور اسے کوئی فرق محسوس نہیں ہوگا۔ دوسرا طریقہ VPN ہے۔ اس میں Ollama کو 0.0.0.0 کے بجائے VPN address پر bind کریں۔ اگر کئی افراد یا کئی agents ایک ہی box استعمال کریں گے تو Ollama کا scheduler اس load کے لیے تیار نہیں ہے، اور Ollama اور vLLM کا موازنہ سے معلوم ہوتا ہے کہ throughput کا فرق کہاں نمایاں ہونا شروع ہوتا ہے۔
مقامی coding model کہاں بہتر ہے، اور کہاں نہیں
آپ کی میزبانی میں چلنے والا model ہر کام کے لیے frontier API کا متبادل نہیں ہوتا۔ یہ چار قسم کے کاموں میں واضح طور پر بہتر رہتا ہے۔
- بڑی تعداد میں mechanical edits، جہاں ہر تبدیلی چھوٹی ہو اور آپ اس کی جانچ کر سکیں۔ پورے repository میں نام تبدیل کرنا، type hints شامل کرنا، docstrings لکھنا، اور comments کا ترجمہ کرنا۔ model کئی گھنٹے چلتا ہے، لیکن بل میں اضافہ نہیں ہوتا۔
- ایسا کام جو آپ کے hardware سے باہر نہیں جانا چاہیے۔ مثلاً confidentiality agreement کے تحت موجود client code، یا ایسا internal repository جسے آپ کسی third party کو بھیجنے کے مجاز نہ ہوں۔
- offline اور air-gapped machines، جہاں کال کرنے کے لیے کوئی hosted API موجود ہی نہ ہو۔
- متوقع لاگت۔ server کی قیمت ادا ہو جانے کے بعد، loop میں tokens خرچ کرنے والے agent کی اضافی لاگت نہیں ہوتی۔ یہ metered API کے بالکل برعکس ہے۔ GPU VPS، API tokens کے مقابلے میں کب لاگت پوری کرتا ہے میں حساب دیا گیا ہے۔
یہ long multi-step tasks میں کمزور رہتا ہے۔ "معلوم کریں کہ یہ test کیوں fail ہوتا ہے، وجہ درست کریں، اور callers کو update کریں" کے لیے مسلسل کئی درست tool calls درکار ہوتے ہیں، جبکہ پوری history context میں موجود رہنی چاہیے۔ معمولی server پر 8B سے 14B range کا model malformed tool call تیار کر سکتا ہے یا چند turns کے بعد plan بھول سکتا ہے۔ پھر آپ اسے task مکمل کرنے سے زیادہ وقت تک steer کرتے رہتے ہیں۔ یہ prompt کا مسئلہ نہیں جسے بہتر الفاظ سے حل کیا جا سکے۔ یہ capacity کا مسئلہ ہے۔
یہ اس وقت بھی کمزور رہتا ہے جب غلطی مہنگی ہو اور آپ ہر line نہیں پڑھیں گے۔ local model کو محدود jobs دیں جن کے output کی آپ جانچ کر سکیں، اور ایسے کاموں کے لیے hosted model استعمال کریں جنہیں آپ step by step verify نہیں کریں گے۔
خرابی کی صورتیں، اور آپ کو نظر آنے والی strings
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 کے مقابل چیک کریں اور وہیں سے string نقل کریں۔ tag نام کا حصہ ہے، اس لیے اگر config میں ایسے tag کا نام دیا گیا ہو جسے آپ نے pull نہیں کیا، تو ملتا جلتا model انسٹال ہونے کے باوجود عمل ناکام ہو جائے گا۔
agent نثر میں جواب دیتا ہے اور کبھی 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 value دکھاتا ہے، کیونکہ environment variable آپ کے shell میں set ہوا، 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 اسی port 11434 پر /v1/messages میں اس API کا مطلوبہ 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 تخمینی ہوتی ہیں۔
میرا local model ایسے code کے بارے میں جواب کیوں دیتا ہے جسے وہ دیکھ نہیں سکتا؟
کیونکہ request اب context window میں فٹ نہیں رہتی، اور اس کا سب سے پرانا حصہ کسی error کے بغیر خارج کر دیا جاتا ہے۔ Ollama اپنی default context اس VRAM کی بنیاد پر مقرر کرتا ہے جو اسے ملتی ہے، اور 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 چلانا چاہیے؟
ایسا سب سے بڑا model منتخب کریں جس پر tools label ہو، جو 64k context window کے ساتھ memory میں فٹ آتا ہو، اور code کے لیے tuned model کو ترجیح دیں۔ کافی VRAM والے GPU server پر qwen3-coder:30b عام انتخاب ہے۔ تقریباً 14B parameters سے کم والا model بھی code کے بارے میں اچھے جوابات دے سکتا ہے، لیکن multi-step edits میں ناکام ہو سکتا ہے، کیونکہ agent کے کام میں tool calls کے دوران formatting کی معمولی غلطیاں بھی مسئلہ پیدا کرتی ہیں۔ Sample prompt کے بجائے اپنی repository کے ایک حقیقی task سے test کریں۔
کیا اپنے model پر coding agent چلانے کے لیے GPU ضروری ہے؟
عملاً ہاں۔ صرف CPU پر inference کام کرتی ہے اور واحد سوالات کے لیے مناسب ہے، لیکن agent ہر task کے دوران بہت سی requests بھیجتا ہے، اور ہر request میں طویل history دوبارہ پڑھی جاتی ہے۔ اس لیے token rate کم ہونے پر دو منٹ کا task ایک گھنٹے میں تبدیل ہو جاتا ہے۔ ollama ps میں PROCESSOR column دیکھیں: 100% GPU کے علاوہ کوئی بھی value اس بات کی نشاندہی کرتی ہے کہ model کا کچھ حصہ CPU پر چل رہا ہے، اور token rate تیزی سے کم ہو جاتی ہے۔