SSD Nodes Learn 🎉 VPS $4.99/माह से
गाइड Matt Connorलेखक: Matt Connor

Iva Telegram AI assistant को self-host कैसे करें

Iva को अपने VPS पर बिना किसी open port या domain के deploy करने का तरीका जानें। यह गाइड v0.3.13 के लिए systemd services और Obsidian vault बैकअप सेटअप करना सिखाती है।

आप क्या बना रहे हैं

Iva एक self-hosted Telegram AI assistant है। यह उन चुनिंदा assistants में से एक है जिसे आप बिना कोई inbound port खोले और बिना किसी domain को point किए deploy कर सकते हैं। इसमें किसी certificate की भी आवश्यकता नहीं है, क्योंकि सर्वर पर कोई भी चीज़ public internet के लिए listen नहीं करती है। यह service Telegram से outbound connection बनाती है, उसे खुला रखती है, और आपके संदेशों को reply के माध्यम से पढ़ती है। बाकी सब कुछ इसी एक outbound connection से संचालित होता है।

Iva MIT licensed है और Node में लिखी गई है। इसकी memory plain markdown files का एक folder है जिसे Obsidian सीधे open कर सकता है, इसलिए आपके बारे में इसके द्वारा रखे गए notes app के बिना भी पढ़े जा सकते हैं। यह गाइड v0.3.13 release पर आधारित है, जिसे 6 August 2026 को publish किया गया था।

अधिकांश self-hosted software की शुरुआत एक DNS (domain name system) record और Certbot द्वारा जारी किए गए Let's Encrypt certificate से होती है। Iva इस परत को पूरी तरह से छोड़ देती है, यही कारण है कि firewall के पीछे एक छोटा VPS, जो केवल SSH की अनुमति देता है, एक पूर्ण deployment के लिए पर्याप्त है।

Iva को open ports की आवश्यकता क्यों नहीं है

iva-telegram-poll.service एक long polling bridge है। यह Telegram के getUpdates API को कॉल करता है और उत्तर की प्रतीक्षा करता है, इसलिए प्रत्येक कनेक्शन आपके सर्वर से शुरू होता है। Telegram कभी भी वापस कनेक्ट नहीं करता है, जिसका अर्थ है कि कॉन्फ़िगर करने के लिए कोई reverse proxy नहीं है और न ही certificate renewal के बारे में भूलने की कोई चिंता है।

एजेंट स्वयं केवल 127.0.0.1 port 8723 पर listen करता है। प्रोजेक्ट का दस्तावेज़ीकरण इस बारे में स्पष्ट है: port 8723 को expose न करें, और इसके सामने आप जो भी reverse proxy लगाएँ, उसे bearer token की आवश्यकता को बनाए रखना चाहिए। इंस्टॉलेशन के बाद bind address की जाँच करें।

sudo ss -tlnp | grep 8723

पता 127.0.0.1:8723 होना चाहिए। 0.0.0.0:8723 जैसे wildcard पते का अर्थ है कि एजेंट के HTTP routes इंटरनेट से पहुँच योग्य हैं, और आपको कुछ भी निजी भेजने से पहले इसे ठीक कर लेना चाहिए।

इसलिए firewall बंद रहता है। इसे enable करने से पहले SSH को allow करें, क्योंकि बिना SSH rule के ufw enable उस सेशन को बंद कर देता है जिसमें आप टाइप कर रहे हैं।

sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status

वन-लाइन इंस्टॉलर वास्तव में क्या करता है

प्रोजेक्ट का फ्रंट पेज आपको एक कमांड देता है जो GitHub से एक स्क्रिप्ट को पाइप के जरिए bash में भेजता है। स्क्रिप्ट को पहले पढ़ें, क्योंकि यह केवल एक प्रोग्राम इंस्टॉल करने से कहीं अधिक काम करती है।

