Skip to content

pardnchiu/Agenvoy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

502 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Agenvoy

Make AI actually work for you — your personal AI assistant.

Say it. It builds the tool. No programming required. Claude / GPT / Gemini auto-routed; lives in Telegram, Discord, and your terminal.

Go Reference Coverage Version License

English · 繁體中文


What is Agenvoy

A personal AI agent that runs on your own machine. Configure it once, talk to it from anywhere — Telegram, Discord, terminal TUI, or browser. Same memory, same tools, same skills across every channel.

Built for people who want their own always-on assistant, not another SaaS subscription.

What it can do

Teach the agent to build its own tools — no programming required. Just describe what you need; the agent writes a script or wires up an API, sandboxes it, and loads it as a tool. Next time you ask, it just runs.

Demo · Auto-generate tools Demo · Skill-based scheduler Demo · Sub-agents co-work

Out of the box it also:

  • Chats anywhere — Telegram inline buttons · Discord select menus / modals · terminal TUI · browser canvas. One daemon, every surface.
  • Generates images, speaks replies (TTS), transcribes audio / video.
  • Schedules itself — say "every weekday 8am push a Hacker News top-stories digest to Telegram" and the agent builds the cron + push pipeline for you.
  • Picks the right model per task — Claude for coding, Gemini for video, GPT for research, routed automatically.
  • Searches your files semantically — KuraDB indexes your local docs / notes (file → embedding vector); the agent answers from your own knowledge base, not generic training data.
  • Remembers across sessions — past conversations searchable by meaning, not just keywords.

One-line install

curl -fsSL https://cloud.agenvoy.com/install.sh | bash

Single Go binary at /usr/local/bin/agen. macOS / Linux. No Node, no Python, no Docker.

Running the daemon on a MacBook? sudo pmset -c sleep 0 keeps the system awake while plugged in — prevents the daemon from being suspended on AC power.

How it compares

Compared against the two closest peers — personal AI agent frameworks with daemon + chat-platform integration.

You want… Agenvoy OpenClaw Hermes
One-line install, single binary ✅ Go ❌ pnpm monorepo ❌ pip + docker
Use Claude + GPT + Gemini in one chat ✅ auto-routed by dispatcher ✅ manual switch ✅ manual switch
Native chat buttons / menus / modals ✅ inline keyboard / select / modal ⚠️ text-based options ⚠️ text-based options
Agent builds & saves its own tools ✅ FaaS-sandboxed scripts + APIs ⚠️ skill-only
First-contact verification on Telegram/Discord ✅ 6-digit OTP ⚠️ pairing code (manual approve) ❌ allowlist only
Cross-session push (any session → chat) send_to_telegram_chat / send_to_discord_channel
Image generation in chat ✅ gpt-image-2
Native document RAG (file → embedding) ✅ KuraDB in-process (semantic + keyword) ❌ (MCP only) ❌ (MCP only)

Looking for the full feature-by-feature breakdown? See What makes it different below.


For developers

What makes it different

  • Dispatcher-based intelligent routing — a dispatcher model routes every task to the best-fit worker (Claude for coding, Gemini for video, GPT for research), instead of forcing one model to do everything.
  • Agent that builds and persists its own tools — when a tool is missing the agent writes a script or API into extensions/ and loads it as a native tool on the next run; MCP servers are supported alongside.
  • One runtime across every channel — Telegram, Discord, TUI, Web, and cron all attach to the same daemon; sessions, memory, and the tool set are shared, not rebuilt per surface.
Agenvoy vs Mainstream Products: Full Detailed Comparison

1. Overview

Agenvoy OpenClaw Hermes Agent Claude Code Codex CLI Gemini CLI
Language Go TypeScript Python TypeScript Rust + TypeScript TypeScript
License Apache 2.0 MIT MIT Proprietary Apache 2.0 Apache 2.0
Author Individual (pardnchiu) Community NousResearch Anthropic OpenAI Google
Primary use Multi-platform AI Agent framework Multi-platform AI Agent Multi-platform AI Agent Terminal coding assistant Terminal coding assistant Terminal coding assistant
Architecture Daemon + TUI + Chat Daemon + TUI + Chat Daemon + TUI + Chat CLI session CLI session CLI session

2. AI Provider Support

