SSD Nodes Learn Hosting plans →
Rehberler Matt ConnorYazan Matt Connor

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ıya herhangi bir 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ı kurar, bu bağlantıyı açık tutar ve mesajlarınızı bu kanal üzerinden okur. Diğer tüm işlevler bu tek çıkış bağlantısı üzerinden yürütülür.

Iva, MIT lisansına sahiptir ve Node ile yazılmıştır. Hafızası, doğrudan Obsidian ile açılabilen düz markdown dosyalarından oluşan bir klasördür; bu sayede uygulama çalışmasa bile sizinle ilgili tuttuğu notlar okunabilir durumda kalır. Bu kılavuz, 6 Ağustos 2026 tarihinde yayınlanan v0.3.13 sürümünü temel alır. Depo ismi daha sonra smixs/iva yerine smixs/iva-agent olarak değiştirilmiştir ve aşağıdaki komutlar yeni ismi kullanmaktadır.

Çoğu self-hosted 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 8723

Adres 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 status

Tek satırlık yükleyicinin gerçekte yaptığı işlemler

Projenin ana sayfası, GitHub üzerindeki bir betiği doğrudan bash'e yönlendiren tek bir komut sunar. Betiği çalıştırmadan önce mutlaka okuyun; çünkü bu betik tek bir program yüklemekten çok daha fazlasını yapar.

curl -fsSL https://raw.githubusercontent.com/smixs/iva-agent/main/install.sh -o iva-install.sh
less iva-install.sh
  • Algılanan paket yöneticisini kullanarak sistem paketlerini yükler: git, gh, python3, ffmpeg, pandoc ve poppler-utils.
  • Sunucunun RAM miktarı 1.5 GB'ın altındaysa ve swap alanı yoksa, /swapfile konumunda 2 GB boyutunda bir swap dosyası oluşturur; aksi takdirde derleme işlemi yetersiz bellek nedeniyle sonlandırılır.
  • nvm aracını ve ardından Iva'nın çalışması için gereken minimum sürüm olan Node 24'ü yükler.
  • Python paket yöneticisi olan uv aracını ~/.local/bin dizinine kurar.
  • Depoyu ~/iva dizinine kopyalar ve npm ci komutunu çalıştırır.
  • agent-browser aracını global bir npm paketi olarak yükler; bu paket Chromium'u indirir ve Google Workspace CLI aracı olan gws'ü sudo yetkisi gerektirmeden ~/.local altına yerleştirir.
  • Kurulum sihirbazını çalıştırır, projeyi derler ve kasayı oluşturur.
  • iva komutunu ~/.local/bin dosyasına yazar ve systemd kullanıcı birimlerini kurar.

Tek bir satır için oldukça fazla yazılım yüklenmektedir. Bu durum, README dosyasında yer alan "root kullanıcısı olarak değil, normal bir kullanıcı olarak yükleyin" talimatını da açıklar: Ajanın kabuk aracı, daha sonra yükleyicinin sahip olduğu yetkilerle çalışır. Betik, sudo komutunu yalnızca paket yüklemeleri ve swap dosyası oluşturma işlemleri için, ayrıca Chromium adımı için bir kez daha (eğer gerekirse) ve zaten root kullanıcısı olduğunuzda 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 iva

enable-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 sudo

SSH ü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 dizinde package.json içeren bir "eve" olup olmadığını kontrol eder. Eğer varsa, 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-agent.git ~/iva
cd ~/iva
git log -1 --oneline
bash install.sh

Artık hangi kodun çalıştığını biliyorsunuz. Betiğin main deposunu o anki durumuyla klonladığında neyi çalıştırdığınızı 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ırlarını anlamak gerekir: iva update, checkout işlemini güncelleme dalına taşır; 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 her zaman nerede olduğunuzu görebilirsiniz.

Daha sonraki bir sürüme geçmek için etiketleri listeleyin, aşağıda v0.3.13 yerine seçtiğiniz etiketi kullanarak checkout yapın ve ardından yükleyiciyi tekrar dizin içinden çalıştırın. Yükleyicinin kendi içinde bir sürüm etiketi ayarı yoktur. Belgelenmiş ortam değişkenleri REPO_URL, BRANCH ve INSTALL_DIR şeklindedir; bu nedenle git checkout sabitleme işlemini yapan tek yöntemdir.

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, sihirbazın zaten çalışan bir .env üzerinde tekrar çalışmasını engeller. Ulaştığınız commit bilgisini doğrulamak için sonrasında iva version komutunu çalıştırın.

