[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-638":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":9,"rankLanguage":9,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":9,"pushedAt":9,"updatedAt":46,"readmeContent":47,"aiSummary":48,"trendingCount":15,"starSnapshotCount":15,"syncStatus":49,"lastSyncTime":50,"discoverSource":51},638,"hermes-web-ui","EKKOLearnAI\u002Fhermes-web-ui","EKKOLearnAI","Web dashboard for Hermes Agent — multi-platform AI chat, session management, scheduled jobs, usage analytics ",null,"TypeScript",7691,947,27,107,0,260,914,1865,780,39.93,"MIT License",false,"main",true,[26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],"agent","ai-agent","chat-ui","chatbot","claude","dashboard","discord-bot","hermes","hermes-agent","hermes-webui","llm","multi-model","multi-platform","self-hosted","slack-bot","telegram-bot","typescript","vue3","web-ui","whatsapp","2026-06-12 02:00:16","\u003Cp align=\"center\">\n  \u003Cstrong>Hermes Web UI\u003C\u002Fstrong>\n  \u003Ca href=\".\u002FREADME_zh.md\">中文\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  A full-featured web dashboard for \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNousResearch\u002Fhermes-agent\">Hermes Agent\u003C\u002Fa>.\u003Cbr\u002F>\n  Manage AI chat sessions, monitor usage & costs, configure platform channels,\u003Cbr\u002F>\n  schedule cron jobs, browse skills — all from a clean, responsive web interface.\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ccode>npm install -g hermes-web-ui && hermes-web-ui start\u003C\u002Fcode>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002FEKKOLearnAI\u002Fhermes-web-ui\u002Fblob\u002Fmain\u002Fpackages\u002Fclient\u002Fsrc\u002Fassets\u002Fimage1.png\" alt=\"Hermes Web UI Demo\" width=\"680\"\u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002FEKKOLearnAI\u002Fhermes-web-ui\u002Fblob\u002Fmain\u002Fpackages\u002Fclient\u002Fsrc\u002Fassets\u002Fimage2.png\" alt=\"Hermes Web UI Demo\" width=\"680\"\u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fhermes-web-ui\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fhermes-web-ui?style=flat-square&color=blue\" alt=\"npm version\"\u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FEKKOLearnAI\u002Fhermes-web-ui\u002Fblob\u002Fmain\u002FLICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fl\u002Fhermes-web-ui?style=flat-square\" alt=\"license\"\u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FEKKOLearnAI\u002Fhermes-web-ui\u002Fstargazers\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FEKKOLearnAI\u002Fhermes-web-ui?style=flat-square\" alt=\"stars\"\u002F>\u003C\u002Fa>\n\u003C\u002Fp>\n\n---\n\n## Features\n\n### AI Chat\n\n- Real-time streaming via SSE with async run support\n- Multi-session management — create, rename, delete, switch between sessions\n- **Self-built session database** — local SQLite storage with automatic sync from Hermes state.db on first startup\n- Session grouping by source (Telegram, Discord, Slack, etc.) with collapsible accordion\n- Active session indicator — live sessions pin to top with spinner icon\n- Sessions sorted by latest message time\n- Markdown rendering with syntax highlighting and code copy\n- Tool call detail expansion (arguments \u002F result)\n- File upload support\n- File download support — download user-uploaded files and agent-generated files across local, Docker, SSH, and Singularity backends\n- Session search — Ctrl+K global search across all conversations\n- Global model selector — discovers models from `~\u002F.hermes\u002Fauth.json` credential pool\n- Per-session model display badge and context token usage\n\n### Platform Channels\n\nUnified configuration for **8 platforms** in one page:\n\n| Platform      | Features                                                               |\n| ------------- | ---------------------------------------------------------------------- |\n| Telegram      | Bot token, mention control, reactions, free-response chats             |\n| Discord       | Bot token, mention, auto-thread, reactions, channel allow\u002Fignore lists |\n| Slack         | Bot token, mention control, bot message handling                       |\n| WhatsApp      | Enable\u002Fdisable, mention control, mention patterns                      |\n| Matrix        | Access token, homeserver, auto-thread, DM mention threads              |\n| Feishu (Lark) | App ID \u002F Secret, mention control                                       |\n| WeChat        | QR code login (scan in browser, auto-save credentials)                 |\n| WeCom         | Bot ID \u002F Secret                                                        |\n\n- Credential management writes to `~\u002F.hermes\u002F.env`\n- Channel behavior settings write to `~\u002F.hermes\u002Fconfig.yaml`\n- Auto gateway restart on config change\n- Per-platform configured\u002Funconfigured status detection\n\n### Usage Analytics\n\n- Total token usage breakdown (input \u002F output)\n- Session count with daily average\n- Estimated cost tracking & cache hit rate\n- Model usage distribution chart\n- 30-day daily trend (bar chart + data table)\n\n### Scheduled Jobs\n\n- Create, edit, pause, resume, delete cron jobs\n- Trigger immediate execution\n- Cron expression quick presets\n\n### Model Management\n\n- Auto-discover models from credential pool (`~\u002F.hermes\u002Fauth.json`)\n- Fetch available models from each provider endpoint (`\u002Fv1\u002Fmodels`)\n- Add, update, and delete providers (preset & custom OpenAI-compatible)\n- OpenAI Codex & Nous Portal OAuth login\n- Provider URL auto-detection for non-v1 API versions (e.g. `\u002Fv4`)\n- Provider-level model grouping with default model switching\n\n### Multi-Profile & Gateway\n\n- Create, rename, delete, and switch between Hermes profiles\n- Clone existing profile or import from archive (`.tar.gz`)\n- Export profile for backup or sharing\n- Multi-gateway management — start, stop, and monitor gateway per profile\n- Auto port conflict resolution\n- Profile-scoped configuration and cache isolation\n\n### File Browser\n\n- Browse files on remote backends (local, Docker, SSH, Singularity)\n- Upload, download, rename, copy, move, and delete files\n- Create directories\n- View file content with syntax highlighting\n\n### Group Chat\n\n- Multi-agent chat rooms with real-time messaging via Socket.IO\n- @mention routing — mention an agent to trigger a contextual reply\n- Context compression — automatic conversation summarization when history exceeds token threshold\n- Typing status and reply progress indicators\n- Room creation, deletion, and invite code management\n- Agent management — add\u002Fremove agents from rooms with per-agent profiles\n- SQLite message persistence\n- Mobile responsive with collapsible sidebar\n\n### Skills & Memory\n\n- Browse and search installed skills\n- View skill details and attached files\n- User notes and profile management\n\n### Logs\n\n- View agent \u002F gateway \u002F error logs\n- Filter by log level, log file, and keyword\n- Structured log parsing with HTTP access log highlighting\n\n### Authentication\n\n- Token-based auth (auto-generated on first run or set via `AUTH_TOKEN` env var)\n- Optional username\u002Fpassword login — set via settings page after initial token auth\n- Auth can be disabled with `AUTH_DISABLED=1`\n\n### Settings\n\n- Display (streaming, compact mode, reasoning, cost display)\n- Agent (max turns, timeout, tool enforcement)\n- Memory (enable\u002Fdisable, char limits)\n- Session reset (idle timeout, scheduled reset)\n- Privacy (PII redaction)\n- Model settings (default model & provider)\n- API server configuration\n\n### Web Terminal\n\n- Integrated terminal powered by node-pty and @xterm\u002Fxterm\n- Multi-session support — create, switch between, and close terminal sessions\n- Real-time keyboard input and PTY output streaming via WebSocket\n- Window resize support\n\n---\n\n## Quick Start\n\n### npm (Recommended)\n\n```bash\nnpm install -g hermes-web-ui\nhermes-web-ui start\n```\n\nOpen **http:\u002F\u002Flocalhost:8648**\n\n### One-line Setup (Auto-detect OS)\n\nAutomatically installs Node.js (if missing) and hermes-web-ui on Debian\u002FUbuntu\u002FmacOS:\n\n```bash\nbash \u003C(curl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002FEKKOLearnAI\u002Fhermes-web-ui\u002Fmain\u002Fscripts\u002Fsetup.sh)\n```\n\n### WSL\n\n```bash\nbash \u003C(curl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002FEKKOLearnAI\u002Fhermes-web-ui\u002Fmain\u002Fscripts\u002Fsetup.sh)\nhermes-web-ui start\n```\n\n> WSL auto-detects and uses `hermes gateway run` for background startup (no launchd\u002Fsystemd).\n\n### Docker Compose\n\nRun Web UI together with Hermes Agent:\n\n```bash\n# Use pre-built image (Recommended)\nWEBUI_IMAGE=ekkoye8888\u002Fhermes-web-ui:latest docker compose up -d hermes-agent hermes-webui\n\n# Or build from source\ndocker compose up -d --build hermes-agent hermes-webui\n\ndocker compose logs -f hermes-webui\n```\n\nOpen **http:\u002F\u002Flocalhost:6060**\n\n- Persistent Hermes data is stored in `.\u002Fhermes_data`\n- Web UI auth token is stored in `.\u002Fhermes_data\u002Fhermes-web-ui\u002F.token`\n- On first run with auth enabled, the token is printed to container logs\n- All runtime settings are environment-variable driven in `docker-compose.yml`\n\nFor detailed notes and troubleshooting, see [`docs\u002Fdocker.md`](.\u002Fdocs\u002Fdocker.md).\n\n### CLI Commands\n\n| Command                           | Description                        |\n| --------------------------------- | ---------------------------------- |\n| `hermes-web-ui start`             | Start in background (daemon mode)  |\n| `hermes-web-ui start --port 9000` | Start on custom port               |\n| `hermes-web-ui stop`              | Stop background process            |\n| `hermes-web-ui restart`           | Restart background process         |\n| `hermes-web-ui status`            | Check if running                   |\n| `hermes-web-ui update`            | Update to latest version & restart |\n| `hermes-web-ui -v`                | Show version number                |\n| `hermes-web-ui -h`                | Show help message                  |\n\n### Auto Configuration\n\nOn startup the BFF server automatically:\n\n- Validates `~\u002F.hermes\u002Fconfig.yaml` and fills missing `api_server` fields\n- Backs up original config to `config.yaml.bak` if modified\n- Detects and starts the gateway if needed\n- Resolves port conflicts (kills stale processes)\n- Opens browser on successful startup\n\n---\n\n## Development\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FEKKOLearnAI\u002Fhermes-web-ui.git\ncd hermes-web-ui\nnpm install\nnpm run dev\n```\n\n- Frontend: http:\u002F\u002Flocalhost:5173\n- BFF Server: http:\u002F\u002Flocalhost:8648 (proxies to Hermes on 8642)\n\n```bash\nnpm run build   # outputs to dist\u002F\n```\n\n## Architecture\n\n```\nBrowser → BFF (Koa, :8648) → Hermes Gateway (:8642)\n                ↓\n           Hermes CLI (sessions, logs, version)\n                ↓\n           ~\u002F.hermes\u002Fconfig.yaml  (channel behavior)\n           ~\u002F.hermes\u002Fauth.json    (credential pool)\n           Tencent iLink API      (WeChat QR login)\n```\n\nThe frontend is designed with **multi-agent extensibility** — all Hermes-specific code is namespaced under `hermes\u002F` directories (API, components, views, stores), making it straightforward to add new agent integrations alongside.\n\nThe BFF layer handles API proxy (with path rewriting), SSE streaming, file upload and download (multi-backend: local\u002FDocker\u002FSSH\u002FSingularity), session CRUD via CLI, config\u002Fcredential management, WeChat QR login, model discovery, skills\u002Fmemory management, log reading, and static file serving.\n\n## Tech Stack\n\n**Frontend:** Vue 3 + TypeScript + Vite + Naive UI + Pinia + Vue Router + vue-i18n + SCSS + markdown-it + highlight.js\n\n**Backend:** Koa 2 (BFF server) + node-pty (web terminal)\n\n## Star History\n\n[![Star History Chart](https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=EKKOLearnAI\u002Fhermes-web-ui&type=Date)](https:\u002F\u002Fstar-history.com\u002F#EKKOLearnAI\u002Fhermes-web-ui&Date)\n\n\u003C!-- If the chart above doesn't load, visit https:\u002F\u002Fstar-history.com\u002F#EKKOLearnAI\u002Fhermes-web-ui -->\n\n## Sponsor\n\n如果你觉得这个项目对你有帮助，欢迎支持我：\n\n\u003Ca href=\"https:\u002F\u002Fifdian.net\u002Fa\u002Fekko8888\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSponsor-%E7%88%B1%E5%8F%91%E7%94%B5-orange?style=flat-square\" alt=\"Sponsor\"\u002F>\u003C\u002Fa>\n\n## License\n\n[MIT](.\u002FLICENSE)\n","Hermes Web UI 是一款为 Hermes Agent 设计的全功能网页仪表盘，支持多平台AI聊天、会话管理、定时任务、使用分析及渠道配置（如Telegram、Discord、Slack和WhatsApp）。该项目采用TypeScript开发，并基于Vue3构建了响应式的用户界面。其核心功能包括实时流式聊天、多会话管理和跨平台消息处理等。此外，它还提供了详细的会话搜索、文件上传下载以及全局模型选择器等功能。Hermes Web UI适用于需要集中管理和监控AI聊天代理的各种场景，特别是那些希望自托管解决方案以确保数据安全性和隐私性的企业和个人开发者。",2,"2026-06-11 02:38:17","CREATED_QUERY"]