Agenvoy OpenClaw Hermes Agent Claude Code Codex CLI Gemini CLI
Claude ✅ only
OpenAI / GPT ✅ only
Gemini ✅ only
Codex (OpenAI OAuth)
GitHub Copilot
Nvidia NIM
OpenAI-compat ✅ Ollama/LM Studio ✅ OpenRouter 200+
DeepSeek / Mistral / xAI
Dispatcher routing ✅ dedicated dispatcher model

3. Runtime & Frontend

Agenvoy OpenClaw Hermes Agent Claude Code Codex CLI Gemini CLI
TUI ✅ bubbletea openclaw tui ✅ React Ink ✅ ink
CLI
HTTP API / Web UI ✅ gin ✅ Web Dashboard
Daemon mode ✅ native --daemon ✅ systemd/launchd ✅ gateway daemon
Session Canvas (HTML+SSE) update_page
Named sessions ✅ session picker

4. Chat Platform Integration

Agenvoy OpenClaw Hermes Agent Claude Code Codex CLI Gemini CLI
Telegram ✅ native daemon ✅ native daemon ✅ native daemon ⚠️ Channels MCP (requires active session)
Discord ✅ native daemon ✅ native daemon ✅ native daemon ⚠️ Channels MCP (requires active session)
iMessage ✅ BlueBubbles ✅ BlueBubbles ⚠️ Channels MCP (macOS only)
WhatsApp / Slack / LINE ✅ 50+ platforms ✅ 20+ platforms
Always-on receiving (no session needed) ✅ daemon
Cross-session send (any session → chat) send_to_telegram_chat / send_to_discord_channel
First-contact verification ✅ 6-digit OTP (crypto/rand) ✅ pairing code (dmPolicy: pairing) ❌ (allowlist only)
Native platform UI (buttons / menus / modals) ✅ inline keyboard / select menu / modal ⚠️ text-based options ⚠️ text-based options

Platform layer: Agenvoy's Telegram and Discord integrations are both built on pardnchiu/go-bot, independently maintained and open source. go-bot encapsulates the bot protocol details for both platforms — Agenvoy only implements business logic, while the platform API layer is entirely handled by go-bot.

Key difference: Claude Code Channels requires an active session. OpenClaw and Hermes have daemons but their in-chat confirmations are text-based. Agenvoy uses native platform UI — Telegram inline keyboards and Discord select menus / modals. Additionally, Agenvoy's cross-session send tools allow any session type (CLI, TUI, HTTP, scheduled script) to push messages to Telegram/Discord — no competitor exposes this capability.


5. Telegram Feature Comparison

Feature Agenvoy OpenClaw Hermes Agent Claude Code Channels
Send text reply
Send voice (TTS) ✅ Gemini TTS → OGG ✅ ElevenLabs/Hume ✅ Edge TTS/ElevenLabs
Send file attachments [SEND_FILE:]
Receive user attachments ✅ photo/doc/voice/video
Voice-to-text (STT) ✅ Gemini, 14 formats ✅ Whisper/Gemini ✅ faster-whisper (local)
Tool confirm (interactive) ✅ native inline keyboard ⚠️ text approval prompt ⚠️ text options
ask_user (picker) ✅ native button/modal ⚠️ /models picker ⚠️ text options, up to 4
Format reference (lazy-load tool) telegram_format
Scheduler output push
Cross-session push (from any session) send_to_telegram_chat
Offline receiving (daemon)

6. Discord Feature Comparison

Feature Agenvoy OpenClaw Hermes Agent Claude Code Channels
Send text reply
Send voice (TTS) ✅ Gemini TTS → OGG/OPUS
Send file attachments ✅ batch 10/message
Receive user attachments ✅ photo/doc/voice/video
Tool confirm (interactive) ✅ select menu button /model picker ⚠️ text options
ask_user (modal) ✅ select/multi-select/modal ⚠️ limited ⚠️ text options
Format reference (lazy-load tool) discord_format
Guild mention guard
Discord Markdown aware ✅ full spec as lazy-load tool ⚠️ partial ⚠️ partial
Character limit aware ✅ 1600 char hard limit in prompt
Cross-session push (from any session) send_to_discord_channel

7. Scheduler

Agenvoy OpenClaw Hermes Agent Claude Code Codex CLI Gemini CLI
Cron jobs ✅ SKILL.md + cron ✅ built-in ✅ built-in ✅ cloud-assisted cron/task
One-shot tasks at format ✅ natural language ✅ cloud-assisted
TUI CRUD openclaw cron cronjob tool
fsnotify hot-reload
Push output to Telegram/Discord
AI tool management (add/list/remove) cronjob tool
Local execution (no cloud required) ❌ cloud-dependent

