iva-agent

作者 smixs已验证

AI assistant in Telegram that remembers everything and helps you run your life. Self-hosted in one command.

184
Stars
35
Forks
TypeScript
语言
2026/8/23
添加时间

⚠️ 第三方软件声明

本 Skill 为第三方开源软件,独立托管于 GitHub。SkillTip 仅为信息目录,不控制或维护底层仓库。所显示的安全检查为自动化且范围有限,安装前请自行审查源码。

阅读服务条款

安装

添加到你的 Claude Code skills 目录:

# Add to your Claude Code skills
git clone https://github.com/smixs/iva-agent

快速入门

使用 iva-agent 等 Skills 的指南。

安全报告

已验证

上次扫描:—

{
  "status": "PASSED",
  "issues": []
}

README.md

EN · RU


Iva is a self-hosted Telegram AI assistant with layered memory that turns your messages into an Obsidian-compatible vault. You talk, it files: voice notes, photos, forwarded posts and decisions become plain-markdown cards it actually remembers. Everything runs on your own server, with your keys and your data.

One command installs it:

curl -fsSL https://raw.githubusercontent.com/smixs/iva-agent/main/install.sh | bash

Why people run Iva

  • "What did we agree with client X about the last shipment?" — found in seconds, months later.
  • A five-minute voice note from the car → a task list, a draft email, a meeting card.
  • "Make a quote from this price list, cut the discount by 2.5%, send it to the client" — a finished Google Doc, link in the chat.

The rest — for business owners, specialists, executives and everyday life: Use cases.

How it works

How Iva works: voice, text, photos and PDFs fly from Telegram into the willow-tree agent, wired to memory, nightly rollup, cron, reminders, search, web, workspace and docs

The bridge long-polls Telegram, so no public HTTPS, domain or webhook is needed. Iva runs as two systemd user services, two systemd watchdog timers and five in-process eve schedules — operations live in docs/deploy.md.

Wondering what you'd actually use an agent for?25+ real scenarios — business, work, everyday life.

What people ask Iva: eight everyday requests, from a voice note turned into tasks to research with sources and a bedtime story that continues tomorrow

Features

Voice, vision, memory, personal CRM, Google Workspace, skills — expand the full list
  • Voice — voice, audio and video notes transcribed with Deepgram nova-3; auto-detects ru/uz/en.
  • Vision — photos described by your provider's own vision model; no extra key, no extra bill.
  • Rich replies — tables, checklists, collapsible blocks and formulas render natively in Telegram via Bot API 10.1 rich messages; plain formatting keeps its proven path, with a graceful fallback.
  • Quiet update checks — once a day Iva checks for a newer stable release without spending model tokens. If one exists, Telegram offers Update or Later once; otherwise it says nothing.
  • Layered memory — remembers across months, long after the chat window has scrolled away.
  • Personal CRM — who your people are, what you agreed, when to follow up.
  • Search by meaning — BM25 plus link-graph rerank, any language; optional vector mode with one key.
  • Decision cards — what you chose, when and why; old versions stay in a dated History.
  • Tasks & reminders — priorities, due dates and a morning digest.
  • Web search — four pluggable providers: Tavily, Exa, Parallel or Brave.
  • Google Workspace — Gmail, Calendar, Drive, Sheets, Docs and Tasks from chat via the gws CLI; installed for you, with a guided key setup right in the conversation.
  • Skills & MCP — drop one file to add a procedure or connect an MCP server; keys stay in .env.
  • Personal Telegram — userbot (beta) — read and send from your own account, not just the bot; connect by chat (QR, no terminal). Rough and buggy — opt-in, at your own risk. A server-side anti-ban guardrail (FloodWait compliance + randomized pacing + circuit-breaker) is enforced, not just advised. Details.
  • Safe to forward — forwarded text, captions and voice transcripts pass an injection screen before the model reads them. A flagged message or transcript reaches the model tagged as data rather than as an instruction; for media captions the screen runs but the tag does not travel with it yet.
  • Token accounting — every model step is logged; /usage reports it for free.

The Memory Tree

How Iva remembers: a leaf is a day, branches are weeks and months, tree rings are years around CORE.md
LayerWhat lives therePath
🍃 Leavesthe word-for-word transcript of each day, Iva's replies includeddaily/YYYY-MM-DD.md
🌿 Branchessummaries folded upward: day → week → month → yearsummaries/daily/, weekly/, monthly/, yearly/
🪵 TrunkCORE.md (≤1200 chars, in every prompt) + typed cards: contacts, projects, decisions, ideas, notesCORE.md, cards/
  • Every message lands verbatim in a daily markdown log — nothing is paraphrased on arrival.
  • A nightly rollup at 04:00 distills day → week → month → year into schema-validated cards; facts that change get rewritten, not piled up.
  • One core file, CORE.md (≤1,200 chars), rides in every prompt — Iva knows you before it searches anything.

