Command reference

July 28, 2026 · View on GitHub

Iva has two control surfaces: slash commands in Telegram and the iva command on your server. This page is all of them.

Telegram commands

CommandWhat it does
/menuThe settings hub — model, search, language, character, memory, userbot, Google and more in one message (menu.md)
/helpThis list
/stopInterrupt the current turn — same as tapping the ⏹ Стоп button
/task <text>Add a task; without text, Iva asks what to add
/tasksShow the task list
/digestMorning digest built by the morning-digest skill
/newStart over — reset the current conversation
/restartReset the current conversation, then restart the agent process
/updateCheck for a new version; if there is one, tap Update to install it
/usage [window]Token spend — variants below

Two kinds here. /task, /tasks and /digest route into the agent and need it running.

Every turn starts with a status message carrying a ⏹ Стоп button — tap it (or send /stop) to abort the turn mid-flight, Claude-Code style: completed work stays in the conversation history, the unfinished step is dropped. Messages sent while a turn is running are not processed immediately: the bridge queues them (you get a 👀 reaction), and they join the context of the next turn — triggered by your next message. /menu, /help, /usage, /restart, /new and /update never reach the agent — the long-poll bridge handles them itself, out-of-band. /menu in particular is a whole settings surface that stays responsive even while a turn is running — its map and what applies instantly versus on restart live in menu.md.

/new retires only the exact Eve session for the current private chat, group conversation or forum topic. A private chat's queued messages are cleared with it. A group/topic queue is shared by several reply-anchored conversations, so those messages are preserved. Other chats keep their histories and queues. /restart performs the same scoped reset first and then restarts iva.service. Both commands work while a turn is running. The server-side iva reset remains the explicit break-glass command that quarantines the whole workflow store. The bridge accepts recovery commands only from IDs on the allowlist.

After upgrading a legacy group that has not recorded its Eve token yet, send /new as a reply to Iva's latest message once. Private chats and group conversations used after the upgrade need no migration step.

/update compares your install with the upstream repo. If a newer version exists, the same message gets ⬆️ Update and Later buttons. After confirmation, that one message is edited through preservation, fetch, build and the final result — no phase messages are left behind. The active phase uses a small animated Telegram loader when the bot can send custom emoji and falls back to a simple otherwise. Build logs, diffs and commit IDs stay on the server. The detached updater survives the bridge restart. Nothing happens until you tap.

Independently, iva-update-check.timer checks upstream every day at 10:00 local time. It calls no model and says nothing unless a higher stable version exists. Each version is offered once in the digest chat with the same buttons; Later closes that offer, while manual /update always remains available.

/usage variants

VariantWindow
/usage or /usage lastThe last turn: tokens, steps, model, source
/usage todayCurrent day in your timezone
/usage weekLast 7 days
/usage monthCurrent calendar month
/usage by-modelLifetime totals per model
/usage by-sourceLifetime, chat vs background (rollups, digest)

/usage costs zero tokens — the bridge reads the log, no model call.

Server CLI

The installer puts iva in ~/.local/bin. Commands that touch systemd need a Linux server.

CommandWhat it does
iva update [--force] [--verbose]Preserve tracked and untracked changes, safely fast-forward or rebase local commits, build, restart and health-check. On failure Iva rolls back to the recorded HEAD and previous .output. --force rebuilds with no new commits; --verbose streams technical output otherwise kept in data/logs/
iva configThe 5-step setup wizard, then offers a restart to apply
iva login [--browser]Sign in to an OpenAI (ChatGPT) subscription for MODEL_PROVIDER=codex. Default is device code (a link + one-time code, works on a headless VPS); --browser runs the local PKCE flow. Token → data/codex-auth.json (chmod 600)
iva doctorChecks Node ≥ 24, .env keys, build, units, both services, 5 memory timers, vault git origin — auto-repairs what's safe
iva statusStatus of both services + the memory-timer schedule
iva restartRegenerates units (keeps the port in sync with IVA_PORT), restarts agent + bridge
iva resetStop, quarantine workflow plus Telegram busy/queue state, restart — cures stuck turns that a plain restart brings right back
iva usage [window]Same windows as /usage, plus tail [N] — the last N raw log lines (default 10)
iva start / iva stopStart both services and enable at boot / stop them
iva logs [poll]Follow agent logs, last 50 lines; poll follows the Telegram bridge instead
iva uninstall [--purge]Remove units and the iva command; --purge also deletes code and vault, after a second confirmation
iva versionPackage version + git commit
iva treeThe willow, animated

The installer records the selected update branch in the checkout's local Git config. Stable installs follow main; an explicitly installed BRANCH=… keeps following that channel. Legacy installs without this setting automatically move from an old feature branch to main only when Git proves that the feature HEAD is already contained in main, so local work is never overwritten to guess an update channel.

iva usage week      # 7-day totals, by source and model
iva usage tail 20   # last 20 raw log lines

Token accounting

Every model step appends one JSON line to data/usage.jsonl — including tool-call rounds, which is where most tokens actually go. What each line carries:

  • 📍 Sourcetelegram chat vs http background jobs, so rollups and digests don't hide inside your chat totals
  • 🧮 Five counters — in, out, cache read, cache write, total — plus model, session, turn and step index
  • 🤖 Subagent steps — planner tokens are tagged with the subagent name and counted, not lost

The log lives in data/ next to tasks.json, gitignored and outside the vault — otherwise the nightly doctor would commit an ever-growing log into your memory repo.

No dollar figures, on purpose. Both providers are flat-rate subscriptions (see providers.md), so there is no per-token price to multiply. Tokens are the number you can trust; a computed dollar estimate would be fiction.