Beş sihirbaz adımı ve istenen anahtarlar

  1. Model sağlayıcısı ve model. MODEL_PROVIDER; opencode, ollama, openrouter veya codex değerlerini kabul eder. Sihirbaz, anahtarı canlı olarak doğrular ve planınızın sunduğu modelleri listeler.
  2. 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.
  3. @BotFather üzerinden alınan Telegram bot token değeri; getMe uç noktası ile doğrulanır.
  4. Erişim kontrolü. Botunuza bir mesaj gönderirsiniz ve sihirbaz, sayısal kullanıcı kimliğinizi getUpdates içinden okur.
  5. 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/.env

ls, 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

GrafikMonthly cost of a self-hosted Iva, published list prices, October 2026
Bu grafiğin arkasındaki veriler
[
  {
    "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
  }
]

Bunlar Ekim 2026 itibarıyla yayınlanan liste fiyatlarıdır, ölçüm verisi değildir. 5 ABD doları tutarındaki küçük bir VPS ve 10 dolar tutarındaki OpenCode Go planı, yaklaşık 15 dolar ile en ucuz tam kurulumu oluşturur. OpenCode'un kendi Go sayfası bu aylık fiyatı ilk ay indirimi olmaksızın listeler; Iva'nın README dosyası ise aynı yığının toplam maliyetini 14 ila 15 dolar civarında belirtir. Ollama Cloud, Pro planı için 20 dolar sabit ücretli diğer seçenektir; planın içerdiği kredilerin üzerindeki kullanım ayrıca faturalandırılır. Sesli özellikler, Deepgram başlangıç kredileri bitene kadar 0 tutarındadır.

OpenRouter burada bir satırda yer almaz çünkü kullandıkça öde modeline sahiptir, dolayısıyla faturanız kullanımınıza göre şekillenir. Bu, takip edilmesi gereken seçenektir: her adımda 131072 token'lık bağlam penceresi taşıyan bir asistan, sabit fiyatlı bir plandan daha hızlı harcama yapabilir. Bağlam penceresi değişkenini modelin gerçek boyutuna ayarlayın; çünkü ş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 poll

iva 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/ ve yearly/ ö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 -3

Bugü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 vault

Bu 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 -h

Failed 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 restart

Sesli 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.ogg

Bir 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 iletişim kurar: 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ğru (outbound) gerçekleşir. Dışarıdan sunucuya 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 portun dış dünyaya açılmamasını tavsiye eder. 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?

Ekim 2026 liste fiyatlarına göre, küçük bir VPS için 5 dolar ve en uygun sabit fiyatlı model planı için 10 dolar olmak üzere, aylık toplam yaklaşık 15 ABD doları tutarındadır. Ollama Cloud maliyeti 20 dolardır ve dahil edilen kredilerin üzerindeki kullanımlar ayrıca faturalandırılır. Deepgram başlangıç kredileri ses işlemlerini başlangıçta karşılar ve web arama katmanlarının ücretsiz kullanım limitleri mevcuttur. OpenRouter kullandıkça öde modeline sahiptir, bu nedenle sabit bir aylık tutarı yoktur.

Iva verilerimi nerede tutar ve nasıl yedeklerim?

Varsayılan olarak ASSISTANT_VAULT_DIR ile ayarlanan ~/iva/vault dizininde tutar. 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) verileri commit eder ve push eder; 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ı sunucunun dışına taşıyın.

Iva'yı kendi sunucumda barındırırsam verilerim gizli kalır mı?

Depolama alanı size aittir, ancak işleme süreci farklıdır. Siz push edene kadar kasa (vault) diskinizde kalır ve .env dosyası, servis kullanıcısının sahipliğinde 0600 modunda tutulur. Model çağrıları ve ses transkripsiyonu bulut API'leri üzerinden gerçekleştiğinden, bu mesajlar model sağlayıcınız ve Deepgram üzerinden geçer. Iva, MIT lisansına sahiptir; bu sayede ne gönderdiğini tam olarak inceleyebilir ve değiştirebilirsiniz. Telegram izin listesi (allowlist) "fail closed" prensibiyle çalışır; yani boş bir TELEGRAM_ALLOWED_USER_IDS dosyası, siz dahil herkesin erişimini engeller.

Iva hangi model sağlayıcılarını destekler?

Sabitlenmiş v0.3.13 sürümünde MODEL_PROVIDER; opencode (OpenCode Go), ollama (Ollama Cloud), openrouter ve codex seçeneklerini destekler. OpenRouter, anthropic/claude-sonnet-4.5 gibi satıcı kısaltmalarını kabul eder ve en geniş model yelpazesini sunar. codex, iva login ile mevcut bir ChatGPT aboneliğine giriş yapar ve API anahtarı gerektirmez. Sonraki sürümler, Claude aboneliği ve özel OpenAI uyumlu uç noktalar dahil olmak üzere daha fazla rota ekleyecektir. 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, süreç başladığında yalnızca bir kez okunur.