Scheduler layer: Agenvoy's scheduler is built on pardnchiu/go-scheduler, a self-maintained ecosystem package providing cron expression parsing, one-shot tasks, fsnotify hot-reload, and full output routing back to chat platforms.


8. Tool Ecosystem

Agenvoy OpenClaw Hermes Agent Claude Code Codex CLI Gemini CLI
MCP support ✅ client ✅ client ✅ client + server ✅ client ✅ client
Custom tools (script-tool-add) ✅ AI-generated ✅ auto-creates skill
API tool discovery (search-api → add)
Skill system ✅ SKILL.md lazy-load ✅ SKILL.md 5400+ community ✅ SKILL.md agentskills.io ✅ CLAUDE.md
Format reference as lazy-load tool telegram_format / discord_format
Image generation ✅ DALL-E/Codex Image
Document RAG (external knowledge base) ✅ KuraDB (in-process vector + semantic/keyword) ❌ (conversation memory only) ❌ (conversation memory only)
Media transcription STT ✅ Gemini, 14 formats ✅ Whisper/Gemini ✅ faster-whisper (local)
TTS voice output ✅ Gemini TTS ✅ ElevenLabs/Hume/MS ✅ Edge TTS/ElevenLabs/OpenAI
Computer use / browser ✅ go-rod + Playwright MCP ✅ Chrome CDP ✅ Playwright (Chromium/Firefox) ✅ beta

Tool sandbox architecture: Agenvoy's Python/JavaScript/API custom tool interfaces are built on the pardnchiu/go-faas (Function as a Service) concept. Each AI-generated tool runs as an isolated function unit with its own lifecycle and security boundary. This is the only FaaS-level sandbox design for tool extension among all compared products.


9. Memory System

Agenvoy OpenClaw Hermes Agent Claude Code Codex CLI Gemini CLI
Instruction file system ✅ SKILL.md ✅ SKILL.md ✅ SKILL.md ✅ CLAUDE.md
Conversation history search ✅ ToriiDB vector search ✅ SQLite vector ✅ SQLite FTS5
External document RAG (native, in-process) ✅ KuraDB (semantic + keyword, OpenAI embeddings) ❌ (use MCP) ❌ (use MCP)
Error memory ✅ ToriiDB
Action log
Long-term persistent memory ⚠️ ToriiDB foundation in place ✅ Wiki-style MEMORY.md ✅ MEMORY.md + USER.md ⚠️ CLAUDE.md manual
Cross-session memory ⚠️ session-isolated by default, extensible with external memory ✅ built-in cross-session ✅ built-in cross-session ⚠️ session-isolated by default, extensible with external memory ⚠️ session-isolated by default ⚠️ session-isolated by default

ToriiDB is a self-developed embedded vector database (pardnchiu/ToriiDB) in the Agenvoy ecosystem. It requires no external service and runs in-process. Agenvoy uses ToriiDB as its memory infrastructure, currently powering semantic conversation history search and error memory, and serving as the foundation for future long-term cross-session memory expansion.


10. Dependencies & Deployment

Agenvoy OpenClaw Hermes Agent Claude Code Codex CLI Gemini CLI
Direct external dependencies 12 large (pnpm monorepo) 30–40 core + 60+ optional 50+ 40+ 40+
Self-maintained ecosystem packages 6 (go-bot / go-pkg / go-scheduler / ToriiDB / go-faas / KuraDB) 0 0 0 0 0
Runtime Go (static binary) Node.js Python Node.js Node.js + Rust Node.js
Deployment single binary npm install pip + docker/VPS npm install npm install npm install

Where Agenvoy Stands

Dimension Detail
Clear advantages Single Go binary, 12 dependencies, self-maintained ecosystem (pardnchiu universe), dispatcher model routing, Session Canvas, native platform UI (real buttons/modals), OTP verification, cross-session send to Telegram/Discord from any session, API tool auto-discovery, image generation, format reference as lazy-load tool, local-only scheduler (no cloud required)
On par with competitors Telegram/Discord daemon, TTS/STT, scheduler output push, Skill system, MCP, browser automation, inbound attachment handling
Where competitors lead OpenClaw 50+ platforms, Hermes MCP server mode, Hermes local STT, OpenClaw/Hermes built-in cross-session memory, Claude Code Computer Use beta, Claude Code cloud cron/task
Codex CLI Fewest features — CLI + TUI + OpenAI OAuth only, no daemon, no chat platforms, no scheduler
CLI commands