curl -fsSL https://raw.githubusercontent.com/smixs/iva/main/install.sh -o iva-install.sh
less iva-install.sh
  • यह पहचाने गए पैकेज मैनेजर के साथ सिस्टम पैकेज इंस्टॉल करता है: git, gh, python3, ffmpeg, pandoc और poppler-utils
  • यह /swapfile पर 2 GB की swapfile बनाता है यदि सिस्टम में 1.5 GB से कम RAM है और कोई swap नहीं है, क्योंकि इसके बिना बिल्ड प्रक्रिया बंद (kill) हो जाती है।
  • यह nvm इंस्टॉल करता है, फिर Node 24 इंस्टॉल करता है, जो कि न्यूनतम संस्करण है जिस पर Iva चलता है।
  • यह uv, जो कि Python पैकेज मैनेजर है, को ~/.local/bin में इंस्टॉल करता है।
  • यह रिपॉजिटरी को ~/iva में क्लोन करता है और npm ci चलाता है।
  • यह दो ग्लोबल npm पैकेज इंस्टॉल करता है, agent-browser (जो बाद में Chromium डाउनलोड करता है) और @googleworkspace/cli
  • यह सेटअप विज़ार्ड चलाता है, प्रोजेक्ट को बिल्ड करता है, और वॉल्ट (vault) बनाता है।
  • यह iva कमांड को ~/.local/bin में लिखता है और systemd यूजर यूनिट्स को इंस्टॉल करता है।

एक लाइन के लिए यह बहुत सारा सॉफ्टवेयर है। यह README के उस निर्देश को भी स्पष्ट करता है जिसमें सामान्य यूजर के रूप में इंस्टॉल करने के लिए कहा गया है, न कि root के रूप में: एजेंट का शेल टूल बाद में उन्हीं विशेषाधिकारों (privileges) के साथ चलता है जो इंस्टॉलर के पास थे। स्क्रिप्ट केवल पैकेज इंस्टॉलेशन और swapfile के लिए sudo को कॉल करती है, एक हेल्पर के माध्यम से जो आपके पहले से root होने पर सीधे कमांड चलाता है।

इंस्टॉल करने से पहले एक समर्पित user बनाएँ

