Iva Telegram AI asistanı kendi sunucunuzda nasıl kurulur
Iva Telegram yapay zeka asistanını port açmadan ve alan adı kullanmadan VPS üzerinde kurun. systemd servisleri ve Obsidian yedekleme yöntemleriyle v0.3.13 kurulum rehberi.
Ne inşa ediyorsunuz
Iva, kendi sunucunuzda barındırabileceğiniz bir Telegram yapay zeka asistanıdır ve dışarıdan gelen bağlantılar için port açmanızı veya bir alan adı yönlendirmenizi gerektirmeyen nadir uygulamalardan biridir. Sunucu üzerinde dış dünyaya açık bir servis çalışmadığı için herhangi bir sertifikaya da ihtiyaç duymaz. Servis, Telegram'a dışa doğru bir bağlantı başlatır, bu bağlantıyı açık tutar ve gelen mesajları bu kanal üzerinden okur. Diğer tüm işlevler bu tek yönlü dış bağlantı üzerinden yürütülür.
Iva, MIT lisansına sahiptir ve Node ile yazılmıştır. Belleği, Obsidian'ın doğrudan açabildiği düz markdown dosyalarından oluşan bir klasördür; bu sayede uygulama çalışmasa bile tutulan notlar okunabilir durumdadır. Bu kılavuz, 6 Ağustos 2026 tarihinde yayınlanan v0.3.13 sürümünü temel almaktadır.
Kendi sunucunuzda barındırdığınız çoğu yazılım, bir DNS (alan adı sistemi) kaydı ve Certbot ile oluşturulmuş bir Let's Encrypt sertifikası ile başlar. Iva bu katmanı tamamen devre dışı bırakır; bu nedenle yalnızca SSH erişimine izin veren bir güvenlik duvarının arkasındaki küçük bir VPS, tam bir kurulum için yeterlidir.
Iva neden açık portlara ihtiyaç duymaz
iva-telegram-poll.service bir long polling köprüsüdür. Telegram'ın getUpdates API'sini çağırır ve yanıtı bekler, bu nedenle her bağlantı sizin sunucunuzdan başlatılır. Telegram hiçbir zaman geri bağlantı kurmaz; bu da yapılandırılacak bir reverse proxy ve unutulacak bir sertifika yenileme süreci olmadığı anlamına gelir.
Ajanın kendisi yalnızca 127.0.0.1 8723 numaralı portu dinler. Proje belgeleri bu konuda nettir: 8723 numaralı portu dış dünyaya açmayın ve önüne koyacağınız herhangi bir reverse proxy, bearer token gereksinimini korumalıdır. Kurulumdan sonra bind adresini kontrol edin.
sudo ss -tlnp | grep 8723Adres 127.0.0.1:8723 şeklinde görünmelidir. 0.0.0.0:8723 gibi bir wildcard adresi, ajanın HTTP rotalarının internetten erişilebilir olduğu anlamına gelir; bota özel herhangi bir veri göndermeden önce bunu düzeltmelisiniz.
Bu nedenle güvenlik duvarı kapalı kalmalıdır. Etkinleştirmeden önce SSH erişimine izin verin, çünkü SSH kuralı olmayan bir ufw enable, o an işlem yaptığınız oturumu kapatacaktır.
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw statusTek satırlık yükleyicinin gerçekte yaptığı işlemler
Projenin ana sayfası, GitHub üzerindeki bir betiği doğrudan bash'e aktaran tek bir komut sunar. Betiği çalıştırmadan önce mutlaka okuyun; çünkü bu betik sadece tek bir program kurmaktan çok daha fazlasını yapar.
curl -fsSL https://raw.githubusercontent.com/smixs/iva/main/install.sh -o iva-install.sh
less iva-install.sh- Algılanan paket yöneticisini kullanarak sistem paketlerini kurar:
git,gh,python3,ffmpeg,pandocvepoppler-utils. - Sunucuda 1.5 GB'tan az RAM varsa ve swap alanı tanımlanmamışsa, derleme işleminin yarıda kesilmemesi için
/swapfilekonumunda 2 GB boyutunda bir swap dosyası oluşturur. - nvm'i ve ardından Iva'nın çalışması için gereken minimum sürüm olan Node 24'ü kurar.
- Python paket yöneticisi olan
uv'i~/.local/bindizinine kurar. - Depoyu
~/ivadizinine kopyalar venpm cikomutunu çalıştırır. - İki global npm paketini kurar:
agent-browser(ardından Chromium'u indirir) ve@googleworkspace/cli. - Kurulum sihirbazını çalıştırır, projeyi derler ve kasayı (vault) oluşturur.
ivakomutunu~/.local/bindosyasına yazar ve systemd kullanıcı birimlerini kurar.
Tek bir satır için oldukça fazla yazılım işlemi gerçekleştirilmektedir. Bu durum, README dosyasında yer alan "root olarak değil, normal bir kullanıcı olarak kurun" talimatının da nedenini açıklar: Ajanın kabuk aracı, daha sonra yükleyicinin sahip olduğu yetkilerle çalışacaktır. Betik, sudo komutunu yalnızca paket kurulumları ve swap dosyası oluşturma işlemleri için, zaten root kullanıcısıysanız komutları doğrudan çalıştıran bir yardımcı araç aracılığıyla çağırır.
Kurulumdan önce özel bir kullanıcı oluşturun
Iva için ayrı bir hesap tanımlayın. Ajan, ana makine üzerinde Node'un child_process arayüzü aracılığıyla shell komutlarını çalıştırır; herhangi bir container veya sandbox yapısı bulunmadığından, çalıştırıldığı hesap güvenlik sınırını oluşturur.
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 önemlidir çünkü Iva, systemd user birimleri olarak çalışır. Linger özelliği etkinleştirilmezse, systemd ilgili kullanıcının son oturumu kapandığı anda servislerini durdurur; bu durumda SSH bağlantısını kapattığınızda asistan da sonlanır. Aynı kural, kendi yazdığınız systemd servis ve zamanlayıcıları için de geçerlidir.
Hesabın yalnızca yükleyici paketleri eklerken sudo yetkisine ihtiyacı vardır. Kurulum tamamlandığında bu yetkiyi geri alın.
sudo deluser iva sudoSSH üzerinden doğrudan bu kullanıcı ile giriş yapın. sudo -iu iva ile girdiğiniz bir shell, DBUS_SESSION_BUS_ADDRESS veya XDG_RUNTIME_DIR değişkenlerine sahip değildir; bu nedenle her systemctl --user komutu Failed to connect to bus hatasıyla başarısız olur. Bu sınırı belirlemek, servisleri en düşük yetkili kullanıcılarla çalıştırmak ile aynı işlemdir.
Bash'e yönlendirmek yerine sabitlenmiş bir sürüm kurun
Yükleyicinin kullanışlı bir özelliği vardır. Herhangi bir şeyi klonlamadan önce, betiğin bulunduğu dizinin halihazırda "eve" içeren bir package.json barındırıp barındırmadığını kontrol eder. Eğer barındırıyorsa, o dizindeki sürümü derler ve klonlama işlemini atlar. Böylece sürümü kendiniz seçebilirsiniz.
git clone --branch v0.3.13 https://github.com/smixs/iva.git ~/iva
cd ~/iva
git log -1 --oneline
bash install.shArtık hangi kodun çalıştığını biliyorsunuz. Betik, main öğesini o anki durumu neyse o şekilde klonladığında bunu bilemezsiniz. Iva, 4 Ağustos 2026 ile 6 Ağustos 2026 arasında beş sürüm yayınladı; bu nedenle bu sabahki main ile bu öğleden sonraki main aynı program değildir.
Bir etiket (tag) üzerinden checkout yapmak, git'i detached HEAD durumunda bırakır. Bu durum sorunsuz çalışır ancak sınırını anlamak gerekir: iva update, checkout işlemini güncelleme dalına doğru ilerletir; yani sabitleme işlemi kalıcı bir dondurma değil, bilinen bir başlangıç noktasıdır. iva version, paket sürümünü ve git commit bilgisini yazdırır, böylece nerede olduğunuzu her zaman görebilirsiniz.
Daha sonraki bir sürüme bilinçli olarak geçmek için etiketleri listeleyin, IVA_TAG değişkenini seçtiğiniz etikete ayarlayın ve ardından yükleyiciyi checkout dizininin içinden tekrar çalıştırın.
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, sihirbazın zaten çalışan bir .env üzerinde tekrar çalışmasını engeller.
Beş sihirbaz adımı ve istenen anahtarlar
- Model sağlayıcısı ve model.
MODEL_PROVIDER;opencode,ollama,openrouterveyacodexdeğerlerini kabul eder. Sihirbaz, anahtarı canlı olarak doğrular ve planınızın sunduğu modelleri listeler. - Ses ve arama. Sesli notları yazıya dökmek için bir Deepgram anahtarı gerekir. Web arama anahtarı (Tavily, Exa, Parallel veya Brave) isteğe bağlıdır.
- @BotFather üzerinden alınan Telegram bot token değeri;
getMeuç noktası ile doğrulanır. - Erişim kontrolü. Botunuza bir mesaj gönderirsiniz ve sihirbaz, sayısal kullanıcı kimliğinizi
getUpdatesiçinden okur. - Sistem ayarları. IANA zaman dilimi, kasa dizini ve varsayılan olarak 8723 olan yerel port.
Bunlardan ikisi, "tek komut" çerçevesinin gizlediği bağımlılıklardır. Iva herhangi bir model ile gelmez, bu nedenle yanıt verebilmesi için ücretli bir model planı veya API anahtarı gerekir. Ayrıca sesi kendi başına yazıya dökmez, bu yüzden sesli notlar için ayrı bir servis gereklidir. Deepgram'ın nova-3 modeli, DEEPGRAM_LANGUAGE=multi ile dili algılar ve yeni Deepgram hesapları, kişisel kullanımda aylarca yetecek başlangıç kredileri sunar. Metin işlemleri yalnızca model anahtarı ile çalışır. Yalnızca ses özelliği Deepgram'a bağımlıdır.
Sihirbazın yazdıklarını kontrol edin.
grep -E '^(MODEL_PROVIDER|TELEGRAM_ALLOWED_USER_IDS|ASSISTANT_VAULT_DIR|IVA_PORT)=' ~/iva/.env
ls -l ~/iva/.envls, 0600 modunda -rw------- çıktısını vermelidir; çünkü bu dosya yapıştırdığınız tüm anahtarları tutar. TELEGRAM_ALLOWED_USER_IDS, sayısal kimliğinizi içermelidir. İzin listesi varsayılan olarak kapalıdır (fail closed), bu nedenle boş bir değer Iva'nın kimseye yanıt vermeyeceği anlamına gelir.
Model, işlem başladığında bir kez okunur. MODEL_PROVIDER dosyasını veya .env içindeki bir model adını düzenlemek, iva restart komutunu çalıştırmadığınız sürece hiçbir şeyi değiştirmez. openrouter üzerinde model adı, yalın bir isim değil, anthropic/claude-sonnet-4.5 gibi bir sağlayıcı kısa adıdır (slug). codex üzerinde ise herhangi bir API anahtarı yoktur: iva login, mevcut bir ChatGPT aboneliği ile oturum açar.
Iva'nın aylık çalıştırma maliyeti nedir
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
}
]Bunlar Ağustos 2026 itibarıyla yayınlanan liste fiyatlarıdır, ölçüm verisi değildir. 5 ABD doları tutarındaki küçük bir VPS ve 5 dolar tutarındaki OpenCode Go planı, yaklaşık 10 dolar aylık maliyetle en ucuz tam kurulumu oluşturur. Ollama Cloud, 20 dolarlık diğer sabit fiyatlı seçenektir; bu seçenekte sınır modelleri, planın üzerine ek kullanım olarak faturalandırılır. Ses özellikleri, Deepgram başlangıç kredileri bitene kadar 0 maliyetindedir.
OpenRouter için burada bir satır bulunmamaktadır çünkü bu servis kullandıkça öde modelindedir, dolayısıyla faturanız kullanımınıza göre şekillenir. İzlenmesi gereken seçenek budur: her etkileşimde 131072 token'lık bir bağlam penceresi taşıyan bir asistan, sabit bir planın maliyetini hızla aşabilir. Bağlam penceresi değişkenini modelin gerçek boyutuna ayarlayın; şişirilmiş bir değer yalnızca token israfına yol açar.
İki servis ve iki zamanlayıcı
iva.service, ajanın kendisini çalıştırır.iva-telegram-poll.service, Telegram ile iletişim kuran uzun süreli yoklama (long polling) köprüsünü çalıştırır.iva-memory-doctor.timer, saat 05:00'te tetiklenir ve kasa üzerinde gece bakım işlemini gerçekleştirir.iva-update-check.timer, saat 10:00'da tetiklenir ve daha yeni bir sürümün mevcut olup olmadığını kontrol eder.iva-telegram-userbot.service, yalnızca isteğe bağlı Telethon proxy yapılandırmasını kurduğunuzda mevcuttur.
iva status
systemctl --user status iva.service iva-telegram-poll.service
systemctl --user list-timers
iva logs polliva status, her iki servisi ve her iki izleme (watchdog) zamanlayıcısını raporlar. systemctl --user list-timers, her zamanlayıcı için bir sonraki çalışma zamanını yazdırır; bellek doktorunun bu gece gerçekten çalışacağını bu şekilde teyit edersiniz. Her iki servis de active (running) durumunda olmalıdır. Eğer bir servis döngüsel olarak yeniden başlıyorsa, journalctl --user -u iva.service -n 100 hatanın nedenini gösterir.
Hata ayıklama sırasında bu ayrım önemlidir. Ajan kapalıyken köprü çalışır durumda ve yoklama yapıyor olabilir; bu durumda Telegram mesajınızı kabul eder ancak mesajınıza yanıt verecek kimse olmaz. iva logs poll köprüyü, iva logs ise ajanı takip eder; dolayısıyla iki günlük kaydı, sistemin hangi yarısının bozuk olduğunu size bildirir.
Obsidian kasasının konumu ve yedeklenmesi
ASSISTANT_VAULT_DIR varsayılan olarak kurulum dizini içindeki vault konumunu kullanır, bu nedenle bellek ~/iva/vault dizininde tutulur. Bu dizin, koddan bağımsız, kendi başına bir git deposudur; bu sayede notlarınıza dokunmadan Iva güncellemesi yapabilirsiniz.
vault/CORE.md, kalıcı gerçekleri ve değişmeyen tercihleri tutar, 1200 karakterle sınırlıdır ve her sistem isteminde (system prompt) yer alır.vault/daily/YYYY-MM-DD.md, günün dökümüdür ve yalnızca ekleme (append-only) mantığıyla çalışır.vault/cards/; kişiler, projeler, kararlar, fikirler ve notlar için yazılmış kartları barındırır.vault/summaries/daily/,weekly/,monthly/veyearly/özetleri (rollups) tutar.vault/attachments/dosyaları tarihe göre saklar,vault/.graph/ise bağlantı grafiğini tutar.vault/schema.json, kart türlerini ve eskime kurallarını tanımlar.
Özetler, süreç içerisinde belirli bir zamanlamaya göre çalışır. Saat 04:00'teki günlük geçiş, dünkü dökümü kartlara ve bir özete dönüştürerek CORE.md dosyasını yeniden yazar; ardından haftalık, aylık ve yıllık geçişler bunları sırasıyla sıkıştırır. Saat 05:00'te bellek doktoru (memory doctor), herhangi bir model kullanmadan deterministik bir geçiş yapar: şemayı zorunlu kılar, bağlantı grafiğini yeniden oluşturur, dizini yeniler ve ardından commit ile push işlemlerini gerçekleştirir.
Bu push işlemi sizin yedeğinizdir ve kullanıcıların genellikle gözden kaçırdığı adımdır. Eğer kasanın bir git uzak sunucusu (remote) yoksa, doktor gh aracılığıyla özel bir GitHub deposu oluşturmaya çalışır; bu işlem için kimlik doğrulaması yapılmış bir GitHub CLI gereklidir.
gh auth login
systemctl --user start iva-memory-doctor.service
cd ~/iva/vault && git log --oneline -3Bugün tarihli bir commit, geçişin çalıştığı ve kasanın kaydedildiği anlamına gelir. Günlük kaydındaki gh not available uyarıları ise bunun tersini ifade eder: kasa korunmaktadır ancak sunucudan asla dışarı çıkmamaktadır; bu durumda ölü bir VPS, belleğinizi de beraberinde götürür.
Kontrolü sizde olan bir kopyayı mutlaka saklayın.
tar czf ~/iva-vault-backup.tgz -C ~/iva vaultBu dosyayı scp ile sunucudan dışarı kopyalayın ve ardından sunucudan silin. Belleği Obsidian içinde okumak için, Obsidian'ı kasa deposunun bir kopyasına (clone) yönlendirin. Wikilink ve backlink yapıları olduğu gibi çalışır, grafik görünümü de aynı şekilde işlevseldir. Kartları ve CORE.md dosyalarını elle düzenlemek güvenlidir. MOC.md ve .graph/ dosyalarına dokunmayın, çünkü gece geçişleri her ikisini de yeniden oluşturur.
Kasayı hayatınızın bir günlüğü olarak değerlendirin
Bu dizin; kiraladığınız bir makinede ne söylediğinizin, kiminle tanıştığınızın ve neye karar verdiğinizin tarihli bir kaydıdır. Bundan iki sonuç çıkar.
Self-hosting, depolamayı taşır, işlemeyi değil. Her etkileşim model sağlayıcınıza, her sesli not ise Deepgram'a gider. Kasa sizindir. İstekler, onlara hizmet veren şirketlerden gizli değildir. Bellek katmanını, kendi VPS'niz üzerinde bir Mem0 bellek sunucusu ile yaptığınız gibi kendiniz çalıştırmanız da aynı yapıdadır: depo yereldir ancak model çağrısı yine de sistemden dışarı çıkar. Bir konu üçüncü bir taraf için fazla hassassa, onu sohbetin dışında tutun.
Bu hesabın erişim alanı tüm kasadır. Iva'nın araçları, Docker ve sandbox olmadan, Node'un fs ve child_process araçları aracılığıyla doğrudan ana makinede çalışır; bu nedenle ele geçirilen bir etkileşim, servis kullanıcısının sahip olduğu her türlü erişim yetkisine sahip olur. Hesabın kurulumdan sonra sudo tutmamasının ve izin listesinin göründüğünden daha fazla ilgiyi hak etmesinin nedeni budur: izin listesi, kimin mesajlarının sunucunuzda komuta dönüşeceğine karar veren kapıdır. Asistanı hiçbir şeyi dışarıya açmadan cebinizde tutmak istiyorsanız, bu, kendi kendine barındırılan bir Hermes aracısına telefonunuzdan ulaşmak için kullanılan modelin aynısıdır; sohbet istemcisi, aksi takdirde genel bir uç noktanın yapacağı işi üstlenir.
Neler bozulur ve göreceğiniz mesajlar
Build killed, exit 137. Çekirdeğin bellek yöneticisi (OOM killer), RAM yetersizliği nedeniyle derleme işlemini sonlandırdı. Yükleyici, yalnızca RAM 1.5 GB'ın altındaysa ve swap alanı yoksa swap ekler; bu durumda swap alanını manuel olarak ekleyin ve yükleyiciyi tekrar çalıştırın.
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
free -hFailed to connect to bus. Kabukta kullanıcı oturum veri yolu (user session bus) bulunmadığında, sudo -iu iva tarafından sağlanan her systemctl --user komutu bu hatayı verir. İlgili kullanıcı ile normal bir SSH oturumu açın veya komuttan önce XDG_RUNTIME_DIR=/run/user/$(id -u iva) değişkenini dışa aktarın (export).
Bot sizi görmezden geliyor. TELEGRAM_ALLOWED_USER_IDS dosyası boş ve izin listesi varsayılan olarak kapalı (fail closed) durumdadır. Bota bir mesaj gönderin; bot size yalnızca sayısal kimliğinizi (ID) içeren bir yanıt dönecektir. Bu kimliği .env içine yazın ve iva restart komutunu çalıştırın.
Bot iva config komutundan hemen sonra sessizleşiyor. Sihirbaz, ASSISTANT_HOST dosyasını güncellemeden IVA_PORT dizinini taşıyabilir; bu durumda köprü (bridge), yanıt vermeyen bir porta bağlanır. İki satırı karşılaştırın ve ardından yeniden başlatın.
grep -E '^(IVA_PORT|ASSISTANT_HOST)=' ~/iva/.env
iva restartSesli nota yanıt gelmiyor. Telegram Bot API, 20 MB üzerindeki dosya indirmelerini reddeder; bu nedenle köprü uzun ses dosyalarını alamaz ve Deepgram'a gönderecek bir veri bulamaz. Dosyayı göndermeden önce parçalara ayırın.
ffmpeg -i long.ogg -f segment -segment_time 600 -c copy part-%02d.oggBir sıra (turn) takılıyor ve yanıt vermiyor. Sıkışmış iş akışı durumu, yeniden başlatma sonrasında da varlığını korur ve kendini tekrar kuyruğa alır; bu yüzden sadece yeniden başlatmak sorunu çözmez. iva reset komutu bu durumu karantinaya alır ve her iki servisi de yeniden başlatır. Sohbet içindeki /new komutu ise yeni bir konuşma başlatır.
Chromium, Ubuntu 24.04 üzerinde çalışmıyor. Ubuntu 24.04, AppArmor aracılığıyla ayrıcalıksız kullanıcı ad alanlarını (user namespaces) engeller; bu nedenle Chromium'un kendi korumalı alanı (sandbox) başlayamaz ve agent-browser başarısız olur. Yükleyici, "--no-sandbox" değerini ~/.agent-browser/config.json dosyasına yazarak bu durumu aşar. Bu yapılandırmanın orada olduğunu unutmayın. Bu işlem tarayıcının izolasyonunu düşürür; bu da ilgili hesabın Iva dışında hiçbir şeye sahip olmaması gerektiğinin bir başka nedenidir.
FAQ
Iva'yı kendi sunucumda barındırmak için bir alan adına veya açık bir porta ihtiyacım var mı?
Hayır. Iva, Telegram ile long polling yöntemiyle haberleşir: iva-telegram-poll.service, getUpdates adresini çağırır ve yanıt bekler; bu nedenle tüm bağlantılar sunucunuzdan dışarıya doğrudur. Dış dünyadan sunucunuza herhangi bir erişim gerekmediği için DNS kaydına veya sertifikaya ihtiyacınız yoktur. Ajanın kendi HTTP portu olan 8723, 127.0.0.1 adresine bağlanır ve proje dokümantasyonu bu portu dışarıya açmamanızı önerir. Yalnızca SSH erişimine izin veren bir güvenlik duvarı, doğru yapılandırmadır.
Iva'yı aylık çalıştırmanın maliyeti nedir?
Ağustos 2026 liste fiyatlarına göre, küçük bir VPS için 5 dolar ve en uygun sabit fiyatlı model planı için 5 dolar olmak üzere, aylık toplam maliyet yaklaşık 10 ABD dolarıdır. Ollama Cloud maliyeti 20 dolardır ve gelişmiş modeller için ek ücretlendirme yapılır. Deepgram başlangıç kredileri ses işlemlerini ilk aşamada karşılar; web arama katmanlarının ise ücretsiz kullanım limitleri mevcuttur. OpenRouter kullandıkça öde modeline sahip olduğu için sabit bir aylık tutarı yoktur.
Iva verilerimi nerede tutar ve nasıl yedeklerim?
Veriler varsayılan olarak ~/iva/vault dizininde tutulur ve bu dizin ASSISTANT_VAULT_DIR ile ayarlanır. Bu dizin, düz metin markdown dosyalarından oluşan ayrı ve özel bir git deposudur: CORE.md, daily/YYYY-MM-DD.md, cards/ ve summaries/. Saat 05:00'te çalışan bellek doktoru (memory doctor) bu verileri commit eder ve push yapar; ancak bu işlemin başarılı olması için deponun bir uzak sunucuya (remote) bağlı olması gerekir. Bu nedenle kurulum sırasında gh auth login komutunu çalıştırın veya kendi uzak deponuzu ekleyin. Ayrıca tar czf ~/iva-vault-backup.tgz -C ~/iva vault ile çevrimdışı bir kopya oluşturun ve bu dosyayı sunucudan başka bir yere taşıyın.
Iva'yı kendi sunucumda barındırdığımda verilerim gizli kalır mı?
Depolama size aittir ancak işleme süreci farklıdır. Siz push yapana kadar kasa (vault) diskinizde kalır ve .env dosyası, servis kullanıcısı tarafından sahip olunan 0600 modunda tutulur. Model çağrıları ve ses transkripsiyonu bulut API'leri üzerinden gerçekleştiği için bu mesajlar model sağlayıcınız ve Deepgram üzerinden geçer. Iva, MIT lisanslıdır; bu sayede gönderilen verileri tam olarak inceleyebilir ve değiştirebilirsiniz. Telegram izin listesi (allowlist) varsayılan olarak kapalıdır; yani boş bir TELEGRAM_ALLOWED_USER_IDS dosyası, siz dahil herkesin erişimini engeller.
Iva hangi model sağlayıcılarını destekler?
MODEL_PROVIDER; opencode (OpenCode Go), ollama (Ollama Cloud), openrouter ve codex servislerini kabul eder. OpenRouter, anthropic/claude-sonnet-4.5 gibi satıcı tanımlayıcılarını (slug) kullanır ve en geniş model seçeneğini sunar. codex, iva login ile mevcut bir ChatGPT aboneliğine giriş yapar ve API anahtarı gerektirmez. Sağlayıcıyı ayarlayın, bağlam penceresini (context window) modelin gerçek boyutuna göre yapılandırın ve ardından iva restart komutunu çalıştırın; çünkü model bilgisi süreç başladığında yalnızca bir kez okunur.