Run as agen <sub>. make <sub> wrappers exist in the repo Makefile for development.

Command Description
agen Attach interactive TUI; forks daemon (HTTP + Discord + Telegram + scheduler + summary cron) if not running.
agen cli <input> One-shot agent run; every tool call asks for confirmation.
agen run <input> One-shot agent run; auto-approves every tool call.
agen stop Stop the running daemon (SIGTERM 5s grace → SIGKILL → clear runtime.uid).
agen update Fetch latest release, rebuild, stop daemon — re-attach to load the new binary.
agen model {add|remove|list|dispatcher|reasoning} Manage providers / worker models, pick dispatcher model, set reasoning level.
agen mcp {list|add|remove} Manage MCP servers (stdio / HTTP) across global and per-session scope.
agen session {new|switch|config} [name] Manage CLI sessions; bare switch / config opens an interactive picker.
TUI slash commands

Available inside agen's TUI prompt. Type / to filter; popup commands transition cleanly back to the prompt.

Command Description
/switch Switch active session via picker (current session pre-selected).
/new [name] Create a new session; optional name pins it to the registry. Name is conflict-checked against existing sessions; abort on duplicate.
/bot Edit the current session's bot via two sequential popups: name textfield (conflict-checked against other sessions; abort on conflict) → description textarea (Ctrl+S confirms, Enter newline, Esc cancels).
/model [global|session] Scope picker; global[add, remove] (registry), session → pick a configured model. Inline arg skips the scope popup.
/mcp [add|remove] Action picker; add walks a chained popup form (name → transport → command/args/env or url/headers → scope → optional session pick), remove lists configured servers across global and session scopes. Restart the daemon to apply changes. Inline arg skips the action popup.
/dispatcher Pick the dispatcher model from cfg.Models via popup. No inline arg.
/reasoning [global|session] Pick low / medium / high for the dispatcher (global) or the active session. Inline arg skips the scope popup.
/discord [enable|disable] Toggle Discord bot connection (token entry, verification, keychain write, daemon reload all happen in-TUI). Inline arg switches without the popup.
/telegram [enable|disable] Toggle Telegram bot connection (same in-TUI popup chain as /discord; first chat to message the bot must pass an in-chat verification code). Inline arg switches without the popup.
/kuradb [enable|disable] Toggle KuraDB RAG service. enable runs install.sh via tea.ExecProcess (sudo TTY handed back), prompts for OPENAI_API_KEY (stored in keychain), and writes kuradb_enabled=true — daemon picks up via fsnotify and spawns the child + endpoint file. disable removes /usr/local/bin/kura and clears the flag. Inline arg switches without the popup.
/cron [add|remove|edit] Manage recurring schedules. add opens a multiline requirement textarea → dispatches /scheduler-skill-creator <requirement> (asks for missing when/what via ask_user). remove lists crons → confirm popup → runtime.RemoveCron + trashes the skill dir. edit lists crons → requirement textarea → agent picks patch_cron or rewrites the SKILL.md body. Inline arg skips the action popup.
/task [add|remove|edit] Manage one-shot scheduled tasks (mirrors /cron; uses add_task / patch_task / remove_task). Picker shows <YYYY-MM-DD HH:MM> <skill>.
/sched-<name> Execute an existing scheduler skill body inline (manual trigger). Surfaced at the bottom of the / picker after regular skills; label rendered in warn-purple to mark it as an invocation. The dispatch wraps the body with an explicit "execute, do NOT activate scheduler-skill-creator" preamble.
/mode [cli|web] Switch between cli (TUI rendering) and web (browser page). Inline arg switches without the popup.
/update Confirm popup → agen stop && agen update via tea.ExecProcess → quit TUI.
/history Reload visible transcript — clear screen, reprint header, render the last 100 entries from the session's action.log.
/log Open the raw action.log in $PAGER (fallback less -Rf +G, jumps to bottom). \x1F markers are expanded back to newlines for readability.
/clear Clear the current window display only — like terminal clear; conversation memory is untouched.
/exit, /quit Exit TUI (daemon keeps running; re-attach with agen).
Built-in tools

Tools auto-load on demand; stub names appear first, full schema activates on use. See Tools wiki for parameters and routing.