Full architecture and search internals: docs/memory.md.

A secretary inside Telegram

Your secretary inside Telegram: the userbot reads group chats from your own account, collects summaries and replies as you, guarded by a server-enforced anti-ban guardrail

The bot is half of Telegram. The other half is your personal account: connect the userbot (beta, opt-in) and Iva works from it like a secretary — reads the group chats you never keep up with, folds them into summaries, catches the messages that actually need you, and replies as you.

  • All of Telegram — groups, channels, unreads, search and the full history of your personal account.
  • Onboarding in chat — tell the bot to connect your Telegram, scan a QR. No terminal.
  • Anti-ban guardrail on the server — FloodWait compliance, a randomized delay after every send, and a circuit-breaker that pauses sending after three FloodWaits in 24 hours. It is enforced in the proxy rather than asked for in a prompt, and it wraps the three outbound calls that actually get accounts flagged: messages, files, forwards. Joins, invites, contact imports and reactions are not wrapped — those limits live in the skill file, which is a prompt.
  • Read-only mode — one .env switch and Iva can read and search but physically cannot send.

[!WARNING] Automating a personal account is against Telegram's ToS and can get the account limited or banned. The userbot is opt-in, beta, and used at your own risk — reading is far safer than sending. Details: docs/userbot.md.

Security & privacy

Untrusted input from Telegram and the web passes the security gate: corrupted messages drop into the reject tray, only clean context reaches the vault

Web pages, search results, voice transcripts, captions and the vision model's description of a picture reach the model only through a prompt-injection sanitizer. On a forwarded text message the same gate annotates the turn with a warning instead of filtering the text, and document bodies, userbot-read chats and agent-browser output are not screened at all. Everything that leaves through the Outbox passes a secret-redaction gate, and the user allowlist fails closed — an empty list answers nobody. Your memory is a private git repo you own; the honest boundary is that the model and transcription are cloud APIs you choose and pay for. Gate internals and the full boundary: docs/security.md.

Install

One command on any Ubuntu/Debian box — a fresh VPS or your own machine:

curl -fsSL https://raw.githubusercontent.com/smixs/iva-agent/main/install.sh | bash
  1. Get a bot token from @BotFather.
  2. Run the installer and answer its questions.
  3. Message your bot. The wizard picks your Telegram ID out of that message, finishes setup, and Iva confirms right in the chat that it's live.

