Iva runs on your server with your keys. Here is every external service it talks to, with real prices: one paid model subscription, one paid box — everything else fits a free tier. Total: about $9/mo.
| Provider | Price | Text models | Vision |
|---|---|---|---|
| OpenCode Go (ex-Zen) | ~$5/mo | ~23 models fetched live at setup — deepseek-v4-pro (default), kimi-k3, kimi-k2.7-code, glm-5.2, minimax-m3, qwen3.7-max, grok-4.5… |
qwen3.7-plus |
| Ollama Cloud | ~$20/mo | ~19 models fetched live — deepseek-v4-pro (default), kimi-k3, glm-5.2, minimax-m3, gpt-oss:120b… |
gemma4:31b |
| OpenRouter | pay-as-you-go | 300+ models across vendors — pick any slug (vendor/model) |
google/gemini-2.5-flash |
| OpenAI (ChatGPT subscription) | your existing Plus/Pro/Team | the models your plan exposes (gpt-5.x, -codex), fetched live |
same subscription (multimodal) |
The first three are plain API keys; the last rides your personal OpenAI subscription:
- 🔌 OpenAI-compatible — Go, Ollama and OpenRouter share the same wire format, so switching is one line in
.env - 🌍 Any IP — all answer from any server location, no region blocks
- 💸 No markup — you pay the provider directly; Iva adds nothing on top
MODEL_PROVIDER=opencode # or ollama / openrouter / codex, then `iva restart`Start with Go: a quarter of the price, ~23 models to switch between (the wizard pulls the live list, so new ones like kimi-k3 appear on their own). Keys, model pick and context-window settings live in configuration.md.
Two things about the live lists. Both catalogs churn — Ollama Cloud retired gemma3:12b on 2026-07-15 and Go dropped gemini-3-flash, so a hand-written model id in .env can start failing without you touching anything; if the bot goes quiet after weeks of silence on your side, re-run iva config and re-pick from the live list. And on Ollama Cloud the frontier tags (kimi-k3 among them) bill as extra usage on top of the plan: with an empty extra-usage balance the API answers 402, so top it up at ollama.com/settings or stay on deepseek-v4-pro.
Use the OpenAI subscription you already pay for — no separate API key, no per-token bill. Iva signs in the same way the official codex CLI does (OAuth against auth.openai.com), stores a refreshable token in data/codex-auth.json (chmod 600), and calls the subscription's Responses backend directly. The access token is refreshed automatically before it expires.
iva login # device code: opens a link + one-time code (works on a headless VPS)
iva login --browser # PKCE flow: opens a browser on this machine
iva config # pick the provider (option 3) and a model from your plan's live list
iva restartNotes: the model list is pulled from your subscription at setup time, so you always see exactly what your plan allows. Set CODEX_CONTEXT_WINDOW to the real window of the model you picked (compaction derives its threshold from it). Routing a self-hosted assistant through the ChatGPT subscription backend is a grey area under OpenAI's terms — you are using your own subscription on your own server, but weigh that yourself.
One key for 300+ models (Anthropic, OpenAI, Google, DeepSeek, Meta…), billed pay-as-you-go. Too many to list, so setup takes the model slug from you:
- Key at openrouter.ai/keys (
sk-or-…). - Copy a slug from openrouter.ai/models — the
vendor/modelid under the name (e.g.anthropic/claude-sonnet-4.5). The model must support tool/function calling: Iva sends tools every turn, so chat-only or image models won't work. iva config→ provider4→ paste the key, then the slug. Setup fires a live test with a tool call and continues only once the model answers — a mistyped slug or a no-tools model is rejected on the spot, not later as a silent bot.
Set OPENROUTER_CONTEXT_WINDOW to the model's real window. Vision runs through google/gemini-2.5-flash regardless of your text model (billed to your OpenRouter credit).
Attachments are never inlined into the model request. A photo lands in the vault, the agent gets its file path, and the provider's own vision model writes the description — OCR plus visual detail — into the daily transcript. Same key as the text model, no extra subscription.
Any Ubuntu/Debian box for $4–5/mo. 512MB RAM works — the installer handles low-memory boxes (install.md). More than 1–2GB buys you little: the model runs in the cloud, not on your box.
Transcription runs on Deepgram nova-3 with language=multi: Russian, Uzbek and English are detected automatically, even mixed inside one voice note. A new account comes with a free starter credit — no card — that covers months of personal use. The one hard limit is Telegram's, not Deepgram's: the Bot API refuses downloads over 20MB, so a long video won't transcribe.
| Provider | Free tier | Card |
|---|---|---|
| tavily (recommended) | ~1,000 searches/mo | not required |
| exa | ~20,000/mo | not required |
| parallel | starter credits | not required |
| brave | ~$5/mo credit | required |
Pick one, set SEARCH_PROVIDER and its key. No key means no web search — Iva says so instead of guessing. DuckDuckGo scraping was removed on purpose: server IPs get captchas, and a search tool that randomly hits a wall is worse than none.
Optional hybrid memory search adds one more key (Jina or DeepInfra embeddings) — covered in memory.md.
| Service | Monthly |
|---|---|
| VPS | $4–5 |
| OpenCode Go | ~$5 |
| Deepgram voice | $0 — starter credit |
| Web search (tavily) | $0 — free tier |
| Total | ~$9/mo |
Prefer Ollama Cloud and the same stack lands around $25/mo. Either way the bill is flat, predictable, and paid straight to the providers.