Tool Description
File
read_file Read a text, PDF, DOCX, PPTX, CSV/TSV, or image file.
write_file Write content to a file, overwriting if it exists.
patch_file Replace an exact string match inside a file.
list_files List directory entries; recursive=true walks subtree files.
glob_files Find files matching a glob pattern within a directory.
search_files Search file contents by RE2 regex within a directory.
Web
fetch_page Fetch a web page and return its content as Markdown.
save_page_to_file Fetch a web page and save its content to a local file.
search_web Search the web via DuckDuckGo Lite; returns top 10 results.
fetch_google_rss Search Google News RSS and return article titles, summaries, links.
fetch_yahoo_finance Query Yahoo Finance quotes and K-line (OHLCV).
fetch_youtube_transcript Transcribe a YouTube video with timestamps. (gemini needed)
transcribe_media Transcribe a local audio / video file (ogg, mp3, wav, m4a, flac, aac, mp4, mov, webm, mpeg, 3gp, …) up to 20 MiB. (gemini needed)
send_http_request Send an HTTP request to a specified URL.
Shell
run_command Run a binary with argv; returns combined stdout/stderr.
Render
update_page Overwrite the rendered HTML page for the current session; tabs auto-reload.
generate_image Generate an image via gpt-image-2 (size & quality picked by user). (codex needed)
Channel
list_telegram_chat List authorized Telegram chats (id + name). (telegram needed)
send_to_telegram_chat Send an HTML-formatted message to an authorized Telegram chat by chat_id. (telegram needed)
telegram_format Return the Telegram HTML formatting reference (allowed tags, escape rules, file/voice markers). (telegram needed)
list_discord_channel List authorized Discord channels (id + name). (discord needed)
send_to_discord_channel Send a markdown-formatted message to an authorized Discord channel by channel_id. (discord needed)
discord_format Return the Discord markdown formatting reference (allowed markdown, special tokens, file/voice markers). (discord needed)
Calc
calculate Evaluate a mathematical expression and return the exact result.
Discovery
list_tools List all currently available built-in and dynamically loaded tools.
search_tools Search available tools by keyword and inject matches into the request.
activate_skill Fetch a skill's reference material by exact name.
Interactive
ask_user Ask the user one or more questions and return their answers.
store_secret Prompt the user for a secret with masked input and persist to the system keychain.
Memory
search_conversation_history Search the session's past messages by keyword and semantic similarity.
search_error_memory Semantically search past tool-error records; hits refresh 3-month TTL.
read_error_memory Fetch a prior tool-error record by hash.
remember_error Persist a tool-error record for future retrieval.
RAG (KuraDB)
rag_list_db List available KuraDB databases (e.g. notes, inbox, code). (kuradb needed)
rag_search_keyword Keyword search a KuraDB database via gse tokenization. (kuradb needed)
rag_search_semantic Semantic search a KuraDB database via OpenAI embeddings. (kuradb needed)
Agent
invoke_subagent Run a subtask in an internal subagent session and return its final text.
invoke_external_agent Invoke one external CLI agent (codex / copilot / claude / gemini) for a second opinion.
cross_review_with_external_agents Cross-review a completed result across all available external agents in parallel.
review_result Review a result against the original input and return issues and improvements.
Scheduler
add_task Bind an existing scheduler skill to fire once at a specific time (+5m / HH:MM / YYYY-MM-DD HH:MM / RFC3339).
add_cron Bind an existing scheduler skill to a recurring 5-field cron expression.
patch_task / patch_cron Reschedule an existing task / cron by skill name (changes only the time, leaves the bound skill body untouched).
remove_task / remove_cron Cancel a scheduled task / cron by skill name; the bound scheduler skill dir is moved to .Trash/.
Skill Git
skill_git_commit / skill_git_log / skill_git_rollback Commit, list, or roll back the ~/.config/agenvoy/skills git history.

Dynamic tool families (auto-registered, not listed above): mcp__<server>__<tool> from configured MCP servers, api_<name> from extensions/apis/*.json, script_<name> from extensions/scripts/<name>/.

Wiki

English 中文
Getting Started 新手入門
Architecture 架構
Core Concepts 核心概念
Providers Provider 設定
Tools 工具系統
Memory System 記憶系統
Skill System Skill 系統
MCP Integration MCP 整合
Security and Sandbox 安全與沙箱
CLI Reference 命令列參考
Configuration 設定檔

License

This project is licensed under the Apache License 2.0.

Contributor

Just open an issue to share an idea.

Agenvoy contributors

Star History

Agenvoy star history

When the curve trends up — that's the signal we want to see. Hit ★ to push it along.


©️ 2026 邱敬幃 Pardn Chiu