Iva ٹیلیگرام AI اسسٹنٹ کو خود کیسے ہوسٹ کریں
اپنے چھوٹے VPS پر Iva کو بغیر کسی اوپن پورٹ یا ڈومین کے چلائیں۔ یہ گائیڈ v0.3.13 کے لیے systemd سروسز اور Obsidian والٹ کے ساتھ محفوظ سیٹ اپ کا طریقہ کار بتاتی ہے۔
آپ کیا بنا رہے ہیں
Iva ایک self-hosted Telegram AI assistant ہے۔ یہ ان چند ایپس میں شامل ہے جنہیں کسی inbound port کو کھولے بغیر اور کسی domain کی طرف اشارہ کیے بغیر deploy کیا جا سکتا ہے۔ certificate کی بھی ضرورت نہیں، کیونکہ اس server پر public requests کے لیے کچھ بھی listen نہیں کر رہا۔ service خود Telegram سے outbound connection قائم کرتی ہے، اسے کھلا رکھتی ہے، اور reply کے ذریعے آپ کے messages پڑھتی ہے۔ باقی تمام طریقہ کار اسی ایک outbound connection پر منحصر ہے۔
Iva MIT licensed ہے اور Node میں لکھی گئی ہے۔ اس کی memory سادہ markdown files کے ایک folder میں رہتی ہے، جسے Obsidian براہ راست کھول سکتا ہے۔ اس لیے آپ کے بارے میں محفوظ کی گئی notes ایپ کے بغیر بھی readable رہتی ہیں۔ یہ guide 6 August 2026 کو published release v0.3.13 کو مقرر کرتی ہے۔ repository کا نام بعد میں smixs/iva سے بدل کر smixs/iva-agent کر دیا گیا، اور نیچے دیے گئے commands نیا نام استعمال کرتے ہیں۔
زیادہ تر self-hosted software کا آغاز DNS (domain name system) record اور Certbot سے جاری کردہ Let's Encrypt certificate سے ہوتا ہے۔ Iva اس layer کو مکمل طور پر چھوڑ دیتا ہے۔ اسی لیے ایسے firewall کے پیچھے موجود چھوٹا VPS، جو صرف SSH کی اجازت دیتا ہو، مکمل deployment کے لیے کافی ہے۔
Iva کو اوپن پورٹس کی ضرورت کیوں نہیں ہے
iva-telegram-poll.service ایک لانگ پولنگ برج ہے۔ یہ Telegram کی getUpdates API کو کال کرتا ہے اور جواب کا انتظار کرتا ہے، لہذا ہر کنکشن آپ کے سرور سے شروع ہوتا ہے۔ Telegram کبھی بھی واپس کنیکٹ نہیں کرتا، جس کا مطلب ہے کہ کنفیگر کرنے کے لیے کوئی ریورس پراکسی نہیں ہے اور نہ ہی سرٹیفکیٹ کی تجدید (renewal) کے بارے میں فکر کرنے کی ضرورت ہے۔
ایجنٹ خود صرف 127.0.0.1 پورٹ 8723 پر لسن (listen) کرتا ہے۔ پروجیکٹ کی دستاویزات اس بارے میں واضح ہیں: پورٹ 8723 کو ایکسپوز نہ کریں، اور آپ جو بھی ریورس پراکسی اس کے سامنے لگائیں، اسے بیئرر ٹوکن (bearer token) کی ضرورت کو برقرار رکھنا چاہیے۔ انسٹالیشن کے بعد بائنڈ ایڈریس چیک کریں۔
sudo ss -tlnp | grep 8723ایڈریس کو 127.0.0.1:8723 پڑھا جانا چاہیے۔ وائلڈ کارڈ ایڈریس جیسے کہ 0.0.0.0:8723 کا مطلب ہے کہ ایجنٹ کے HTTP روٹس انٹرنیٹ سے قابل رسائی ہیں، اور آپ کو بوٹ کو کوئی بھی نجی معلومات بھیجنے سے پہلے اسے ٹھیک کرنا چاہیے۔
لہذا فائر وال بند رہتی ہے۔ اسے فعال کرنے سے پہلے SSH کی اجازت دیں، کیونکہ ufw enable بغیر SSH رول کے اس سیشن کو بند کر دیتا ہے جس میں آپ ٹائپ کر رہے ہیں۔
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw statusایک لائن installer دراصل کیا کرتا ہے
پروجیکٹ کا مرکزی صفحہ آپ کو ایک ایسی command دیتا ہے جو GitHub سے ایک script کو bash میں pipe کرتی ہے۔ پہلے script پڑھیں، کیونکہ یہ صرف ایک program install کرنے سے کہیں زیادہ کام کرتی ہے۔
curl -fsSL https://raw.githubusercontent.com/smixs/iva-agent/main/install.sh -o iva-install.sh
less iva-install.sh- یہ معلوم شدہ package manager کے ذریعے system packages install کرتی ہے:
git،gh،python3،ffmpeg،pandocاورpoppler-utils۔ - جب machine میں 1.5 GB سے کم RAM ہو اور کوئی swap موجود نہ ہو تو یہ
/swapfileپر 2 GB کی swapfile بناتی ہے، کیونکہ اس کے بغیر build ختم کر دی جاتی ہے۔ - یہ nvm install کرتی ہے، پھر Node 24 install کرتی ہے، جو Iva کے لیے کم از کم مطلوبہ version ہے۔
- یہ Python package manager،
uv، کو~/.local/binمیں install کرتی ہے۔ - یہ repository کو
~/ivaمیں clone کرتی ہے اورnpm ciچلاتی ہے۔ - یہ
agent-browserکو global npm package کے طور پر install کرتی ہے۔ اس کے بعد یہ Chromium download کرتا ہے، اور Google Workspace CLI،gws، کو sudo کے بغیر~/.localمیں رکھتا ہے۔ - یہ setup wizard چلاتی ہے، project build کرتی ہے، اور vault بناتی ہے۔
- یہ
ivacommand کو~/.local/binمیں لکھتی ہے اور systemd user units install کرتی ہے۔
ایک command کے لیے یہ کافی زیادہ software ہے۔ اس سے README کی یہ ہدایت بھی واضح ہوتی ہے کہ installation عام user کے طور پر کریں، root کے طور پر نہیں۔ بعد میں agent کا shell tool انہی privileges کے ساتھ چلتا ہے جو installer کے پاس تھے۔ Script صرف package installations اور swapfile کے لیے sudo چلاتی ہے، اور ممکن ہے کہ Chromium step کے دوران ایک بار مزید چلائے۔ اس مقصد کے لیے ایک helper استعمال ہوتا ہے جو آپ کے پہلے ہی root ہونے کی صورت میں commands براہ راست چلاتا ہے۔
تنصیب سے پہلے ایک مخصوص صارف بنائیں
Iva کے لیے ایک الگ اکاؤنٹ بنائیں۔ ایجنٹ Node کے child_process کے ذریعے میزبان (host) پر shell کمانڈز چلاتا ہے، جس میں کوئی container یا sandbox نہیں ہوتا، لہذا جس اکاؤنٹ کے تحت یہ چلتا ہے وہی سیکیورٹی کی حد (security boundary) ہے۔
sudo adduser --disabled-password --gecos "" iva
sudo usermod -aG sudo iva
sudo install -d -m 700 -o iva -g iva /home/iva/.ssh
sudo cp ~/.ssh/authorized_keys /home/iva/.ssh/authorized_keys
sudo chown iva:iva /home/iva/.ssh/authorized_keys
sudo chmod 600 /home/iva/.ssh/authorized_keys
sudo loginctl enable-linger ivaenable-linger اہم ہے کیونکہ Iva بطور systemd user units چلتا ہے۔ Linger کے بغیر، systemd اس صارف کی سروسز کو اس وقت بند کر دیتا ہے جب ان کا آخری سیشن ختم ہوتا ہے، لہذا SSH بند کرتے ہی اسسٹنٹ بھی بند ہو جائے گا۔ یہی اصول ہر اس service and timer پر لاگو ہوتا ہے جسے آپ خود systemd کے تحت لکھتے ہیں۔
اکاؤنٹ کو صرف اس وقت sudo کی ضرورت ہوتی ہے جب انسٹالر پیکیجز شامل کر رہا ہو۔ تنصیب مکمل ہونے پر یہ استحقاق واپس لے لیں۔
sudo deluser iva sudoاس صارف کے طور پر براہ راست SSH کے ذریعے لاگ ان کریں۔ وہ shell جسے آپ sudo -iu iva کے ساتھ کھولتے ہیں، اس میں نہ تو DBUS_SESSION_BUS_ADDRESS سیٹ ہوتا ہے اور نہ ہی XDG_RUNTIME_DIR، لہذا ہر systemctl --user کمانڈ Failed to connect to bus کے ساتھ ناکام ہو جاتی ہے۔ یہ حد مقرر کرنا بالکل ویسا ہی عمل ہے جیسا کہ کم سے کم استحقاق والے صارفین کے تحت سروسز چلانا۔
bash کو pipe کرنے کے بجائے مخصوص release انسٹال کریں
Installer میں ایک مفید خصوصیت موجود ہے۔ کسی بھی چیز کو clone کرنے سے پہلے یہ چیک کرتا ہے کہ جس directory میں script موجود ہے، وہاں پہلے سے package.json موجود ہے یا نہیں، جس میں "eve" شامل ہو۔ اگر موجود ہو تو یہ اسی checkout کو build کرتا ہے اور clone کو چھوڑ دیتا ہے۔ اس طرح آپ خود version منتخب کر سکتے ہیں۔
git clone --branch v0.3.13 https://github.com/smixs/iva-agent.git ~/iva
cd ~/iva
git log -1 --oneline
bash install.shاب آپ کو معلوم ہے کہ کون سا code چل رہا ہے۔ جب script main کو اس وقت کی موجودہ حالت میں clone کرتی ہے، تو آپ کو یہ معلوم نہیں ہوتا۔ Iva نے 4 سے 6 August 2026 کے درمیان پانچ releases جاری کیے، اس لیے آج صبح کا main اور آج سہ پہر کا main ایک ہی program نہیں ہیں۔
Tag checkout کرنے سے git detached HEAD state میں چلا جاتا ہے۔ یہ درست طور پر چلتا ہے، لیکن اس کی حد سمجھنا ضروری ہے: iva update checkout کو update branch پر آگے لے جاتا ہے، اس لیے pin ایک معلوم نقطۂ آغاز ہوتا ہے، مستقل freeze نہیں۔ iva version package version اور git commit دکھاتا ہے، اس لیے آپ ہمیشہ دیکھ سکتے ہیں کہ موجودہ checkout کہاں ہے۔
جان بوجھ کر کسی بعد کے release پر جانے کے لیے tags کی فہرست دکھائیں، نیچے v0.3.13 کی جگہ منتخب tag کا checkout کریں، پھر checkout کے اندر سے installer دوبارہ چلائیں۔ Installer میں release tag کے لیے کوئی setting موجود نہیں۔ اس کے دستاویزی environment variables REPO_URL، BRANCH اور INSTALL_DIR ہیں، اس لیے pin مقرر کرنے کا واحد طریقہ git checkout ہے۔
cd ~/iva
git fetch --tags
git tag --list 'v*' | sort -V | tail -5
git checkout v0.3.13
bash install.sh --skip-setup
iva restart--skip-setup wizard کو پہلے سے درست کام کرنے والے .env پر دوبارہ چلنے سے روکتا ہے۔ اس کے بعد iva version چلائیں تاکہ اس commit کی تصدیق ہو جائے جس پر checkout پہنچا ہے۔
پانچ جادوئی مراحل، اور ان کے لیے درکار کلیدیں (keys)
- ماڈل فراہم کنندہ اور ماڈل۔
MODEL_PROVIDER،opencode،ollama،openrouterیاcodexکو قبول کرتا ہے۔ وزرڈ (wizard) کلید کی لائیو تصدیق کرتا ہے اور ان ماڈلز کی فہرست دکھاتا ہے جو آپ کے پلان میں دستیاب ہیں۔ - آواز اور تلاش۔ ایک Deepgram کلید وائس نوٹس کو ٹرانسکرائب کرتی ہے۔ ویب سرچ کلید (Tavily، Exa، Parallel یا Brave) اختیاری ہے۔
- @BotFather سے حاصل کردہ Telegram بوٹ ٹوکن، جس کی تصدیق
getMeاینڈ پوائنٹ کے ذریعے کی جاتی ہے۔ - رسائی کنٹرول۔ آپ اپنے بوٹ کو ایک پیغام بھیجتے ہیں، اور وزرڈ
getUpdatesسے آپ کی عددی یوزر آئی ڈی (numeric user ID) پڑھ لیتا ہے۔ - سسٹم کی ترتیبات۔ IANA ٹائم زون، والٹ ڈائریکٹری، اور لوکل پورٹ، جو بائی ڈیفالٹ 8723 ہے۔
ان میں سے دو ایسی انحصاریاں (dependencies) ہیں جنہیں "ایک کمانڈ" کا فریم ورک چھپا دیتا ہے۔ Iva کے ساتھ کوئی ماڈل نہیں آتا، لہذا کسی بھی جواب سے پہلے اسے ایک پیڈ ماڈل پلان یا API کلید کی ضرورت ہوتی ہے۔ یہ خود آڈیو کو ٹرانسکرائب بھی نہیں کرتا، اس لیے وائس نوٹس کے لیے ایک الگ سروس درکار ہوتی ہے۔ Deepgram کا nova-3 ماڈل، DEEPGRAM_LANGUAGE=multi کے ساتھ زبان کی شناخت کرتا ہے، اور نئے Deepgram اکاؤنٹس کو ابتدائی کریڈٹس ملتے ہیں جو مہینوں کے ذاتی استعمال کے لیے کافی ہیں۔ ٹیکسٹ صرف ماڈل کلید کے ساتھ کام کرتا ہے۔ صرف آواز کے لیے Deepgram پر انحصار ہوتا ہے۔
وزرڈ کی لکھی ہوئی فائل کو چیک کریں۔
grep -E '^(MODEL_PROVIDER|TELEGRAM_ALLOWED_USER_IDS|ASSISTANT_VAULT_DIR|IVA_PORT)=' ~/iva/.env
ls -l ~/iva/.envls کو -rw-------، موڈ 0600 پرنٹ کرنا چاہیے، کیونکہ اس فائل میں وہ تمام کلیدیں موجود ہیں جو آپ نے ابھی پیسٹ کی ہیں۔ TELEGRAM_ALLOWED_USER_IDS میں آپ کی عددی آئی ڈی ہونی چاہیے۔ الاؤ لسٹ (allowlist) ڈیفالٹ طور پر بند رہتی ہے، لہذا خالی ویلیو کا مطلب ہے کہ Iva کسی کو جواب نہیں دے گا۔
ماڈل کو پروسیس شروع ہونے پر صرف ایک بار پڑھا جاتا ہے۔ MODEL_PROVIDER میں ترمیم کرنے یا .env میں ماڈل کا نام تبدیل کرنے سے تب تک کچھ نہیں بدلے گا جب تک آپ iva restart رن نہیں کرتے۔ openrouter پر ماڈل کا نام ایک وینڈر سلگ (vendor slug) ہوتا ہے جیسے کہ anthropic/claude-sonnet-4.5، نہ کہ صرف ایک سادہ نام۔ codex پر کوئی API کلید نہیں ہوتی: iva login موجودہ ChatGPT سبسکرپشن میں سائن ان کرتا ہے۔
Iva چلانے کی ماہانہ لاگت کیا ہے؟
اس چارٹ کے پیچھے کا ڈیٹا
[
{
"plan": "Small VPS, always on",
"usd_per_month": 5
},
{
"plan": "OpenCode Go model plan",
"usd_per_month": 10
},
{
"plan": "Ollama Cloud model plan",
"usd_per_month": 20
},
{
"plan": "Deepgram voice, starter credits",
"usd_per_month": 0
},
{
"plan": "Tavily web search, free tier",
"usd_per_month": 0
},
{
"plan": "Cheapest complete setup",
"usd_per_month": 15
}
]یہ اکتوبر 2026 تک شائع شدہ فہرست قیمتیں ہیں، پیمائش شدہ اخراجات نہیں۔ 5 امریکی ڈالر کا ایک چھوٹا VPS اور 10 ڈالر کا OpenCode Go plan سب سے کم لاگت والا مکمل setup ہے، جس کی ماہانہ لاگت تقریباً 15 ڈالر بنتی ہے۔ OpenCode کے اپنے Go صفحے پر یہی ماہانہ قیمت درج ہے اور پہلے ماہ کی کوئی رعایت نہیں ہے۔ Iva کی README میں بھی اسی stack کی کل لاگت تقریباً 14 سے 15 ڈالر دی گئی ہے۔ Ollama Cloud کا Pro plan دوسری مقررہ قیمت والا اختیار ہے، جس کی لاگت 20 ڈالر ہے۔ plan میں شامل credits سے زیادہ استعمال کی رقم الگ وصول کی جاتی ہے۔ Deepgram کے ابتدائی credits باقی رہنے تک Voice کی لاگت 0 ہے۔
OpenRouter کو یہاں شامل نہیں کیا گیا کیونکہ اس میں استعمال کے مطابق ادائیگی ہوتی ہے، اس لیے bill آپ کے استعمال کے ساتھ بدلتا ہے۔ اسی اختیار کی نگرانی ضروری ہے: ہر turn میں 131072 token کی context window رکھنے والا assistant مقررہ قیمت والے plan سے تیزی سے زیادہ خرچ کر سکتا ہے۔ context window variable کو model کے حقیقی سائز پر set کریں، کیونکہ بڑھائی ہوئی value صرف tokens ضائع کرتی ہے۔
دو سروسز اور دو ٹائمرز
iva.serviceایجنٹ کو خود چلاتا ہے۔iva-telegram-poll.serviceلانگ پولنگ برج کو چلاتا ہے جو Telegram سے رابطہ کرتا ہے۔iva-memory-doctor.timerصبح 05:00 بجے متحرک ہوتا ہے اور والٹ (vault) پر رات کی دیکھ بھال (maintenance) کا عمل مکمل کرتا ہے۔iva-update-check.timerصبح 10:00 بجے متحرک ہوتا ہے اور چیک کرتا ہے کہ آیا کوئی نیا release دستیاب ہے۔iva-telegram-userbot.serviceصرف تب موجود ہوتا ہے اگر آپ نے اختیاری Telethon پراکسی سیٹ اپ کی ہو۔
iva status
systemctl --user status iva.service iva-telegram-poll.service
systemctl --user list-timers
iva logs polliva status دونوں سروسز اور دونوں واچ ڈاگ ٹائمرز کی رپورٹ دیتا ہے۔ systemctl --user list-timers ہر ٹائمر کے لیے اگلا رن ٹائم پرنٹ کرتا ہے، جس سے آپ تصدیق کر سکتے ہیں کہ میموری ڈاکٹر آج رات واقعی چلے گا۔ دونوں سروسز کو active (running) حالت میں ہونا چاہیے۔ اگر کوئی سروس لوپ میں ری سٹارٹ ہو رہی ہو، تو journalctl --user -u iva.service -n 100 اس کی وجہ بتاتا ہے۔
ڈیبگنگ کے دوران یہ تقسیم اہم ہے۔ برج زندہ اور پولنگ کر سکتا ہے جبکہ ایجنٹ بند ہو، ایسی صورت میں Telegram آپ کا پیغام تو قبول کر لے گا لیکن کوئی جواب نہیں آئے گا۔ iva logs poll برج کے لاگز دکھاتا ہے، iva logs ایجنٹ کے لاگز دکھاتا ہے، لہذا یہ دونوں لاگز آپ کو بتاتے ہیں کہ کون سا حصہ خراب ہے۔
Obsidian vault کہاں واقع ہے، اور اس کا بیک اپ کیسے لیا جائے
ASSISTANT_VAULT_DIR بائی ڈیفالٹ انسٹالیشن ڈائریکٹری کے اندر vault پر ہوتا ہے، لہذا میموری ~/iva/vault پر موجود ہوتی ہے۔ یہ کوڈ سے الگ اپنا ایک git repository ہے، جو آپ کو Iva کو اپ ڈیٹ کرتے وقت اپنے نوٹس کو چھیڑے بغیر کام کرنے کی سہولت دیتا ہے۔
vault/CORE.mdپائیدار حقائق اور مستقل ترجیحات کو محفوظ رکھتا ہے، جس کی حد 1200 کریکٹرز ہے، اور یہ ہر سسٹم پرامپٹ میں شامل ہوتا ہے۔vault/daily/YYYY-MM-DD.mdدن کا ٹرانسکرپٹ ہے، جسے صرف append کیا جاتا ہے۔vault/cards/رابطوں، پروجیکٹس، فیصلوں، آئیڈیاز اور نوٹس کے لیے ٹائپ شدہ کارڈز رکھتا ہے۔vault/summaries/daily/،weekly/،monthly/اورyearly/رول اپس (rollups) کو رکھتے ہیں۔vault/attachments/فائلوں کو تاریخ کے لحاظ سے رکھتا ہے، اورvault/.graph/لنک گراف کو رکھتا ہے۔vault/schema.jsonکارڈ کی اقسام اور ڈی کے (decay) کے اصولوں کی وضاحت کرتا ہے۔
رول اپس عمل کے اندر ایک شیڈول پر چلتے ہیں۔ 04:00 بجے ہونے والا روزانہ کا عمل گزشتہ روز کے ٹرانسکرپٹ کو کارڈز اور خلاصے میں بدل دیتا ہے اور CORE.md کو دوبارہ لکھتا ہے، پھر ہفتہ وار، ماہانہ اور سالانہ عمل باری باری انہیں کمپریس کرتے ہیں۔ 05:00 بجے میموری ڈاکٹر بغیر کسی ماڈل کے ایک ڈیٹرمینسٹک پاس چلاتا ہے: یہ اسکیمہ کو نافذ کرتا ہے، لنک گراف کو دوبارہ بناتا ہے، انڈیکس کو دوبارہ جنریٹ کرتا ہے، پھر کمٹ اور پش کرتا ہے۔
وہ پش آپ کا بیک اپ ہے، اور یہ وہ مرحلہ ہے جسے لوگ نظر انداز کر دیتے ہیں۔ اگر والٹ (vault) کا کوئی git remote نہیں ہے، تو ڈاکٹر gh کے ذریعے ایک نجی GitHub repository بنانے کی کوشش کرتا ہے، جس کے لیے تصدیق شدہ GitHub CLI کی ضرورت ہوتی ہے۔
gh auth login
systemctl --user start iva-memory-doctor.service
cd ~/iva/vault && git log --oneline -3آج کی تاریخ والی کمٹ کا مطلب ہے کہ عمل چل چکا ہے اور والٹ کمٹ ہو چکا ہے۔ لاگ میں gh not available انتباہات کا مطلب اس کے برعکس ہے: والٹ کو برقرار تو رکھا گیا ہے لیکن یہ سرور سے باہر نہیں جاتا، لہذا ایک ڈیڈ VPS آپ کی میموری کو اپنے ساتھ لے جائے گا۔
ایک کاپی اپنے پاس بھی رکھیں جس پر آپ کا کنٹرول ہو۔
tar czf ~/iva-vault-backup.tgz -C ~/iva vaultاس فائل کو scp کے ساتھ باکس سے باہر کاپی کریں، پھر اسے سرور سے ڈیلیٹ کر دیں۔ Obsidian میں میموری پڑھنے کے لیے، Obsidian کو والٹ ریپوزٹری کے کلون کی طرف پوائنٹ کریں۔ Wikilinks اور backlinks ویسے ہی کام کرتے ہیں، اور گراف ویو بھی۔ کارڈز اور CORE.md کو ہاتھ سے ایڈٹ کرنا محفوظ ہے۔ MOC.md اور .graph/ کو نہ چھیڑیں، کیونکہ نائٹلی پاس دونوں کو دوبارہ جنریٹ کرتا ہے۔
اپنے والٹ کو اپنی زندگی کا لاگ سمجھیں
یہ ڈائریکٹری اس بات کا ایک تاریخی ریکارڈ ہے کہ آپ نے کیا کہا، آپ کن لوگوں سے ملے اور آپ نے کیا فیصلے کیے، اور یہ سب ایک ایسے مشین پر ہے جسے آپ کرائے پر لیتے ہیں۔ اس سے دو نتائج اخذ ہوتے ہیں۔
Self-hosting صرف اسٹوریج کو منتقل کرتی ہے، پروسیسنگ کو نہیں۔ ہر ٹرن آپ کے ماڈل پرووائیڈر کے پاس جاتا ہے، اور ہر وائس نوٹ Deepgram کو بھیجا جاتا ہے۔ والٹ آپ کا ہے، لیکن درخواستیں ان کمپنیوں سے نجی نہیں رہتیں جو انہیں سروس فراہم کر رہی ہیں۔ میموری لیئر کو خود چلانا، جیسا کہ اپنے VPS پر Mem0 میموری سرور کے ساتھ ہوتا ہے، اسی نوعیت کا ہے: اسٹور مقامی ہوتا ہے لیکن ماڈل کال اب بھی سرور سے باہر جاتی ہے۔ اگر کوئی موضوع کسی تیسرے فریق کے لیے بہت حساس ہو، تو اسے چیٹ سے دور رکھیں۔
اس اکاؤنٹ کی رسائی پورے والٹ تک ہوتی ہے۔ Iva کے ٹولز Node کے fs اور child_process کے ذریعے براہ راست ہوسٹ پر چلتے ہیں، بغیر کسی Docker یا سینڈ باکس کے، لہذا اگر کوئی ٹرن ہیک ہو جائے تو اسے وہی رسائی حاصل ہوتی ہے جو سروس یوزر کے پاس ہے۔ یہی وجہ ہے کہ انسٹالیشن کے بعد اکاؤنٹ میں کوئی sudo نہیں رکھا جاتا، اور یہی وجہ ہے کہ allowlist اس سے کہیں زیادہ توجہ کی مستحق ہے جتنا بظاہر لگتا ہے: یہ وہ گیٹ ہے جو فیصلہ کرتا ہے کہ کس کے پیغامات آپ کے سرور پر کمانڈ بنیں گے۔ اگر آپ بغیر کچھ کھولے اسسٹنٹ کو اپنی جیب میں رکھنا چاہتے ہیں، تو یہ وہی پیٹرن ہے جو اپنے فون سے self-hosted Hermes ایجنٹ تک پہنچنے کے لیے استعمال ہوتا ہے، جہاں چیٹ کلائنٹ وہ کام کرتا ہے جو بصورت دیگر ایک پبلک اینڈ پوائنٹ کرتا۔
کیا چیز ناکام ہوتی ہے، اور آپ کو کون سا پیغام نظر آئے گا
Build killed, exit 137۔ kernel کا out of memory killer build کو ختم کر دیتا ہے۔ installer صرف اس وقت swap شامل کرتا ہے جب RAM 1.5 GB سے کم ہو اور کوئی swap موجود نہ ہو، اس لیے swap خود شامل کریں اور installer دوبارہ چلائیں۔
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
free -hFailed to connect to bus۔ ہر systemctl --user command یہ پیغام اس وقت دکھاتی ہے جب shell میں user session bus موجود نہ ہو، اور sudo -iu iva یہی فراہم کرتا ہے۔ اس user کے طور پر معمول کا SSH session کھولیں، یا command سے پہلے XDG_RUNTIME_DIR=/run/user/$(id -u iva) export کریں۔
bot آپ کو نظرانداز کرتا ہے۔ TELEGRAM_ALLOWED_USER_IDS خالی ہے، اور allowlist fail closed ہے۔ bot کو ایک message بھیجیں: یہ آپ کے numeric ID کے ساتھ جواب دیتا ہے اور کچھ نہیں بھیجتا۔ وہ ID .env میں رکھیں اور iva restart چلائیں۔
bot iva config کے فوراً بعد خاموش ہو جاتا ہے۔ wizard ASSISTANT_HOST کو update کیے بغیر IVA_PORT منتقل کر سکتا ہے، اس لیے bridge ایسے port سے connect ہوتا ہے جہاں کوئی جواب نہیں دیتا۔ دونوں lines کا موازنہ کریں، پھر restart کریں۔
grep -E '^(IVA_PORT|ASSISTANT_HOST)=' ~/iva/.env
iva restartvoice note کا کوئی جواب نہیں آتا۔ Telegram کا Bot API 20 MB سے بڑی files کے downloads مسترد کرتا ہے، اس لیے bridge کو طویل audio موصول نہیں ہوتی اور وہ Deepgram کو بھیجنے کے لیے کچھ نہیں رکھتا۔ file بھیجنے سے پہلے اسے تقسیم کریں۔
ffmpeg -i long.ogg -f segment -segment_time 600 -c copy part-%02d.oggturn رک جاتا ہے اور کبھی جواب نہیں دیتا۔ پھنسی ہوئی workflow state restart کے بعد بھی برقرار رہتی ہے اور خود کو دوبارہ queue میں شامل کر لیتی ہے، اس لیے صرف restart کرنے سے یہ صاف نہیں ہوتی۔ iva reset اس state کو quarantine میں رکھتا ہے اور دونوں services کو restart کرتا ہے۔ chat میں /new ایک نئی conversation شروع کرتا ہے۔
Ubuntu 24.04 پر Chromium ناکام ہو جاتا ہے۔ Ubuntu 24.04 AppArmor کے ذریعے unprivileged user namespaces کو block کرتا ہے، اس لیے Chromium کا اپنا sandbox شروع نہیں ہو سکتا اور agent-browser ناکام ہو جاتا ہے۔ installer اس کا workaround اختیار کرتے ہوئے "--no-sandbox" کو ~/.agent-browser/config.json میں لکھتا ہے۔ یاد رکھیں کہ یہ configuration موجود ہے۔ اس سے browser کی isolation کم ہو جاتی ہے، جو اس بات کی ایک اور وجہ ہے کہ account کو Iva کے علاوہ کسی چیز کا مالک نہیں ہونا چاہیے۔
FAQ
کیا Iva کو self-host کرنے کے لیے domain یا کھلا port درکار ہے؟
نہیں۔ Iva long polling کے ذریعے Telegram سے رابطہ کرتا ہے: iva-telegram-poll.service، getUpdates کو call کرتا ہے اور انتظار کرتا ہے، اس لیے ہر connection آپ کے server سے باہر کی طرف جاتی ہے۔ باہر سے box تک کسی connection کے پہنچنے کی ضرورت نہیں، لہذا DNS record اور certificate درکار نہیں۔ Agent کا اپنا HTTP port، 8723، 127.0.0.1 پر bind ہوتا ہے، اور project documentation میں اسے expose نہ کرنے کی ہدایت ہے۔ ایسا firewall درست configuration ہے جو صرف SSH کی اجازت دے اور کسی اور چیز کی نہیں۔
Iva چلانے پر ہر ماہ کتنی لاگت آتی ہے؟
شائع شدہ October 2026 کی list prices کے مطابق، 5 dollars کا چھوٹا VPS اور 10 dollars کا سب سے سستا flat rate model plan ملا کر ماہانہ تقریباً 15 US dollars بنتے ہیں۔ Ollama Cloud کی لاگت اس کے بجائے 20 dollars ہے، اور شامل credits سے زیادہ usage کی billing اس کے علاوہ ہوتی ہے۔ Deepgram کے starter credits ابتدا میں voice usage پورا کرتے ہیں، اور web search tiers میں free allowances دستیاب ہیں۔ OpenRouter میں pay as you go billing ہے، اس لیے اس کی کوئی مقررہ ماہانہ رقم نہیں۔
Iva میرا data کہاں رکھتا ہے، اور میں اس کا backup کیسے بناؤں؟
Default طور پر ~/iva/vault میں، جسے ASSISTANT_VAULT_DIR set کرتا ہے۔ یہ plain markdown کی ایک الگ private git repository ہے: CORE.md، daily/YYYY-MM-DD.md، cards/ اور summaries/۔ 05:00 کا memory doctor اس repository کو commit اور push کرتا ہے۔ یہ صرف اس صورت میں مفید ہے جب repository میں remote موجود ہو، اس لیے setup کے دوران gh auth login چلائیں یا اپنا remote شامل کریں۔ tar czf ~/iva-vault-backup.tgz -C ~/iva vault کے ذریعے ایک offline copy بھی رکھیں اور اس file کو server سے باہر منتقل کریں۔
اگر میں Iva کو self-host کروں تو کیا میرا data private رہتا ہے؟
Storage آپ کی ہے۔ Processing نہیں۔ Vault اس وقت تک آپ کی disk پر رہتا ہے جب تک آپ اسے push نہ کریں، اور .env mode 0600 کے ساتھ service user کی ملکیت میں ہوتا ہے۔ Model calls اور voice transcription cloud APIs ہیں، اس لیے یہ messages آپ کے model provider اور Deepgram سے گزرتے ہیں۔ Iva MIT licensed ہے، لہذا آپ بالکل دیکھ سکتے ہیں کہ یہ کیا بھیجتا ہے اور اسے تبدیل بھی کر سکتے ہیں۔ Telegram allowlist fail closed طریقے سے کام کرتی ہے، یعنی خالی TELEGRAM_ALLOWED_USER_IDS سب کو، آپ کو بھی، block کر دیتا ہے۔
Iva کن model providers کو support کرتا ہے؟
Pinned v0.3.13 release میں MODEL_PROVIDER، opencode (OpenCode Go)، ollama (Ollama Cloud)، openrouter اور codex کو accept کرتا ہے۔ OpenRouter میں anthropic/claude-sonnet-4.5 جیسا vendor slug استعمال ہوتا ہے اور یہ models کا سب سے وسیع انتخاب فراہم کرتا ہے۔ codex، iva login کے ذریعے موجودہ ChatGPT subscription میں sign in کرتا ہے اور API key استعمال نہیں کرتا۔ بعد کی releases میں مزید routes شامل ہیں، جن میں Claude subscription اور custom OpenAI compatible endpoint شامل ہیں۔ Provider set کریں، matching context window کو model کے حقیقی size کے مطابق set کریں، پھر iva restart چلائیں، کیونکہ model کو process start پر صرف ایک بار read کیا جاتا ہے۔