{"id":47632423,"url":"https://github.com/pardnchiu/agenvoy","last_synced_at":"2026-05-23T19:01:16.977Z","repository":{"id":337005693,"uuid":"1150205195","full_name":"pardnchiu/Agenvoy","owner":"pardnchiu","description":"Agent OS | Multi-provider concurrent dispatch | Self-improving error memory | Pluggable tool extensions | Sandbox execution","archived":false,"fork":false,"pushed_at":"2026-05-20T18:01:46.000Z","size":9562,"stargazers_count":115,"open_issues_count":0,"forks_count":15,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-05-20T18:38:50.273Z","etag":null,"topics":["agent-os","agentic","agentic-ai","ai","ai-agent","go","golang","harness"],"latest_commit_sha":null,"homepage":"https://agenvoy.com/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pardnchiu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-05T02:16:07.000Z","updated_at":"2026-05-20T17:02:14.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/pardnchiu/Agenvoy","commit_stats":null,"previous_names":["pardnchiu/go-agent-skills","pardnchiu/go-agent","pardnchiu/agenvoy","agenvoy/agenvoy"],"tags_count":60,"template":false,"template_full_name":null,"purl":"pkg:github/pardnchiu/Agenvoy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pardnchiu%2FAgenvoy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pardnchiu%2FAgenvoy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pardnchiu%2FAgenvoy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pardnchiu%2FAgenvoy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pardnchiu","download_url":"https://codeload.github.com/pardnchiu/Agenvoy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pardnchiu%2FAgenvoy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33408490,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T18:09:33.147Z","status":"ssl_error","status_checked_at":"2026-05-23T18:09:31.380Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-os","agentic","agentic-ai","ai","ai-agent","go","golang","harness"],"created_at":"2026-04-01T23:49:53.941Z","updated_at":"2026-05-23T19:01:16.927Z","avatar_url":"https://github.com/pardnchiu.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003e [!NOTE]\n\u003e This README was generated by [SKILL](https://github.com/pardnchiu/skill-readme-generate), get the ZH version from [here](./doc/README.zh.md).\u003cbr\u003e\n\u003e Tests are generated by [SKILL](https://github.com/pardnchiu/skill-coverage-generate).\n\n***\n\n\u003cp align=\"center\"\u003e\n  \u003cpicture style=\"margin-down: 1rem\"\u003e\n    \u003cimg src=\"./doc/logo.svg\" alt=\"Agenvoy\" width=\"320\"\u003e\n  \u003c/picture\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eOne command. Multiple models. Each playing to its strength.\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  Go-native runtime · Dispatcher routes each step to the best-fit model · Subagents collaborate in one process\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://pkg.go.dev/github.com/pardnchiu/agenvoy\"\u003e\u003cimg src=\"https://img.shields.io/badge/GO-REFERENCE-blue?include_prereleases\u0026style=for-the-badge\" alt=\"Go Reference\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://app.codecov.io/github/pardnchiu/agenvoy/tree/master\"\u003e\u003cimg src=\"https://img.shields.io/codecov/c/github/pardnchiu/agenvoy/master?include_prereleases\u0026style=for-the-badge\" alt=\"Coverage\"\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/v/tag/pardnchiu/agenvoy?include_prereleases\u0026style=for-the-badge\" alt=\"Version\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/pardnchiu/agenvoy/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/license/pardnchiu/agenvoy?include_prereleases\u0026style=for-the-badge\" alt=\"License\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n***\n\n## Quick install\n\n```bash\ncurl -fsSL https://cloud.agenvoy.com/install.sh | bash\n```\n\nOne line. Single binary at `/usr/local/bin/agen`. macOS / Linux.\n\nRunning the daemon on a MacBook? Run `sudo pmset -c sleep 0` to keep the system awake while plugged in — prevents the daemon from being suspended on AC power.\n\n## What makes it different\n\n- **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.\n- **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.\n- **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.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eAgenvoy vs Mainstream Products: Full Detailed Comparison\u003c/strong\u003e\u003c/summary\u003e\n\n### 1. Overview\n\n| | **Agenvoy** | **Claude Code** | **Codex CLI** | **Gemini CLI** | **OpenClaw** | **Hermes Agent** |\n|--|--|--|--|--|--|--|\n| **Language** | Go | TypeScript | TypeScript | TypeScript | TypeScript | Python |\n| **License** | Apache 2.0 | Proprietary | Apache 2.0 | Apache 2.0 | MIT | MIT |\n| **Author** | Individual (pardnchiu) | Anthropic | OpenAI | Google | Community | NousResearch |\n| **Primary use** | Multi-platform AI Agent framework | Terminal coding assistant | Terminal coding assistant | Terminal coding assistant | Multi-platform AI Agent | Multi-platform AI Agent |\n| **Architecture** | Daemon + TUI + Chat | CLI session | CLI session | CLI session | Daemon + TUI + Chat | Daemon + TUI + Chat |\n\n---\n\n### 2. AI Provider Support\n\n| | **Agenvoy** | **Claude Code** | **Codex CLI** | **Gemini CLI** | **OpenClaw** | **Hermes Agent** |\n|--|--|--|--|--|--|--|\n| Claude | ✅ | ✅ only | ❌ | ❌ | ✅ | ✅ |\n| OpenAI / GPT | ✅ | ❌ | ✅ only | ❌ | ✅ | ✅ |\n| Gemini | ✅ | ❌ | ❌ | ✅ only | ✅ | ✅ |\n| Codex (OpenAI OAuth) | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ |\n| GitHub Copilot | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ |\n| Nvidia NIM | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ |\n| OpenAI-compat | ✅ | ❌ | ❌ | ❌ | ✅ Ollama/LM Studio | ✅ OpenRouter 200+ |\n| DeepSeek / Mistral / xAI | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ |\n| Dispatcher routing | ✅ dedicated dispatcher model | ❌ | ❌ | ❌ | ❌ | ❌ |\n\n---\n\n### 3. Runtime \u0026 Frontend\n\n| | **Agenvoy** | **Claude Code** | **Codex CLI** | **Gemini CLI** | **OpenClaw** | **Hermes Agent** |\n|--|--|--|--|--|--|--|\n| TUI | ✅ bubbletea | ✅ ink | ✅ | ✅ | ✅ `openclaw tui` | ✅ React Ink |\n| CLI | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |\n| HTTP API / Web UI | ✅ gin | ❌ | ❌ | ❌ | ❌ | ✅ Web Dashboard |\n| Daemon mode | ✅ native `--daemon` | ❌ | ❌ | ❌ | ✅ systemd/launchd | ✅ gateway daemon |\n| Session Canvas (HTML+SSE) | ✅ `update_page` | ❌ | ❌ | ❌ | ❌ | ❌ |\n| Named sessions | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ session picker |\n\n---\n\n### 4. Chat Platform Integration\n\n| | **Agenvoy** | **Claude Code** | **Codex CLI** | **Gemini CLI** | **OpenClaw** | **Hermes Agent** |\n|--|--|--|--|--|--|--|\n| Telegram | ✅ native daemon | ⚠️ Channels MCP (requires active session) | ❌ | ❌ | ✅ native daemon | ✅ native daemon |\n| Discord | ✅ native daemon | ⚠️ Channels MCP (requires active session) | ❌ | ❌ | ✅ native daemon | ✅ native daemon |\n| iMessage | ❌ | ⚠️ Channels MCP (macOS only) | ❌ | ❌ | ✅ BlueBubbles | ✅ BlueBubbles |\n| WhatsApp / Slack / LINE | ❌ | ❌ | ❌ | ❌ | ✅ 50+ platforms | ✅ 20+ platforms |\n| Always-on receiving (no session needed) | ✅ daemon | ❌ | ❌ | ❌ | ✅ | ✅ |\n| Cross-session send (any session → chat) | ✅ `send_to_telegram_chat` / `send_to_discord_channel` | ❌ | ❌ | ❌ | ❌ | ❌ |\n| OTP verification | ✅ 6-digit crypto/rand | ❌ | ❌ | ❌ | ❌ | ❌ |\n| Native platform UI (buttons / menus / modals) | ✅ inline keyboard / select menu / modal | ❌ | ❌ | ❌ | ⚠️ text-based options | ⚠️ text-based options |\n\n\u003e **Platform layer**: Agenvoy's Telegram and Discord integrations are both built on [pardnchiu/go-bot](https://github.com/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.\n\n\u003e **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.\n\n---\n\n### 5. Telegram Feature Comparison\n\n| Feature | **Agenvoy** | **OpenClaw** | **Hermes Agent** | **Claude Code Channels** |\n|---------|-------------|-------------|------------------|--------------------------|\n| Send text reply | ✅ | ✅ | ✅ | ✅ |\n| Send voice (TTS) | ✅ Gemini TTS → OGG | ✅ ElevenLabs/Hume | ✅ Edge TTS/ElevenLabs | ❌ |\n| Send file attachments | ✅ `[SEND_FILE:]` | ✅ | ✅ | ❌ |\n| Receive user attachments | ✅ photo/doc/voice/video | ✅ | ✅ | ❌ |\n| Voice-to-text (STT) | ✅ Gemini, 14 formats | ✅ Whisper/Gemini | ✅ faster-whisper (local) | ❌ |\n| Tool confirm (interactive) | ✅ native inline keyboard | ⚠️ text approval prompt | ⚠️ text options | ❌ |\n| ask_user (picker) | ✅ native button/modal | ⚠️ `/models` picker | ⚠️ text options, up to 4 | ❌ |\n| Format reference (lazy-load tool) | ✅ `telegram_format` | ❌ | ❌ | ❌ |\n| Scheduler output push | ✅ | ✅ | ✅ | ❌ |\n| Cross-session push (from any session) | ✅ `send_to_telegram_chat` | ❌ | ❌ | ❌ |\n| Offline receiving (daemon) | ✅ | ✅ | ✅ | ❌ |\n\n---\n\n### 6. Discord Feature Comparison\n\n| Feature | **Agenvoy** | **OpenClaw** | **Hermes Agent** | **Claude Code Channels** |\n|---------|-------------|-------------|------------------|--------------------------|\n| Send text reply | ✅ | ✅ | ✅ | ✅ |\n| Send voice (TTS) | ✅ Gemini TTS → OGG/OPUS | ✅ | ✅ | ❌ |\n| Send file attachments | ✅ batch 10/message | ✅ | ✅ | ❌ |\n| Receive user attachments | ✅ photo/doc/voice/video | ✅ | ✅ | ❌ |\n| Tool confirm (interactive) | ✅ select menu button | ✅ `/model` picker | ⚠️ text options | ❌ |\n| ask_user (modal) | ✅ select/multi-select/modal | ⚠️ limited | ⚠️ text options | ❌ |\n| Format reference (lazy-load tool) | ✅ `discord_format` | ❌ | ❌ | ❌ |\n| Guild mention guard | ✅ | ✅ | ✅ | ❌ |\n| Discord Markdown aware | ✅ full spec as lazy-load tool | ⚠️ partial | ⚠️ partial | ❌ |\n| Character limit aware | ✅ 1600 char hard limit in prompt | ❌ | ❌ | ❌ |\n| Cross-session push (from any session) | ✅ `send_to_discord_channel` | ❌ | ❌ | ❌ |\n\n---\n\n### 7. Scheduler\n\n| | **Agenvoy** | **Claude Code** | **Codex CLI** | **Gemini CLI** | **OpenClaw** | **Hermes Agent** |\n|--|--|--|--|--|--|--|\n| Cron jobs | ✅ SKILL.md + cron | ✅ cloud-assisted cron/task | ❌ | ❌ | ✅ built-in | ✅ built-in |\n| One-shot tasks | ✅ | ✅ cloud-assisted | ❌ | ❌ | ✅ `at` format | ✅ natural language |\n| TUI CRUD | ✅ | ❌ | ❌ | ❌ | ✅ `openclaw cron` | ✅ `cronjob` tool |\n| fsnotify hot-reload | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |\n| Push output to Telegram/Discord | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ |\n| AI tool management (add/list/remove) | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ `cronjob` tool |\n| Local execution (no cloud required) | ✅ | ❌ cloud-dependent | ❌ | ❌ | ✅ | ✅ |\n\n\u003e **Scheduler layer**: Agenvoy's scheduler is built on [pardnchiu/go-scheduler](https://github.com/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.\n\n---\n\n### 8. Tool Ecosystem\n\n| | **Agenvoy** | **Claude Code** | **Codex CLI** | **Gemini CLI** | **OpenClaw** | **Hermes Agent** |\n|--|--|--|--|--|--|--|\n| MCP support | ✅ client | ✅ client | ❌ | ✅ client | ✅ client | ✅ client + server |\n| Custom tools (script-tool-add) | ✅ AI-generated | ❌ | ❌ | ❌ | ❌ | ✅ auto-creates skill |\n| API tool discovery (search-api → add) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |\n| Skill system | ✅ SKILL.md lazy-load | ✅ CLAUDE.md | ❌ | ❌ | ✅ SKILL.md 5400+ community | ✅ SKILL.md agentskills.io |\n| Format reference as lazy-load tool | ✅ `telegram_format` / `discord_format` | ❌ | ❌ | ❌ | ❌ | ❌ |\n| Image generation | ✅ DALL-E/Codex Image | ❌ | ❌ | ❌ | ❌ | ❌ |\n| Media transcription STT | ✅ Gemini, 14 formats | ❌ | ❌ | ❌ | ✅ Whisper/Gemini | ✅ faster-whisper (local) |\n| TTS voice output | ✅ Gemini TTS | ❌ | ❌ | ❌ | ✅ ElevenLabs/Hume/MS | ✅ Edge TTS/ElevenLabs/OpenAI |\n| Computer use / browser | ✅ go-rod + Playwright MCP | ✅ beta | ❌ | ❌ | ✅ Chrome CDP | ✅ Playwright (Chromium/Firefox) |\n\n\u003e **Tool sandbox architecture**: Agenvoy's Python/JavaScript/API custom tool interfaces are built on the [pardnchiu/go-faas](https://github.com/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.\n\n---\n\n### 9. Memory System\n\n| | **Agenvoy** | **Claude Code** | **Codex CLI** | **Gemini CLI** | **OpenClaw** | **Hermes Agent** |\n|--|--|--|--|--|--|--|\n| Instruction file system | ✅ SKILL.md | ✅ CLAUDE.md | ❌ | ❌ | ✅ SKILL.md | ✅ SKILL.md |\n| Conversation history search | ✅ ToriiDB vector search | ❌ | ❌ | ❌ | ✅ SQLite vector | ✅ SQLite FTS5 |\n| Error memory | ✅ ToriiDB | ❌ | ❌ | ❌ | ❌ | ❌ |\n| Action log | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |\n| Long-term persistent memory | ⚠️ ToriiDB foundation in place | ⚠️ CLAUDE.md manual | ❌ | ❌ | ✅ Wiki-style MEMORY.md | ✅ MEMORY.md + USER.md |\n| Cross-session memory | ⚠️ session-isolated by default, extensible with external memory | ⚠️ session-isolated by default, extensible with external memory | ⚠️ session-isolated by default | ⚠️ session-isolated by default | ✅ built-in cross-session | ✅ built-in cross-session |\n\n\u003e **ToriiDB** is a self-developed embedded vector database ([pardnchiu/ToriiDB](https://github.com/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.\n\n---\n\n### 10. Dependencies \u0026 Deployment\n\n| | **Agenvoy** | **Claude Code** | **Codex CLI** | **Gemini CLI** | **OpenClaw** | **Hermes Agent** |\n|--|--|--|--|--|--|--|\n| Direct external dependencies | **12** | 50+ | 40+ | 40+ | large (pnpm monorepo) | 30–40 core + 60+ optional |\n| Self-maintained ecosystem packages | 5 (go-bot / go-pkg / go-scheduler / ToriiDB / go-faas) | 0 | 0 | 0 | 0 | 0 |\n| Runtime | Go (static binary) | Node.js | Node.js | Node.js | Node.js | Python |\n| Deployment | **single binary** | npm install | npm install | npm install | npm install | pip + docker/VPS |\n\n---\n\n### Where Agenvoy Stands\n\n| Dimension | Detail |\n|-----------|--------|\n| **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) |\n| **On par with competitors** | Telegram/Discord daemon, TTS/STT, scheduler output push, Skill system, MCP, browser automation, inbound attachment handling |\n| **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 |\n| **Codex CLI** | Fewest features — CLI + TUI + OpenAI OAuth only, no daemon, no chat platforms, no scheduler |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eCLI commands\u003c/strong\u003e\u003c/summary\u003e\n\n\u003e Run as `agen \u003csub\u003e`. `make \u003csub\u003e` wrappers exist in the repo Makefile for development.\n\n| Command | Description |\n|---|---|\n| `agen` | Attach interactive TUI; forks daemon (HTTP + Discord + Telegram + scheduler + summary cron) if not running. |\n| `agen cli \u003cinput\u003e` | One-shot agent run; every tool call asks for confirmation. |\n| `agen run \u003cinput\u003e` | One-shot agent run; auto-approves every tool call. |\n| `agen stop` | Stop the running daemon (SIGTERM 5s grace → SIGKILL → clear `runtime.uid`). |\n| `agen update` | Fetch latest release, rebuild, stop daemon — re-attach to load the new binary. |\n| `agen model {add\\|remove\\|list\\|dispatcher\\|reasoning}` | Manage providers / worker models, pick dispatcher model, set reasoning level. |\n| `agen mcp {list\\|add\\|remove}` | Manage MCP servers (stdio / HTTP) across global and per-session scope. |\n| `agen session {new\\|switch\\|config} [name]` | Manage CLI sessions; bare `switch` / `config` opens an interactive picker. |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eTUI slash commands\u003c/strong\u003e\u003c/summary\u003e\n\n\u003e Available inside `agen`'s TUI prompt. Type `/` to filter; popup commands transition cleanly back to the prompt.\n\n| Command | Description |\n|---|---|\n| `/switch` | Switch active session via picker (current session pre-selected). |\n| `/new [name]` | Create a new session; optional name pins it to the registry. Name is conflict-checked against existing sessions; abort on duplicate. |\n| `/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). |\n| `/model [global\\|session]` | Scope picker; `global` → `[add, remove]` (registry), `session` → pick a configured model. Inline arg skips the scope popup. |\n| `/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. |\n| `/dispatcher` | Pick the dispatcher model from `cfg.Models` via popup. No inline arg. |\n| `/reasoning [global\\|session]` | Pick `low` / `medium` / `high` for the dispatcher (global) or the active session. Inline arg skips the scope popup. |\n| `/discord [enable\\|disable]` | Toggle Discord bot connection (token entry, verification, keychain write, daemon reload all happen in-TUI). Inline arg switches without the popup. |\n| `/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. |\n| `/cron [add\\|remove\\|edit]` | Manage recurring schedules. `add` opens a multiline requirement textarea → dispatches `/scheduler-skill-creator \u003crequirement\u003e` (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. |\n| `/task [add\\|remove\\|edit]` | Manage one-shot scheduled tasks (mirrors `/cron`; uses `add_task` / `patch_task` / `remove_task`). Picker shows `\u003cYYYY-MM-DD HH:MM\u003e  \u003cskill\u003e`. |\n| `/sched-\u003cname\u003e` | 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. |\n| `/mode [cli\\|web]` | Switch between `cli` (TUI rendering) and `web` (browser page). Inline arg switches without the popup. |\n| `/update` | Confirm popup → `agen stop \u0026\u0026 agen update` via `tea.ExecProcess` → quit TUI. |\n| `/history` | Reload visible transcript — clear screen, reprint header, render the last 100 entries from the session's `action.log`. |\n| `/log` | Open the raw `action.log` in `$PAGER` (fallback `less -Rf +G`, jumps to bottom). `\\x1F` markers are expanded back to newlines for readability. |\n| `/clear` | Clear the current window display only — like terminal `clear`; conversation memory is untouched. |\n| `/exit`, `/quit` | Exit TUI (daemon keeps running; re-attach with `agen`). |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eBuilt-in tools\u003c/strong\u003e\u003c/summary\u003e\n\n\u003e Tools auto-load on demand; stub names appear first, full schema activates on use. See [Tools wiki](https://github.com/pardnchiu/agenvoy/wiki/Tools) for parameters and routing.\n\n| Tool | Description |\n|---|---|\n| **File** |  |\n| `read_file` | Read a text, PDF, DOCX, PPTX, CSV/TSV, or image file. |\n| `write_file` | Write content to a file, overwriting if it exists. |\n| `patch_file` | Replace an exact string match inside a file. |\n| `list_files` | List directory entries; `recursive=true` walks subtree files. |\n| `glob_files` | Find files matching a glob pattern within a directory. |\n| `search_files` | Search file contents by RE2 regex within a directory. |\n| **Web** |  |\n| `fetch_page` | Fetch a web page and return its content as Markdown. |\n| `save_page_to_file` | Fetch a web page and save its content to a local file. |\n| `search_web` | Search the web via DuckDuckGo Lite; returns top 10 results. |\n| `fetch_google_rss` | Search Google News RSS and return article titles, summaries, links. |\n| `fetch_yahoo_finance` | Query Yahoo Finance quotes and K-line (OHLCV). |\n| `fetch_youtube_transcript` | Transcribe a YouTube video with timestamps. *(gemini needed)* |\n| `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)* |\n| `send_http_request` | Send an HTTP request to a specified URL. |\n| **Shell** |  |\n| `run_command` | Run a binary with argv; returns combined stdout/stderr. |\n| **Render** |  |\n| `update_page` | Overwrite the rendered HTML page for the current session; tabs auto-reload. |\n| `generate_image` | Generate an image via gpt-image-2 (size \u0026 quality picked by user). *(codex needed)* |\n| **Channel** |  |\n| `list_telegram_chat` | List authorized Telegram chats (id + name). *(telegram needed)* |\n| `send_to_telegram_chat` | Send an HTML-formatted message to an authorized Telegram chat by chat_id. *(telegram needed)* |\n| `telegram_format` | Return the Telegram HTML formatting reference (allowed tags, escape rules, file/voice markers). *(telegram needed)* |\n| `list_discord_channel` | List authorized Discord channels (id + name). *(discord needed)* |\n| `send_to_discord_channel` | Send a markdown-formatted message to an authorized Discord channel by channel_id. *(discord needed)* |\n| `discord_format` | Return the Discord markdown formatting reference (allowed markdown, special tokens, file/voice markers). *(discord needed)* |\n| **Calc** |  |\n| `calculate` | Evaluate a mathematical expression and return the exact result. |\n| **Discovery** |  |\n| `list_tools` | List all currently available built-in and dynamically loaded tools. |\n| `search_tools` | Search available tools by keyword and inject matches into the request. |\n| `activate_skill` | Fetch a skill's reference material by exact name. |\n| **Interactive** |  |\n| `ask_user` | Ask the user one or more questions and return their answers. |\n| `store_secret` | Prompt the user for a secret with masked input and persist to the system keychain. |\n| **Memory** |  |\n| `search_conversation_history` | Search the session's past messages by keyword and semantic similarity. |\n| `search_error_memory` | Semantically search past tool-error records; hits refresh 3-month TTL. |\n| `read_error_memory` | Fetch a prior tool-error record by hash. |\n| `remember_error` | Persist a tool-error record for future retrieval. |\n| **Agent** |  |\n| `invoke_subagent` | Run a subtask in an internal subagent session and return its final text. |\n| `invoke_external_agent` | Invoke one external CLI agent (codex / copilot / claude / gemini) for a second opinion. |\n| `cross_review_with_external_agents` | Cross-review a completed result across all available external agents in parallel. |\n| `review_result` | Review a result against the original input and return issues and improvements. |\n| **Scheduler** |  |\n| `add_task` | Bind an existing scheduler skill to fire once at a specific time (`+5m` / `HH:MM` / `YYYY-MM-DD HH:MM` / RFC3339). |\n| `add_cron` | Bind an existing scheduler skill to a recurring 5-field cron expression. |\n| `patch_task` / `patch_cron` | Reschedule an existing task / cron by skill name (changes only the time, leaves the bound skill body untouched). |\n| `remove_task` / `remove_cron` | Cancel a scheduled task / cron by skill name; the bound scheduler skill dir is moved to `.Trash/`. |\n| **Skill Git** |  |\n| `skill_git_commit` / `skill_git_log` / `skill_git_rollback` | Commit, list, or roll back the `~/.config/agenvoy/skills` git history. |\n\nDynamic tool families (auto-registered, not listed above): `mcp__\u003cserver\u003e__\u003ctool\u003e` from configured MCP servers, `api_\u003cname\u003e` from `extensions/apis/*.json`, `script_\u003cname\u003e` from `extensions/scripts/\u003cname\u003e/`.\n\n\u003c/details\u003e\n\n## Wiki\n\n| English | 中文 |\n|---|---|\n| [Getting Started](https://github.com/pardnchiu/agenvoy/wiki/Getting-Started) | [新手入門](https://github.com/pardnchiu/agenvoy/wiki/新手入門) |\n| [Architecture](https://github.com/pardnchiu/agenvoy/wiki/Architecture) | [架構](https://github.com/pardnchiu/agenvoy/wiki/架構) |\n| [Core Concepts](https://github.com/pardnchiu/agenvoy/wiki/Core-Concepts) | [核心概念](https://github.com/pardnchiu/agenvoy/wiki/核心概念) |\n| [Providers](https://github.com/pardnchiu/agenvoy/wiki/Providers) | [Provider 設定](https://github.com/pardnchiu/agenvoy/wiki/Provider-設定) |\n| [Tools](https://github.com/pardnchiu/agenvoy/wiki/Tools) | [工具系統](https://github.com/pardnchiu/agenvoy/wiki/工具系統) |\n| [Memory System](https://github.com/pardnchiu/agenvoy/wiki/Memory-System) | [記憶系統](https://github.com/pardnchiu/agenvoy/wiki/記憶系統) |\n| [Skill System](https://github.com/pardnchiu/agenvoy/wiki/Skill-System) | [Skill 系統](https://github.com/pardnchiu/agenvoy/wiki/Skill-系統) |\n| [MCP Integration](https://github.com/pardnchiu/agenvoy/wiki/MCP-Integration) | [MCP 整合](https://github.com/pardnchiu/agenvoy/wiki/MCP-整合) |\n| [Security and Sandbox](https://github.com/pardnchiu/agenvoy/wiki/Security-and-Sandbox) | [安全與沙箱](https://github.com/pardnchiu/agenvoy/wiki/安全與沙箱) |\n| [CLI Reference](https://github.com/pardnchiu/agenvoy/wiki/CLI-Reference) | [命令列參考](https://github.com/pardnchiu/agenvoy/wiki/命令列參考) |\n| [Configuration](https://github.com/pardnchiu/agenvoy/wiki/Configuration) | [設定檔](https://github.com/pardnchiu/agenvoy/wiki/設定檔) |\n\n## License\n\nThis project is licensed under the [Apache License 2.0](LICENSE).\n\n## Contributor\n\nJust [open an issue](https://github.com/pardnchiu/agenvoy/issues/new) to share an idea.\n\n\u003ca href=\"https://github.com/pardnchiu/agenvoy/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=pardnchiu/agenvoy\u0026cache_bust=2026-05-12\" alt=\"Agenvoy contributors\" /\u003e\n\u003c/a\u003e\n\n## Star History\n\n\u003ca href=\"https://star-history.com/#pardnchiu/agenvoy\u0026Date\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/svg?repos=pardnchiu/agenvoy\u0026type=Date\u0026theme=dark\u0026cache_bust=2026-05-12\" /\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/svg?repos=pardnchiu/agenvoy\u0026type=Date\u0026cache_bust=2026-05-12\" /\u003e\n    \u003cimg alt=\"Agenvoy star history\" src=\"https://api.star-history.com/svg?repos=pardnchiu/agenvoy\u0026type=Date\u0026cache_bust=2026-05-12\" /\u003e\n  \u003c/picture\u003e\n\u003c/a\u003e\n\nWhen the curve trends up — that's the signal we want to see. Hit ★ to push it along.\n\n***\n\n©️ 2026 [邱敬幃 Pardn Chiu](https://www.linkedin.com/in/pardnchiu)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpardnchiu%2Fagenvoy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpardnchiu%2Fagenvoy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpardnchiu%2Fagenvoy/lists"}