SSD Nodes Learn Hosting plans →
मार्गदर्शक Matt Connorद्वारे Matt Connor · अपडेटेड 2026-08-13

Iva: स्वतःचा Telegram AI assistant कसा तयार करावा?

Iva वापरून स्वतःचा Telegram AI assistant कसा चालवावा ते शिका. कोणत्याही ओपन पोर्ट्स किंवा डोमेनशिवाय, फक्त एका लहान VPS वर हा सुरक्षित सेटअप कसा करायचा याची संपूर्ण माहिती.

तुम्ही काय तयार करत आहात

Iva हा एक self-hosted Telegram AI assistant आहे. हे अशा काही मोजक्या साधनांपैकी एक आहे जे तुम्ही कोणतेही inbound port न उघडता किंवा domain न जोडता deploy करू शकता. यामध्ये कोणत्याही प्रमाणपत्राची (certificate) गरज नसते, कारण सर्व्हरवर कोणतीही सेवा सार्वजनिकरीत्या ऐकण्यासाठी (listen) उपलब्ध नसते. ही सेवा Telegram कडे आउटबाउंड कनेक्शन करते, ते कनेक्शन सुरू ठेवते आणि तुमच्या संदेशांना प्रतिसाद देते. इतर सर्व गोष्टी या एकाच आउटबाउंड कनेक्शनवर अवलंबून असतात.

Iva हे MIT परवान्याअंतर्गत उपलब्ध असून ते Node मध्ये लिहिलेले आहे. याची मेमरी साध्या markdown फाइल्सच्या फोल्डरमध्ये असते, ज्या Obsidian थेट उघडू शकते. त्यामुळे, तुमच्याबद्दलच्या नोट्स ॲपशिवायही वाचनीय राहतात. हे मार्गदर्शक 6 ऑगस्ट 2026 रोजी प्रकाशित झालेल्या v0.3.13 या release वर आधारित आहे.

बहुतेक self-hosted सॉफ्टवेअरची सुरुवात DNS (domain name system) रेकॉर्ड आणि Certbot द्वारे जारी केलेल्या Let's Encrypt प्रमाणपत्राने होते. Iva हा स्तर पूर्णपणे वगळते, म्हणूनच केवळ SSH ला परवानगी देणाऱ्या फायरवॉलच्या मागे असलेला एक छोटा VPS देखील पूर्ण deployment साठी पुरेसा असतो.

Iva ला ओपन पोर्ट्सची गरज का नसते

iva-telegram-poll.service हा एक long polling ब्रिज आहे. तो Telegram च्या getUpdates API ला कॉल करतो आणि उत्तराची वाट पाहतो, त्यामुळे प्रत्येक कनेक्शन तुमच्या सर्व्हरवरून सुरू होते. Telegram कधीही परत कनेक्ट होत नाही, याचा अर्थ असा की कॉन्फिगर करण्यासाठी कोणताही reverse proxy नाही आणि विसरण्यासाठी कोणतेही certificate renewal नाही.

एजंट स्वतः 127.0.0.1 पोर्ट 8723 वर लिसन (listen) करतो. प्रकल्पाचे डॉक्युमेंटेशन याबद्दल स्पष्ट आहे: पोर्ट 8723 उघडू नका आणि तुम्ही त्याच्या समोर जो कोणताही reverse proxy लावाल, त्याने bearer token ची अट कायम ठेवली पाहिजे. इन्स्टॉलेशननंतर bind ॲड्रेस तपासा.

sudo ss -tlnp | grep 8723

ॲड्रेस 127.0.0.1:8723 असावा. 0.0.0.0:8723 सारखा वाइल्डकार्ड ॲड्रेस असल्यास, एजंटचे HTTP रूट्स इंटरनेटवरून उपलब्ध होऊ शकतात. तुम्ही बॉटला कोणतीही खाजगी माहिती पाठवण्यापूर्वी हे दुरुस्त केले पाहिजे.