Brand-new VPS, still logged in as root? Run bash <(curl -fsSL https://raw.githubusercontent.com/smixs/iva-agent/main/bootstrap.sh) first: it creates your sudo user (with lingering enabled), updates the box, and turns on a firewall, fail2ban and SSH hardening. It asks three things — a login, its password, and the timezone — and no SSH key. Then log in as that user with that password and run the installer above. Details: docs/install.md.

Install as a normal user, not as root — Iva's shell tool runs as whoever installed it. Headless installs take --skip-setup or --non-interactive. Prefer to read before you run? Fetch it with curl -fsSL https://raw.githubusercontent.com/smixs/iva-agent/main/install.sh -o install.sh, read it, then bash install.sh. Wizard walkthrough and an SSH primer for first-time VPS owners: docs/install.md.

The first minute

Three messages, and you can watch the memory work:

  1. Send a voice note about your day — anything, out loud. Then look in daily/ inside your vault on the server: your words are sitting there in plain markdown, dated, yours. No other assistant hands you the file.
  2. Tell it something a colleague would remember: Marina at Acme wants the revised quote by Friday — she never picks up the phone.
  3. Ask for it back the way a person would: how should I follow up with Marina? — the answer comes from the card Iva just wrote, not from the last few messages.

Then send a photo of a business card, or forward a long post and ask for the gist. /menu has the rest; the full list is in 25+ scenarios.

Install from a clone — build it yourself
git clone https://github.com/smixs/iva-agent.git ~/iva
cd ~/iva && bash install.sh

The installer reuses the existing checkout instead of re-cloning, keeps .env and the vault untouched, and installs the same dependencies. A fork or a branch works through variables read at startup: REPO_URL=…, BRANCH=…, INSTALL_DIR=… (defaults: this repo, main, ~/iva). Details: docs/install.md.

Providers & cost

Four model providers. Pick one and fill its block in .env:

ProviderHow you pay
OpenCode GoAPI key, ~$10/mo ($5 first month)
Ollama CloudAPI key, ~$20/mo
OpenRouterAPI key, pay-as-you-go, 300+ models
OpenAI (ChatGPT)your Plus/Pro subscription, no API key

Default model is deepseek-v4-pro, 131k context. On Go it runs about $14–15/mo all-in ($10 model + $4–5 VPS; the model's first month is $5), no markup; voice rides Deepgram's free starter credit. Model lists, limits and the search matrix: docs/providers.md.

Documentation

Use cases · Install · Configuration · Memory · Providers · Security · Deploy · Commands & CLI · Menu · Extending · Plugins · FAQ · Troubleshooting

Документация на русском → docs/ru/

What's New

v0.3.28 · 19.08.2026 — expand the latest releases

19.08.2026

v0.3.28

  • The update cleans up after itself: the disk keeps the running version and one rollback, everything else goes. Before a build only the running version stays — the build takes the rollback slot, so the peak is two versions (~400 MB each), not three. In the finish, removing old versions is the first step, ahead of npm i -g @googleworkspace/cli@latest, which downloads onto the same disk; a failed cleanup chore no longer cancels it. iva doctor removes leftovers of interrupted builds and surplus versions by itself, under the update lock, and prints versions on disk: N (current …, rollback …) — X GB free; with an update running it says version cleanup skipped, with a corrupt active.json it reports and deletes nothing. The cleanup before a build starts working from the update after this one — iva update runs on the installed CLI. Prompted by a test droplet with 8.7 GB that stalled on three copies of node_modules (#194). New troubleshooting section «Disk full during update», an honest disk line in install.
  • The promoted runtime carries every source tree: the stable runtime snapshot copied agent/ and scripts/ by hand, packages/ never reached it, and on an install with a non-empty custom layer the agent died with [UNRESOLVED_IMPORT] on agent/lib/data-dir.ts in a restart loop. One list now — RUNTIME_SOURCE_TREES — feeds both the snapshot and the replica smoke, the layout digest moves to v3 so a runtime staged without packages/ rebuilds itself, and a guard test resolves every import of those trees and fails on a tree the snapshot would leave behind (#192, #191).
  • Timezones come back in canonical spelling: Intl accepted europe/moscow in .env, systemd rejected OnCalendar=*-*-* 05:00:00 europe/moscow, and the nightly timer never came up. The validator now returns what Intl resolves — Europe/Moscow; aliases canonicalize (US/PacificAmerica/Los_Angeles); property tests pin idempotence and insensitivity to case and padding (#190).
  • A vision model per provider: instead of a constant in code, a variable in .env each, blank meaning the provider default — OLLAMA_VISION_MODEL (gemma4:31b), OPENCODE_VISION_MODEL (qwen3.7-plus), OPENROUTER_VISION_MODEL (google/gemini-2.5-flash); Codex has none, the subscription is multimodal. iva config asks for the vision model right after the text model and writes it next to *_MODEL. The OpenCode Go default comes from live runs on 18.08: gpt-5.6-luna answers 400 to any image, minimax-m3 wraps its answer in <think> inside content, qwen3.7-plus returns a clean description with OCR in 4–6 seconds.
  • Three Telegram fixes: the Stop button only in private chats — its callback has been rejected in groups since the last release, and the button hung there dead. Messages buffered during a rolling update pass the inbound gate with the same warning to the model and the same [security] inbound flagged line as fresh ones — the verdict used to be ignored. Prose that looks like a code placeholder (the price is 50 dollars, tables with padded numbers) is no longer cut out of an HTML reply: the placeholder moved to the Private Use Area, such code points from outside are stripped first, and a seeded property test walks digits, space runs and code spans mixed in prose.

18.08.2026

v0.3.27

  • MCP servers of a plugin, both transports: streamable-http and sse in mcp.json become a generated eve connection mcp-<name>--<server>, and ${VAR} in a header is filled at run time from data/custom/plugins/<name>.env, so no token is baked into a build. stdio runs as the systemd unit iva-mcp-<name>-<server>.service behind Iva's own MCP proxy (services/mcp-proxy/, @modelcontextprotocol/sdk): the agent reaches it over 127.0.0.1:<port>/mcp with a bearer, and the token lives in data/plugin-data/<name>/mcp-<server>.token at mode 0600. The server sees only PATH, HOME, PLUGIN_ROOT, PLUGIN_DATA, its own env from mcp.json and <name>.env — nothing of the agent's environment reaches it. A second switch joins the first: trusted, through iva plugin trust | untrust, and add prints the processes and asks Start these processes on this machine? [y/N] (--trust answers yes; a shell without a terminal answers no). Ports are handed out from 8730, once, and stay until the plugin is removed. Proven end to end against a real stdio server and a real client from the SDK, not fakes.
  • Plugin services: sh.iva/services/<svc>/service.json with {command,args,port} becomes the unit iva-plugin-<name>-<svc>.service — env IVA_SERVICE_PORT, IVA_DATA_DIR, PLUGIN_ROOT and PLUGIN_DATA, the service's own folder as the working directory, started only while the plugin is enabled and trusted. iva plugin update restarts the units of a plugin whose content changed, iva update brings them back right after the flip, and iva doctor lists the units, prints is-active and calls GET /health on every MCP proxy. sh.iva/ is now two kinds: an eve Extension (sh.iva/package.json, built into a version) and services, which never rebuild one.
  • The default Marketplace is live — smixs/iva-plugins: the list sits at github.com/smixs/iva-plugins and carries two plugins. trace is the Trace viewer: the schema of Iva with the path of a turn lit across it, the feed of turns, replay at ×1, ×2 and ×4, tiles for today, 7 and 14 days; it listens on loopback only, and iva trace open prints the ready ssh tunnel command. hello is the demo code plugin authors copy: one skill, one tool. Three commands to get there: iva plugin add trace, iva plugin trust trace, iva trace open. Checked live from the public list: list --available, add trace pinned to a sha, update, remove.
  • Plugin docs: docs/plugins.md (Russian: docs/ru/plugins.md) — what a plugin is, how to install one (a folder, owner/repo[/subdir][@ref], a git URL or a name from a Marketplace), how enabled differs from trusted, what iva update does to plugins, how to write your own (skills, an Extension under sh.iva/, mcp.json, services) and what you risk; SECURITY.md gains a Plugins section. Also: the iva plugin CLI is split into modules with no command changed, and on a development checkout add and remove of a code plugin stop promising a build that never happened and say plainly that no version was built there.

17.08.2026

v0.3.26

  • Plugins by name from a Marketplace: iva plugin add trace finds the plugin in an .agents/plugins/marketplace.json list (the Codex convention — a path string or local | url | git-subdir; npm and policy entries are skipped aloud) and installs it through the same path as a folder or a git URL. iva plugin marketplace add | remove | list manage your lists, iva plugin list --available shows what is on offer; the default list is smixs/iva-plugins. Lists are cached under data/marketplace-cache/; offline, the cache is used and marked as possibly stale. Only https://, ssh:// and git@host: are accepted — file:// and local paths from a foreign list are refused, and plugin git never waits for a password in the terminal. A name offered by two lists is refused with an add <name>@<list> hint.
  • Plugin code is built into the version: a plugin with an eve Extension under sh.iva/ now rides the update rails — a copy inside the version, npm ci, eve extension build with the very eve that runs Iva, a mount under its own namespace, then probe, flip and restart. The plugin's config is read from data/custom/plugins/<name>.config.json at start, never baked into the build. A failed build on add | update | enable rolls the install back and leaves the running version alone; on iva update the version is built without that plugin, the plugin is switched off and one Alert says what to do. iva doctor reports whether each plugin's code is built into the current version. Verified against the real eve 0.30.8, not only fakes.
  • iva trace reads the turn journal: iva trace tail streams events live (--since N prints the last N lines first), iva trace show lists the last 20 turns, iva trace show <turn_12 | tg:<chat>:<message> | session id | last> prints one turn with its steps, tools and subagent (--full without the cap, --json raw lines), iva trace open prints the viewer address and a ready ssh tunnel command. Control characters in content never reach the terminal. The contract in docs/trace.md now says how night turns stitch: inside one session, turns are split by turn_N, and a line without a turn key belongs to the most recent open turn of its session.
  • iva post replaces the Python sender: a rich post to another allowlisted chat goes from the CLI through the Outbox and the outbound gate (ADR-0005) — the recipient is the digest chat or an explicit --chat from the allowlist, the token comes from .env, a local image reaches the public upload host only behind --allow-upload and only as a real media file by magic bytes, 50 media at most. A post that cannot render rich is not downgraded to HTML without its images: it fails with one Bot API call and the error; a turn reply keeps its fallback. The Python copies of the security checks are gone from the skill — the gate lives in agent/lib/security-gate.ts, only data (the pattern list and the secret-key inventory) stays beside the skill. Missed in the 0.3.26 notes.

v0.3.25

  • Iva reads rich Telegram posts: longreads from the new editor (rich_message — headings, lists, tables, quotes, collages, media captions) used to arrive empty because their text field is empty and the content lives in blocks. Now the text is read whole and in order, photos and videos from any block go through the usual media pipeline (10 per message, the rest announced in one line), truncation is visible. Works everywhere text is read: single message, album, forward, quoted message, media caption. Ordinary messages are untouched. The gap was shown by contributor PR #189.
  • Plugins install from the terminal: iva plugin add <folder | owner/repo[/subdir][@ref] | git URL> puts an Agent Plugins 1.0.0 folder under data/custom/plugins/, records it in data/custom/plugins.json, and its skills work from the next turn — no build, no restart. iva plugin list | remove | update | enable | disable | sync manage them; iva doctor gains a Plugins section. Only the owner, only the terminal: no Telegram command and no model tool by design (ADR-0009). Plugin code and MCP servers are read and reported but not built yet — that lands in the next patch.
  • A turn journal: data/trace/YYYY-MM-DD.jsonl records every turn from the Bridge to the Outbox — allowlist, Gate verdicts, context parts, model steps, tool calls, subagents, delivery — one JSON line per event, kept 14 days, content capped and switchable off with captureContent in data/settings.json. The format is documented in docs/trace.md (ADR-0010); a terminal reader (iva trace) and a viewer plugin follow in the next patch.

Full history — CHANGELOG.md.

Built on

eve 0.30.8, Vercel's agent framework, runs the agent; Node 24's built-in SQLite runs the search index — no separate database. Iva grew out of agent-second-brain and autograph — that story is in docs/memory.md.

Thanks

Iva gets better because people run it for real — contributors are welcome. Open an issue with what breaks, or send a PR. Everyone who already helped: docs/thanks.md.

License

MIT — take it, change it, run it on a hundred servers; just don't blame anyone if something breaks.

常见问题

What is iva-agent?

iva-agent is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by smixs. AI assistant in Telegram that remembers everything and helps you run your life. Self-hosted in one command. It has 184 GitHub stars.

Is iva-agent safe to use?

Yes. iva-agent passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.

How do I install iva-agent?

Clone the repository with "git clone https://github.com/smixs/iva-agent" and add it to your Claude Code skills directory (see the Installation section above).

What programming language is iva-agent written in?

iva-agent is primarily written in TypeScript. It is open-source under smixs on GitHub, so you can review or fork the full source.

Are there alternatives to iva-agent?

Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh iva-agent against similar tools.

评论 (0)

暂无评论,成为第一个分享想法的人!

ECC

by affaan-m

10

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

242,21936,702JavaScript
AI 智能体ai-agentsanthropicclaude-code
查看详情
15

An agentic skills framework & software development methodology that works.

234,96620,863Shell
AI 智能体ai-agentsbrainstorming
查看详情

hermes-agent

by NousResearch

10

The agent that grows with you

234,43747,175Python
AI 智能体ai-agentsagent-orchestration
查看详情

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

185,94028,768JavaScript
AI 智能体ai-agentsanthropicclaude-code
查看详情

cc-switch

by farion1231

3

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

128,8688,826Rust
AI 智能体claude-codeai-tools
查看详情

claude-code

by anthropics

Claude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining complex code, and handling git workflows - all through natural language commands.

120,03119,897Shell
AI 智能体
查看详情

开发者还喜欢

基于喜欢此 Skill 的开发者投票和收藏

ECC

by affaan-m

10

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

242,21936,702JavaScript
AI 智能体ai-agentsanthropicclaude-code
查看详情
15

An agentic skills framework & software development methodology that works.

234,96620,863Shell
AI 智能体ai-agentsbrainstorming
查看详情

hermes-agent

by NousResearch

10

The agent that grows with you

234,43747,175Python
AI 智能体ai-agentsagent-orchestration
查看详情

n8n

by n8n-io

12

Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.

201,88160,308TypeScript
MCP 服务器apisai-tools
查看详情

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

185,94028,768JavaScript
AI 智能体ai-agentsanthropicclaude-code
查看详情

cc-switch

by farion1231

3

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

128,8688,826Rust
AI 智能体claude-codeai-tools
查看详情