Iva को उसका अपना account दें। यह agent host पर Node के child_process के माध्यम से shell commands चलाता है, जिसमें कोई container या sandbox नहीं होता, इसलिए जिस account के तहत यह चलता है, वही सुरक्षा की सीमा (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 iva

enable-linger महत्वपूर्ण है क्योंकि Iva, systemd user units के रूप में चलता है। Linger के बिना, जैसे ही user का अंतिम session समाप्त होता है, systemd उस user की services को रोक देता है, जिससे SSH बंद करते ही assistant बंद हो जाएगा। यही नियम उन सभी services और timers पर लागू होता है जिन्हें आप स्वयं systemd के तहत लिखते हैं

account को केवल तभी sudo की आवश्यकता होती है जब installer packages जोड़ रहा हो। इंस्टॉलेशन पूरा होने पर इसे हटा दें।

sudo deluser iva sudo

SSH के माध्यम से सीधे उस user के रूप में login करें। sudo -iu iva के साथ जिस shell में आप प्रवेश करते हैं, उसमें न तो DBUS_SESSION_BUS_ADDRESS सेट होता है और न ही XDG_RUNTIME_DIR, इसलिए हर systemctl --user command Failed to connect to bus के साथ विफल हो जाती है। यह सीमा निर्धारित करना वैसा ही अभ्यास है जैसा least privilege users के तहत services चलाना

Bash में पाइप करने के बजाय एक pinned release इंस्टॉल करें

इस इंस्टॉलर में एक उपयोगी विशेषता है। कुछ भी क्लोन करने से पहले, यह जाँचता है कि जिस डायरेक्टरी में स्क्रिप्ट मौजूद है, उसमें पहले से ही package.json है जिसमें "eve" शामिल है। यदि ऐसा है, तो यह उस चेकआउट को बिल्ड करता है और क्लोन करने की प्रक्रिया को छोड़ देता है। इसलिए आप स्वयं संस्करण चुन सकते हैं।

git clone --branch v0.3.13 https://github.com/smixs/iva.git ~/iva
cd ~/iva
git log -1 --oneline
bash install.sh

अब आप जानते हैं कि कौन सा कोड चल रहा है। जब स्क्रिप्ट किसी भी समय main को क्लोन करती है, तो आपको यह पता नहीं होता कि उस समय कोड किस स्थिति में है। Iva ने 4 और 6 अगस्त 2026 के बीच पाँच रिलीज़ जारी कीं, इसलिए आज सुबह का main और आज दोपहर का main एक ही प्रोग्राम नहीं हैं।

एक टैग चेकआउट git को detached HEAD स्थिति में छोड़ देता है। यह ठीक से चलता है, लेकिन इसकी सीमा को समझें: iva update चेकआउट को अपडेट ब्रांच पर आगे ले जाता है, इसलिए यह पिन एक ज्ञात शुरुआती बिंदु है, न कि स्थायी फ्रीज। iva version पैकेज संस्करण और git कमिट को प्रिंट करता है, ताकि आप हमेशा देख सकें कि आप कहाँ हैं।

जानबूझकर बाद की रिलीज़ पर जाने के लिए, टैग्स को लिस्ट करें, IVA_TAG को उस टैग पर सेट करें जिसे आपने चुना है, और फिर चेकआउट के अंदर से इंस्टॉलर को दोबारा चलाएँ।

cd ~/iva
git fetch --tags
git tag --list 'v*' | sort -V | tail -5
IVA_TAG=v0.3.13
git checkout "$IVA_TAG"
bash install.sh --skip-setup
iva restart

--skip-setup विज़ार्ड को उस .env पर दोबारा चलने से रोकता है जो पहले से ही काम कर रहा है।

पाँच विज़ार्ड चरण और उनके लिए आवश्यक कुंजियाँ

  1. मॉडल प्रदाता और मॉडल। MODEL_PROVIDER, opencode, ollama, openrouter या codex को स्वीकार करता है। विज़ार्ड लाइव कुंजी को मान्य करता है और आपके प्लान में उपलब्ध मॉडल की सूची दिखाता है।
  2. वॉइस और सर्च। एक Deepgram कुंजी वॉइस नोट्स को ट्रांसक्राइब करती है। वेब सर्च कुंजी (Tavily, Exa, Parallel या Brave) वैकल्पिक है।
  3. @BotFather से प्राप्त Telegram बॉट टोकन, जिसे getMe एंडपॉइंट पर जाँचा जाता है।
  4. एक्सेस कंट्रोल। आप अपने बॉट को एक संदेश भेजते हैं, और विज़ार्ड getUpdates से आपकी संख्यात्मक user ID पढ़ता है।
  5. सिस्टम सेटिंग्स। 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/.env

ls को -rw-------, मोड 0600 प्रिंट करना चाहिए, क्योंकि उस फ़ाइल में वे सभी कुंजियाँ होती हैं जिन्हें आपने अभी पेस्ट किया है। TELEGRAM_ALLOWED_USER_IDS में आपकी संख्यात्मक ID होनी चाहिए। Allowlist 'fail closed' है, इसलिए खाली मान का अर्थ है कि Iva किसी को उत्तर नहीं देगा।

मॉडल को प्रक्रिया शुरू होने पर एक बार पढ़ा जाता है। MODEL_PROVIDER या .env में मॉडल का नाम बदलने से तब तक कुछ नहीं बदलता जब तक आप iva restart नहीं चलाते। openrouter पर मॉडल का नाम एक वेंडर स्लग होता है जैसे कि anthropic/claude-sonnet-4.5, न कि केवल एक नाम। codex पर कोई API कुंजी नहीं होती है: iva login मौजूदा ChatGPT सब्सक्रिप्शन में साइन इन करता है।

Iva को चलाने की मासिक लागत क्या है

ChartMonthly cost of a self-hosted Iva, published list prices, August 2026
The data behind this chart
[
  {
    "plan": "Small VPS, always on",
    "usd_per_month": 5
  },
  {
    "plan": "OpenCode Go model plan",
    "usd_per_month": 5
  },
  {
    "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": 10
  }
]

ये अगस्त 2026 तक प्रकाशित सूची मूल्य हैं, न कि वास्तविक माप। एक छोटा VPS 5 अमेरिकी डॉलर में और उसके साथ OpenCode Go प्लान 5 डॉलर में, सबसे सस्ता पूर्ण सेटअप है, जो लगभग 10 डॉलर प्रति माह पड़ता है। Ollama Cloud दूसरा फ्लैट रेट विकल्प है जो 20 डॉलर का है, और इसके frontier models का बिल प्लान के अतिरिक्त उपयोग के आधार पर आता है। जब तक Deepgram starter credits समाप्त नहीं होते, Voice की लागत 0 रहती है।

OpenRouter को यहाँ शामिल नहीं किया गया है क्योंकि यह pay-as-you-go मॉडल है, इसलिए आपका बिल आपके उपयोग के अनुसार बनता है। इस विकल्प पर नजर रखना आवश्यक है: एक ऐसा assistant जो हर turn में 131072 token की context window का उपयोग करता है, वह फ्लैट प्लान से अधिक महंगा हो सकता है। context window variable को model के वास्तविक आकार पर सेट करें, क्योंकि बढ़ा-चढ़ाकर वैल्यू रखने से केवल tokens बर्बाद होते हैं।

दो सर्विसेज और दो टाइमर्स

  • iva.service एजेंट को स्वयं चलाता है।
  • iva-telegram-poll.service लॉन्ग पोलिंग ब्रिज को चलाता है जो Telegram से संवाद करता है।
  • iva-memory-doctor.timer 05:00 बजे सक्रिय होता है और वॉल्ट पर nightly maintenance पास चलाता है।
  • iva-update-check.timer 10:00 बजे सक्रिय होता है और जाँचता है कि क्या कोई नया release उपलब्ध है।
  • iva-telegram-userbot.service केवल तभी मौजूद होता है यदि आपने वैकल्पिक Telethon proxy सेटअप किया हो।
iva status
systemctl --user status iva.service iva-telegram-poll.service
systemctl --user list-timers
iva logs poll

iva status दोनों सर्विसेज और दोनों वॉचडॉग टाइमर्स की रिपोर्ट देता है। systemctl --user list-timers प्रत्येक टाइमर के लिए अगला रन टाइम प्रिंट करता है, जिससे आप यह पुष्टि कर सकते हैं कि memory doctor आज रात वास्तव में चलेगा। दोनों सर्विसेज को active (running) स्थिति में होना चाहिए। यदि कोई सर्विस लूप में रीस्टार्ट हो रही है, तो journalctl --user -u iva.service -n 100 उसका कारण बताता है।

डिबगिंग करते समय यह विभाजन महत्वपूर्ण है। ऐसा हो सकता है कि ब्रिज सक्रिय हो और पोलिंग कर रहा हो जबकि एजेंट डाउन हो, ऐसी स्थिति में Telegram आपका मैसेज स्वीकार कर लेगा लेकिन उसका कोई उत्तर नहीं मिलेगा। iva logs poll ब्रिज के लॉग्स को फॉलो करता है, iva logs एजेंट के लॉग्स को फॉलो करता है, इसलिए ये दो लॉग्स आपको बताते हैं कि कौन सा हिस्सा खराब है।

Obsidian vault कहाँ स्थित होता है और उसका बैकअप कैसे लें

ASSISTANT_VAULT_DIR डिफ़ॉल्ट रूप से इंस्टॉल डायरेक्टरी के अंदर vault पर होता है, इसलिए मेमोरी ~/iva/vault पर स्थित होती है। यह अपना स्वयं का git रिपॉजिटरी है, जो कोड से अलग है। यही कारण है कि आप अपने नोट्स को प्रभावित किए बिना Iva को अपडेट कर सकते हैं।

  • vault/CORE.md में स्थायी तथ्य और प्राथमिकताएं होती हैं, जो 1200 कैरेक्टर तक सीमित हैं, और यह हर सिस्टम प्रॉम्प्ट में साथ चलती हैं।
  • vault/daily/YYYY-MM-DD.md दिन का ट्रांसक्रिप्ट है, जिसे केवल 'append-only' के रूप में रखा जाता है।
  • vault/cards/ में संपर्कों, प्रोजेक्ट्स, निर्णयों, विचारों और नोट्स के लिए टाइप किए गए कार्ड होते हैं।
  • vault/summaries/daily/, weekly/, monthly/ और yearly/ में रोलअप (rollups) होते हैं।
  • vault/attachments/ में फाइलें तारीख के अनुसार होती हैं, और vault/.graph/ में लिंक ग्राफ होता है।
  • vault/schema.json कार्ड के प्रकार और उनके समाप्त होने (decay) के नियमों को परिभाषित करता है।

रोलअप प्रक्रिया के अंदर एक शेड्यूल पर चलते हैं। 04:00 बजे होने वाला दैनिक पास कल के ट्रांसक्रिप्ट को कार्ड और सारांश में बदल देता है और CORE.md को फिर से लिखता है। इसके बाद साप्ताहिक, मासिक और वार्षिक पास उन्हें क्रमिक रूप से कंप्रेस करते हैं। 05:00 बजे 'मेमोरी डॉक्टर' बिना किसी मॉडल के एक निश्चित (deterministic) पास चलाता है: यह स्कीमा को लागू करता है, लिंक ग्राफ को फिर से बनाता है, इंडेक्स को रीजेनरेट करता है, और फिर कमिट और पुश करता है।

वह पुश ही आपका बैकअप है, और यही वह चरण है जिसे लोग अक्सर भूल जाते हैं। यदि वॉल्ट में कोई git रिमोट नहीं है, तो डॉक्टर gh के माध्यम से एक निजी GitHub रिपॉजिटरी बनाने का प्रयास करता है, जिसके लिए एक ऑथेंटिकेटेड 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/ को न छेड़ें, क्योंकि नाइटली पास दोनों को रीजेनरेट करता है।

Vault को अपने जीवन का लॉग (log) मानें

वह directory इस बात का दिनांकित रिकॉर्ड है कि आपने क्या कहा, आप किससे मिले और आपने क्या निर्णय लिया, वह भी एक ऐसे मशीन पर जिसे आप किराए पर लेते हैं। इससे दो बातें स्पष्ट होती हैं।

Self-hosting केवल storage को स्थानांतरित करता है, processing को नहीं। हर turn आपके model provider के पास जाता है, और हर voice note Deepgram के पास जाता है। Vault आपका है। ये requests उन कंपनियों से निजी नहीं हैं जो उन्हें सेवा प्रदान करती हैं। Memory layer को स्वयं चलाना, जैसा कि अपने VPS पर Mem0 memory server के साथ होता है, का स्वरूप भी यही है: store local रहता है जबकि model call अभी भी बाहर जाती है। यदि कोई विषय किसी तीसरे पक्ष के लिए बहुत संवेदनशील है, तो उसे chat से दूर रखें।

उस account की पहुंच पूरे vault तक है। Iva के tools Node के fs और child_process के माध्यम से host native चलते हैं, जिसमें न तो Docker है और न ही sandbox, इसलिए एक hijacked turn के पास वही access होता है जो service user के पास है। यही कारण है कि install के बाद account में कोई sudo नहीं रहता है, और यही कारण है कि allowlist जितना दिखता है उससे कहीं अधिक ध्यान देने योग्य है: यह वह द्वार है जो तय करता है कि किसके संदेश आपके server पर command बनेंगे। यदि आप बिना कुछ खोले assistant को अपनी जेब में रखना चाहते हैं, तो यह वही pattern है जिसका उपयोग अपने phone से self-hosted Hermes agent तक पहुँचने के लिए किया जाता है, जहाँ chat client वह काम करता है जो अन्यथा एक public endpoint करता।

क्या खराब होता है, और आपको क्या संदेश दिखाई देगा

Build killed, exit 137. कर्नल के out of memory killer ने build को रोक दिया है। installer केवल तभी swap जोड़ता है जब RAM 1.5 GB से कम हो और कोई swap मौजूद न हो, इसलिए इसे स्वयं जोड़ें और installer को फिर से चलाएँ।

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
free -h

Failed to connect to bus. जब shell में कोई user session bus नहीं होती, तो हर systemctl --user command यह प्रिंट करती है, और यही वह चीज़ है जो 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 को एक संदेश भेजें: वह आपके numeric ID के साथ उत्तर देगा और कुछ नहीं। उस ID को .env में डालें और iva restart चलाएँ।

iva config के तुरंत बाद Bot शांत हो जाता है। wizard ASSISTANT_HOST को अपडेट किए बिना IVA_PORT को स्थानांतरित कर सकता है, इसलिए bridge एक ऐसे port से जुड़ जाता है जहाँ कोई उत्तर नहीं मिलता। दोनों पंक्तियों की तुलना करें, फिर restart करें।

grep -E '^(IVA_PORT|ASSISTANT_HOST)=' ~/iva/.env
iva restart

Voice note का कोई उत्तर नहीं मिलता। Telegram का Bot API 20 MB से बड़ी फ़ाइलों को download करने से मना कर देता है, इसलिए bridge को लंबी audio प्राप्त नहीं होती और Deepgram को भेजने के लिए कुछ नहीं बचता। फ़ाइल भेजने से पहले उसे विभाजित (split) करें।

ffmpeg -i long.ogg -f segment -segment_time 600 -c copy part-%02d.ogg

एक turn अटक जाता है और कभी उत्तर नहीं देता। फंसा हुआ workflow state restart के बाद भी बना रहता है और खुद को फिर से कतार (re-queue) में डाल देता है, इसलिए केवल restart करने से यह ठीक नहीं होता। iva reset उस state को quarantine करता है और दोनों services को restart करता है। चैट में /new एक नई बातचीत शुरू करता है।

Ubuntu 24.04 पर Chromium विफल हो जाता है। Ubuntu 24.04 AppArmor के माध्यम से unprivileged user namespaces को रोकता है, इसलिए Chromium का अपना sandbox शुरू नहीं हो पाता और agent-browser विफल हो जाता है। installer ~/.agent-browser/config.json में "--no-sandbox" लिखकर इसका समाधान करता है। ध्यान रखें कि यह वहाँ मौजूद है। यह browser के isolation को कम करता है, जो एक और कारण है कि उस account के पास Iva के अलावा कुछ भी नहीं होना चाहिए।

FAQ

क्या Iva को self-host करने के लिए मुझे domain या open port की आवश्यकता है?

नहीं। Iva long polling के जरिए Telegram से बात करता है: iva-telegram-poll.service, getUpdates को कॉल करता है और प्रतीक्षा करता है, इसलिए सर्वर से हर कनेक्शन outbound होता है। बाहर से किसी भी चीज़ को सर्वर तक पहुँचने की आवश्यकता नहीं है, इसलिए आपको किसी DNS record या certificate की आवश्यकता नहीं है। एजेंट का अपना HTTP port, 8723, 127.0.0.1 पर bind होता है, और प्रोजेक्ट documentation आपको इसे expose न करने की सलाह देता है। एक firewall जो केवल SSH की अनुमति देता है और बाकी सब कुछ block करता है, वही सही configuration है।

Iva को हर महीने चलाने का खर्च क्या है?

अगस्त 2026 की प्रकाशित list prices के अनुसार, 5 डॉलर का एक छोटा VPS और 5 डॉलर का सबसे सस्ता flat rate model plan मिलाकर लगभग 10 अमेरिकी डॉलर प्रति माह का खर्च आता है। Ollama Cloud की लागत 20 डॉलर है, और यह frontier models के लिए अलग से शुल्क लेता है। Deepgram के starter credits शुरुआत में voice के खर्च को कवर करते हैं, और web search tiers में मुफ्त allowances उपलब्ध हैं। OpenRouter pay-as-you-go है, इसलिए इसका कोई निश्चित मासिक खर्च नहीं है।

Iva मेरा डेटा कहाँ रखता है, और मैं इसका बैकअप कैसे लूँ?

डिफ़ॉल्ट रूप से यह ~/iva/vault में होता है, जिसे ASSISTANT_VAULT_DIR द्वारा सेट किया जाता है। यह plain markdown का एक अलग private git repository है: CORE.md, daily/YYYY-MM-DD.md, cards/ और summaries/। 05:00 बजे चलने वाला memory doctor इसे commit और push करता है, जो केवल तभी काम करता है जब repository का कोई remote हो, इसलिए gh auth login चलाएँ या setup के दौरान अपना खुद का remote जोड़ें। tar czf ~/iva-vault-backup.tgz -C ~/iva vault के साथ एक offline copy भी रखें और उस file को सर्वर से बाहर सुरक्षित रखें।

यदि मैं Iva को self-host करूँ, तो क्या मेरा डेटा private है?

storage आपकी है, लेकिन processing नहीं। vault आपके disk पर तब तक रहता है जब तक आप उसे push नहीं करते, और .env service user के स्वामित्व में mode 0600 पर रहता है। Model calls और voice transcription क्लाउड APIs हैं, इसलिए वे संदेश आपके model provider और Deepgram से होकर गुजरते हैं। Iva MIT licensed है, इसलिए आप ठीक-ठीक पढ़ सकते हैं कि यह क्या भेजता है और उसे बदल भी सकते हैं। Telegram allowlist 'fail closed' है, जिसका अर्थ है कि एक खाली TELEGRAM_ALLOWED_USER_IDS हर किसी को block कर देता है, जिसमें आप भी शामिल हैं।

Iva किन model providers का समर्थन करता है?

MODEL_PROVIDER, opencode (OpenCode Go), ollama (Ollama Cloud), openrouter और codex को स्वीकार करता है। OpenRouter, anthropic/claude-sonnet-4.5 जैसे vendor slug को लेता है और models का सबसे व्यापक विकल्प प्रदान करता है। codex, iva login के साथ मौजूदा ChatGPT subscription में sign in करता है और इसके लिए किसी API key की आवश्यकता नहीं होती। provider सेट करें, matching context window को model के वास्तविक आकार पर सेट करें, और फिर iva restart चलाएँ, क्योंकि model को process शुरू होने पर केवल एक बार पढ़ा जाता है।