त्यामुळे फायरवॉल बंद ठेवा. ufw enable इनेबल करण्यापूर्वी SSH ला परवानगी द्या, कारण SSH नियमाशिवाय ते तुम्ही टाइप करत असलेले सेशन बंद करेल.

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.
  • जर सर्व्हरमध्ये 1.5 GB पेक्षा कमी RAM असेल आणि कोणतीही swap नसेल, तर हे /swapfile वर 2 GB ची swapfile तयार करते, कारण त्याशिवाय बिल्ड प्रक्रिया बंद (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 युजरऐवजी सामान्य युजर म्हणून करावे: एजंटचे शेल टूल नंतर त्याच अधिकारांसह रन होते जे इंस्टॉलरकडे होते. ही स्क्रिप्ट केवळ पॅकेज इंस्टॉलेशन आणि swapfile साठी sudo कॉल करते, एका हेल्परद्वारे जो तुम्ही आधीच root असल्यास कमांड्स थेट रन करतो.

इन्स्टॉलेशनपूर्वी एक समर्पित युजर तयार करा

Iva साठी स्वतंत्र खाते तयार करा. हे एजंट Node च्या child_process द्वारे होस्टवर शेल कमांड्स चालवते. यात कोणतेही कंटेनर किंवा सँडबॉक्स नसल्यामुळे, ज्या खात्याद्वारे हे एजंट चालते, तीच तुमची सुरक्षा सीमा (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 युनिट्स म्हणून चालते. 'linger' सक्षम नसल्यास, युजरचे शेवटचे सेशन संपताच systemd त्या युजरच्या सर्व सेवा थांबवते. त्यामुळे तुम्ही SSH बंद केल्यास असिस्टंट बंद पडेल. हाच नियम तुम्ही स्वतः लिहिलेल्या systemd सेवा आणि टायमरसाठी लागू होतो.

केवळ इन्स्टॉलर पॅकेजेस जोडत असतानाच या खात्याला sudo ची आवश्यकता असते. इन्स्टॉलेशन पूर्ण झाल्यावर हे अधिकार काढून टाका.

sudo deluser iva sudo

SSH द्वारे थेट त्या युजर म्हणून लॉग इन करा. sudo -iu iva वापरून तुम्ही ज्या शेलमध्ये प्रवेश करता, त्यात DBUS_SESSION_BUS_ADDRESS किंवा XDG_RUNTIME_DIR सेट केलेले नसतात. त्यामुळे प्रत्येक systemctl --user कमांड Failed to connect to bus एररसह अपयशी ठरते. ही सुरक्षा सीमा निश्चित करणे म्हणजे कमीतकमी अधिकारांच्या युजरद्वारे सेवा चालवण्यासारखेच आहे.

bash वर पाईप करण्याऐवजी पिन केलेली रिलीज इंस्टॉल करा

इंस्टॉलरमध्ये एक उपयुक्त गुणधर्म आहे. कोणतीही गोष्ट क्लोन करण्यापूर्वी, स्क्रिप्ट ज्या डिरेक्टरीमध्ये आहे तिथे 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 चेकआउटला अपडेट ब्रँचवर पुढे नेते, त्यामुळे पिन हे एक ज्ञात सुरुवातीचे बिंदू आहे, कायमस्वरूपी गोठवलेले (freeze) स्वरूप नाही. 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 वर पुन्हा रन होण्यापासून थांबतो.

पाच विझार्ड पायऱ्या आणि त्यासाठी लागणाऱ्या की (keys)

  1. मॉडेल प्रोव्हायडर आणि मॉडेल. MODEL_PROVIDER हे opencode, ollama, openrouter किंवा codex स्वीकारते. विझार्ड रिअल-टाइममध्ये की (key) तपासतो आणि तुमच्या प्लॅनमध्ये उपलब्ध असलेली मॉडेल्सची यादी दाखवतो.
  2. व्हॉइस आणि सर्च. व्हॉइस नोट्सचे ट्रान्स्क्रिप्शन करण्यासाठी Deepgram की (key) लागते. वेब सर्च की (Tavily, Exa, Parallel किंवा Brave) ऐच्छिक आहे.
  3. @BotFather कडून मिळालेला Telegram bot token, जो getMe एंडपॉईंटवर तपासला जातो.
  4. ॲक्सेस कंट्रोल. तुम्ही तुमच्या बॉटला एक मेसेज पाठवता आणि विझार्ड getUpdates मधून तुमचा अंकी (numeric) युजर आयडी वाचतो.
  5. सिस्टम सेटिंग्ज. IANA टाइमझोन, व्हॉल्ट डिरेक्टरी आणि लोकल पोर्ट, जे डीफॉल्टनुसार 8723 असते.

यापैकी दोन गोष्टी अशा आहेत ज्या "एक कमांड" (one command) या वर्णनामुळे लपल्या जातात. Iva स्वतः कोणतेही मॉडेल सोबत आणत नाही, त्यामुळे कोणताही प्रतिसाद मिळण्यापूर्वी त्यासाठी पेड मॉडेल प्लॅन किंवा API की (key) आवश्यक असते. तसेच, ते स्वतः ऑडिओ ट्रान्स्क्राइब करत नाही, म्हणून व्हॉइस नोट्ससाठी स्वतंत्र सेवेची गरज असते. Deepgram चे nova-3 मॉडेल आणि DEEPGRAM_LANGUAGE=multi भाषा ओळखण्याचे काम करतात. नवीन Deepgram अकाउंट्सना सुरुवातीला काही क्रेडिट्स मिळतात, जे वैयक्तिक वापरासाठी अनेक महिने पुरतात. फक्त टेक्स्टसाठी मॉडेल की (key) पुरेशी आहे. केवळ व्हॉइससाठी Deepgram वर अवलंबून राहावे लागते.

विझार्डने काय लिहिले आहे ते तपासा.

grep -E '^(MODEL_PROVIDER|TELEGRAM_ALLOWED_USER_IDS|ASSISTANT_VAULT_DIR|IVA_PORT)=' ~/iva/.env
ls -l ~/iva/.env

ls ने -rw------- प्रिंट केले पाहिजे, ज्याचा मोड 0600 असावा, कारण त्या फाईलमध्ये तुम्ही पेस्ट केलेल्या सर्व की (keys) साठवलेल्या असतात. TELEGRAM_ALLOWED_USER_IDS मध्ये तुमचा अंकी (numeric) आयडी असणे आवश्यक आहे. अलाउलिस्ट (allowlist) 'fail closed' तत्त्वावर काम करते, त्यामुळे रिकामी व्हॅल्यू असल्यास Iva कोणालाही उत्तर देणार नाही.

प्रोसेस सुरू होताना मॉडेल एकदाच वाचले जाते. MODEL_PROVIDER किंवा .env मधील मॉडेलचे नाव बदलल्यास, जोपर्यंत तुम्ही iva restart चालवत नाही, तोपर्यंत कोणताही बदल होणार नाही. openrouter वर मॉडेलचे नाव हे anthropic/claude-sonnet-4.5 सारखे व्हेंडर स्लग (vendor slug) असते, केवळ नाव नसते. codex वर कोणतीही API की (key) नसते: 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 डॉलर्समध्ये उपलब्ध आहे आणि त्याचे फ्रंटियर मॉडेल्स प्लॅनच्या वर अतिरिक्त वापरासाठी आकारले जातात. Deepgram चे स्टार्टर क्रेडिट्स संपेपर्यंत व्हॉइससाठी 0 खर्च येतो.

OpenRouter चा येथे उल्लेख नाही कारण ते 'पे-अॅज-यू-गो' (pay as you go) तत्त्वावर चालते, त्यामुळे तुमचे बिल तुमच्या वापराप्रमाणे बदलते. हा पर्याय काळजीपूर्वक वापरण्याजोगा आहे: जो असिस्टंट प्रत्येक संवादात 131072 टोकनची कॉन्टेक्स्ट विंडो वापरतो, त्याचे बिल फ्लॅट प्लॅनपेक्षा वेगाने वाढू शकते. कॉन्टेक्स्ट विंडो व्हेरिएबल मॉडेलच्या प्रत्यक्ष आकारावर सेट करा, कारण फुगवलेली किंमत केवळ टोकन्स वाया घालवते.

दोन सेवा आणि दोन टायमर्स

  • iva.service एजंट स्वतः चालवते.
  • iva-telegram-poll.service लाँग पोलिंग ब्रिज चालवते जो Telegram शी संवाद साधतो.
  • iva-memory-doctor.timer 05:00 वाजता सुरू होतो आणि व्हॉल्टवर रात्रीची देखभाल प्रक्रिया (maintenance pass) राबवतो.
  • 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 poll

iva 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 रिपॉझिटरी आहे, जे कोडपासून वेगळे असते. यामुळेच तुम्ही तुमच्या नोट्सना धक्का न लावता Iva अपडेट करू शकता.

  • vault/CORE.md मध्ये कायमस्वरूपी तथ्ये आणि प्राधान्यक्रम साठवले जातात, ज्याची मर्यादा 1200 अक्षरे आहे आणि ते प्रत्येक सिस्टम प्रॉम्प्टमध्ये समाविष्ट केले जातात.
  • vault/daily/YYYY-MM-DD.md ही दिवसाची ट्रान्सक्रिप्ट आहे, ज्यामध्ये फक्त माहिती जोडली जाते.
  • vault/cards/ मध्ये संपर्क, प्रकल्प, निर्णय, कल्पना आणि नोट्ससाठी टाईप केलेली कार्डे असतात.
  • vault/summaries/daily/, weekly/, monthly/ आणि yearly/ मध्ये रोलअप्स साठवले जातात.
  • 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) आणि बॅकलिंक्स जसे आहेत तसे काम करतात, तसेच ग्राफ व्ह्यू देखील काम करतो. हाताने कार्डे आणि CORE.md एडिट करणे सुरक्षित आहे. MOC.md आणि .graph/ ला हात लावू नका, कारण रात्रीची प्रक्रिया या दोन्ही गोष्टी पुन्हा जनरेट करते.

वॉल्टला तुमच्या आयुष्याची नोंदवही समजा

ती डिरेक्टरी तुम्ही काय बोललात, कोणाला भेटलात आणि काय निर्णय घेतले, याची तारखेनुसार केलेली नोंद आहे, जी तुम्ही भाड्याने घेतलेल्या मशीनवर असते. यातून दोन गोष्टी निष्पन्न होतात.

सेल्फ-होस्टिंगमुळे स्टोरेजची जागा बदलते, प्रक्रियेची (processing) नाही. प्रत्येक विनंती तुमच्या मॉडेल प्रोव्हायडरकडे जाते आणि प्रत्येक व्हॉइस नोट Deepgram कडे जाते. वॉल्ट तुमचा आहे, पण त्या सेवा देणाऱ्या कंपन्यांपासून विनंत्या खाजगी राहत नाहीत. मेमरी लेयर स्वतः चालवणे, जसे की तुमच्या स्वतःच्या VPS वर Mem0 मेमरी सर्व्हर, याचे स्वरूप सारखेच आहे: डेटा स्टोअर स्थानिक असतो, पण मॉडेल कॉल मात्र बाहेर जातो. जर एखादा विषय तिसऱ्या पक्षासाठी खूप संवेदनशील असेल, तर तो चॅटमध्ये टाकू नका.

त्या अकाउंटची व्याप्ती संपूर्ण वॉल्टपर्यंत असते. Iva ची टूल्स Node च्या fs आणि child_process द्वारे थेट होस्टवर चालतात, त्यात Docker किंवा सँडबॉक्स नसतो. त्यामुळे जर एखादी विनंती हायजॅक झाली, तर सर्व्हिस युजरला जेवढे अधिकार आहेत, तेवढा प्रवेश त्या हॅकरला मिळतो. म्हणूनच इन्स्टॉलेशननंतर अकाउंटमध्ये कोणतेही sudo राहत नाही आणि अलाउलिस्टकडे (allowlist) वरवर दिसते त्यापेक्षा जास्त लक्ष देणे गरजेचे आहे: हे ते प्रवेशद्वार आहे जे ठरवते की कोणाचे मेसेज तुमच्या सर्व्हरवर कमांड्स बनतील. जर तुम्हाला काहीही उघड न करता असिस्टंट तुमच्या खिशात हवा असेल, तर तुमच्या फोनवरून सेल्फ-होस्टेड Hermes एजंटपर्यंत पोहोचण्यासाठी हाच पॅटर्न वापरला जातो, जिथे चॅट क्लायंट ते काम करतो जे अन्यथा पब्लिक एंडपॉइंटला करावे लागले असते.

काय बिघडते आणि तुम्हाला कोणता संदेश दिसेल

Build killed, exit 137. कर्नलच्या out of memory killer ने ही बिल्ड प्रक्रिया थांबवली आहे. जर RAM 1.5 GB पेक्षा कमी असेल आणि swap नसेल, तरच इंस्टॉलर swap जोडतो. त्यामुळे स्वतः swap जोडा आणि इंस्टॉलर पुन्हा चालवा.

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

Failed to connect to bus. जेव्हा शेलमध्ये user session bus नसते, तेव्हा प्रत्येक systemctl --user कमांड हा संदेश देते. sudo -iu iva तुम्हाला नेमकी हीच स्थिती देते. त्या युजरच्या नावाने एक सामान्य SSH सेशन उघडा किंवा कमांड चालवण्यापूर्वी XDG_RUNTIME_DIR=/run/user/$(id -u iva) एक्सपोर्ट करा.

बॉट तुमच्याकडे दुर्लक्ष करतो. TELEGRAM_ALLOWED_USER_IDS रिकामे आहे आणि allowlist 'fail closed' स्थितीत आहे. बॉटला एक मेसेज पाठवा: तो तुम्हाला तुमचा numeric ID परत पाठवेल. तो ID .env मध्ये टाका आणि iva restart चालवा.

iva config नंतर बॉट शांत होतो. विझार्ड IVA_PORT हलवू शकतो पण ASSISTANT_HOST अपडेट करत नाही, त्यामुळे ब्रिज अशा पोर्टला जोडला जातो जिथे कोणीही प्रतिसाद देत नाही. दोन्ही ओळींची तुलना करा आणि सर्व्हिस रीस्टार्ट करा.

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

व्हॉइस नोटला प्रतिसाद मिळत नाही. Telegram चे Bot API 20 MB पेक्षा मोठ्या फाईल्स डाउनलोड करण्यास नकार देते. त्यामुळे ब्रिजला लांब ऑडिओ मिळत नाही आणि Deepgram ला पाठवण्यासाठी काहीही उरत नाही. फाईल पाठवण्यापूर्वी तिचे तुकडे करा.

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

टर्न (turn) अडकून पडतो आणि प्रतिसाद देत नाही. अडकलेली workflow स्थिती रीस्टार्टनंतरही तशीच राहते आणि पुन्हा रांगेत (re-queue) जाते, त्यामुळे फक्त रीस्टार्ट केल्याने ती साफ होत नाही. iva reset ती स्थिती क्वारंटाईन करते आणि दोन्ही सर्व्हिसेस रीस्टार्ट करते. चॅटमध्ये /new टाईप केल्यास नवीन संभाषण सुरू होते.

Ubuntu 24.04 वर Chromium अपयशी ठरते. Ubuntu 24.04 AppArmor द्वारे unprivileged user namespaces ब्लॉक करते, त्यामुळे Chromium चा स्वतःचा सँडबॉक्स सुरू होऊ शकत नाही आणि agent-browser अपयशी ठरते. इंस्टॉलर "--no-sandbox" ला ~/.agent-browser/config.json मध्ये लिहून यावर उपाय करतो. हे लक्षात ठेवा. यामुळे ब्राउझरचे आयसोलेशन कमी होते, म्हणूनच या अकाउंटकडे Iva व्यतिरिक्त कोणतीही महत्त्वाची माहिती नसावी.

FAQ

Iva self-host करण्यासाठी मला डोमेन किंवा ओपन पोर्टची गरज आहे का?

नाही. Iva लाँग पोलिंगद्वारे Telegram शी संवाद साधते: iva-telegram-poll.service हे getUpdates ला कॉल करते आणि प्रतीक्षा करते, त्यामुळे सर्व कनेक्शन तुमच्या सर्व्हरवरून बाहेर जाणारे (outbound) असतात. बाहेरून सर्व्हरपर्यंत कशाचीही पोहोच असण्याची गरज नाही, त्यामुळे तुम्हाला कोणत्याही DNS रेकॉर्डची किंवा प्रमाणपत्राची (certificate) आवश्यकता नाही. एजंटचा स्वतःचा HTTP पोर्ट, 8723, 127.0.0.1 वर बाइंड होतो आणि प्रोजेक्ट डॉक्युमेंटेशन तुम्हाला तो उघड (expose) न करण्याचा सल्ला देते. फक्त SSH ला परवानगी देणारा आणि इतर सर्व बंद असलेला फायरवॉल हे योग्य कॉन्फिगरेशन आहे.

दरमहा Iva चालवण्याचा खर्च किती येतो?

ऑगस्ट 2026 च्या प्रसिद्ध झालेल्या दरपत्रकानुसार, 5 डॉलर्सचा एक छोटा VPS आणि 5 डॉलर्सचा सर्वात स्वस्त फ्लॅट रेट मॉडेल प्लॅन मिळून दरमहा सुमारे 10 अमेरिकन डॉलर्स खर्च येतो. त्याऐवजी Ollama Cloud चा खर्च 20 डॉलर्स आहे आणि त्यावर फ्रंटियर मॉडेल्सचे बिल वेगळे येते. Deepgram चे स्टार्टर क्रेडिट्स सुरुवातीला व्हॉइससाठी पुरतात आणि वेब सर्च टियर्समध्ये मोफत मर्यादा उपलब्ध आहेत. OpenRouter हे 'पे-अॅज-यू-गो' (pay as you go) तत्त्वावर चालते, त्यामुळे त्याचा कोणताही निश्चित मासिक खर्च नाही.

Iva माझा डेटा कुठे ठेवते आणि त्याचा बॅकअप कसा घ्यायचा?

डीफॉल्टनुसार डेटा ~/iva/vault मध्ये असतो, जो ASSISTANT_VAULT_DIR द्वारे सेट केला जातो. हे प्लेन मार्कडाउन फाइल्सचे एक स्वतंत्र खाजगी git रिपॉझिटरी आहे: CORE.md, daily/YYYY-MM-DD.md, cards/ आणि summaries/. 05:00 वाजताचा मेमरी डॉक्टर या डेटाला कमिट आणि पुश करतो, परंतु हे तेव्हाच उपयुक्त ठरते जर रिपॉझिटरीला रिमोट जोडलेला असेल, म्हणून gh auth login चालवा किंवा सेटअप दरम्यान स्वतःचा रिमोट जोडा. tar czf ~/iva-vault-backup.tgz -C ~/iva vault वापरून एक ऑफलाइन प्रत देखील ठेवा आणि ती फाइल सर्व्हरवरून सुरक्षित ठिकाणी हलवा.

मी Iva self-host केल्यास माझा डेटा खाजगी राहतो का?

स्टोरेज तुमचे आहे, पण प्रोसेसिंग नाही. जोपर्यंत तुम्ही डेटा पुश करत नाही तोपर्यंत व्हॉल्ट तुमच्या डिस्कवर राहतो आणि .env हे सर्व्हिस युजरच्या मालकीचे असून 0600 मोडवर असते. मॉडेल कॉल्स आणि व्हॉइस ट्रान्सक्रिप्शन हे क्लाउड API द्वारे होतात, त्यामुळे ते संदेश तुमच्या मॉडेल प्रोव्हायडर आणि Deepgram कडून जातात. Iva हे MIT लायसन्स अंतर्गत आहे, त्यामुळे ते नेमके काय पाठवते हे तुम्ही वाचू शकता आणि त्यात बदलही करू शकता. Telegram अलाउलिस्ट 'फेल-क्लोज्ड' (fail closed) आहे, याचा अर्थ असा की रिकामी TELEGRAM_ALLOWED_USER_IDS फाइल कोणालाही प्रवेश देत नाही, अगदी तुम्हालाही नाही.

Iva कोणत्या मॉडेल प्रोव्हायडर्सना सपोर्ट करते?

MODEL_PROVIDER हे opencode (OpenCode Go), ollama (Ollama Cloud), openrouter आणि codex ला स्वीकारते. OpenRouter हे anthropic/claude-sonnet-4.5 सारखे वेंडर स्लग घेते आणि मॉडेल्सची सर्वात मोठी निवड उपलब्ध करून देते. codex हे iva login द्वारे विद्यमान ChatGPT सबस्क्रिप्शनमध्ये साइन इन करते आणि त्यासाठी कोणत्याही API की ची गरज लागत नाही. प्रोव्हायडर सेट करा, मॅचिंग कॉन्टेक्स्ट विंडो मॉडेलच्या प्रत्यक्ष आकारावर सेट करा आणि त्यानंतर iva restart चालवा, कारण मॉडेल हे प्रोसेस सुरू होताना एकदाच वाचले जाते.