|
|
20 часов назад | |
|---|---|---|
| bin | 21 часов назад | |
| docs | 21 часов назад | |
| packages | 20 часов назад | |
| scripts | 2 дней назад | |
| tests | 21 часов назад | |
| .dockerignore | 2 дней назад | |
| .gitignore | 2 дней назад | |
| AGENTS.md | 2 дней назад | |
| ARCHITECTURE.md | 21 часов назад | |
| DEVELOPMENT.md | 21 часов назад | |
| Dockerfile | 2 дней назад | |
| LICENSE | 2 дней назад | |
| README.md | 20 часов назад | |
| README_zh.md | 20 часов назад | |
| design-qa.md | 1 день назад | |
| docker-compose.yml | 2 дней назад | |
| nodemon.json | 21 часов назад | |
| package-lock.json | 21 часов назад | |
| package.json | 21 часов назад | |
| playwright.config.ts | 2 дней назад | |
| tsconfig.app.json | 2 дней назад | |
| tsconfig.json | 2 дней назад | |
| tsconfig.node.json | 2 дней назад | |
| tsconfig.website.json | 2 дней назад | |
| vite.config.ts | 21 часов назад | |
| vite.config.website.ts | 2 дней назад | |
| vitest.config.ts | 2 дней назад |
YaoYao Web UI 中文
A self-developed local web console for Hermes Agent.
Chat with agents, manage models and profiles, connect platform channels,
automate jobs, inspect files, run coding agents, and keep everything local.
This project has no npm registry release, remote version comparison, or self-update capability.
npm run dev
# Or run the built local service:
node bin/yaoyao-webui.mjs start
The service uses ~/.yaoyao-webui by default. Set YAOYAO_WEBUI_HOME to choose another local state directory. HERMES_WEB_UI_HOME remains a legacy compatibility alias only.
| Area | What YaoYao Web UI does |
|---|---|
| Agent chat | Runs Hermes Agent conversations with streaming responses, tool traces, file upload/download, and persistent local sessions. |
| Local control plane | Manages profiles, providers, models, credentials, memory, skills, plugins, logs, and runtime settings from one dashboard. |
| Automation | Configures platform channels, cron jobs, Kanban tasks, group-chat rooms, and MCP servers around the same Hermes profiles. |
| Workspace tools | Provides a file browser, web terminal, voice input/output, coding-agent runners, device discovery, and performance views. |
| Local operation | Runs from this repository or a local build without npm registry updates or remote version comparison. |
/chat-run; chat runs execute through the Hermes agent bridgeUnified configuration for 8 platforms in one page:
| Platform | Features |
|---|---|
| Telegram | Bot token, mention control, reactions, free-response chats |
| Discord | Bot token, mention, auto-thread, reactions, channel allow/ignore lists |
| Slack | Bot token, mention control, bot message handling |
| Enable/disable, mention control, mention patterns | |
| Matrix | Access token, homeserver, auto-thread, DM mention threads |
| Feishu (Lark) | App ID / Secret, mention control |
| QR code login (scan in browser, auto-save credentials) | |
| WeCom | Bot ID / Secret |
~/.hermes/.env~/.hermes/config.yaml~/.hermes/auth.json)/v1/models)/v4).tar.gz)hermes-studio MCP server and profile injectionAUTH_TOKEN env var)admin / 123456; users are prompted after login to change the default username and passwordCLI maintenance commands:
# Delete persisted login IP lock records
yaoyao-webui clear-login-locks
# Delete login locks and restart the running Web UI process
yaoyao-webui clear-login-locks --restart
# Create or reset the default super administrator login to admin / 123456
yaoyao-webui reset-default-login
clear-login-locks removes ${YAOYAO_WEBUI_HOME:-~/.yaoyao-webui}/.login-lock.json. If the server is running, restart it to clear in-memory lock state. reset-default-login updates the Web UI account database; if an admin user already exists, its password is reset to 123456 and the account is enabled as a super administrator.
/audio/speech, custom OpenAI-compatible TTS endpoints, and MiMo..mp3/.wav, max 10 MB) with selectable auth header mode (Authorization, api-key, or both)./api/hermes/tts/synthesize endpoint, so stop/pause state is shared and in-flight fetches are aborted when possible.docs/voice-dialogue.md.http/https endpoints and cannot target localhost/private networks.latest assets if the Cloudflare update feed is unavailableDownload the latest Hermes Studio desktop installer from GitHub Releases.
Desktop builds are published for macOS, Windows, and Linux, with separate architecture assets where applicable. The desktop app bundles the Web UI runtime and stores Hermes Agent data in the native Hermes location:
%LOCALAPPDATA%\hermes (falls back to %APPDATA%\hermes)~/.hermesThe desktop wrapper stores its own Web UI state separately in
~/.yaoyao-webui unless YAOYAO_WEBUI_HOME is set.
After the packaged desktop app starts, it installs managed command shims so the desktop app, bundled Hermes Agent CLI, and bundled Web UI CLI do not conflict:
| Command | Description |
|---|---|
hermes-studio |
Open the Hermes Studio desktop app |
hermes-studio cli ... |
Run the bundled Hermes Agent CLI |
hermes-studio web ... |
Run the bundled yaoyao-webui command |
hermes-studio -h |
Show wrapper help |
hermes-studio-mcp |
Run the managed Web UI MCP bridge |
Use hermes-studio cli -h for Hermes Agent CLI help and
hermes-studio web -h for Web UI CLI help.
The local YaoYao Web UI runtime does not check remote versions or self-update.
node bin/yaoyao-webui.mjs start
Single-container deployment with integrated Hermes Agent:
# Use pre-built image (Recommended)
WEBUI_IMAGE=ekkoye8888/hermes-web-ui docker compose up -d
# Or build from source
docker compose up -d --build
docker compose logs -f hermes-webui
./hermes_data./hermes_data/hermes-web-ui/.tokendocker-compose.ymlFor detailed notes and troubleshooting, see docs/docker.md.
When Web UI starts backend chat features, it prefers a source checkout that
contains run_agent.py such as ~/.hermes/hermes-agent. If no source checkout
is found, it falls back to the Python environment used by the installed
hermes command, then the system Python. This supports both source installs
and package installs such as pip install hermes-agent.
These variables configure Hermes Web UI, its local Hermes runtime integration, and development/preview helpers. Provider API keys and Hermes Agent settings are normally managed through Hermes profiles; environment variables here are process-level overrides.
| Variable | Default | Description |
|---|---|---|
PORT |
8648 |
Web UI listen port. |
BIND_HOST |
0.0.0.0 |
Web UI bind host. Set :: explicitly for IPv6. |
YAOYAO_WEBUI_HOME |
~/.yaoyao-webui |
Web UI data home for auth token, credentials, logs, DB, and default uploads. |
YAOYAO_WEBUI_STATE_DIR |
unset | Compatibility alias for YAOYAO_WEBUI_HOME. |
HERMES_WEB_UI_DISABLE_MCP_AUTOINJECT |
unset | Disable startup injection of the managed hermes-studio MCP server into Hermes profile configs. |
HERMES_WEB_UI_ALLOW_TRANSIENT_MCP_AUTOINJECT |
unset | Allow managed MCP injection when HERMES_WEB_UI_HOME is under a temporary directory, such as Version Preview runtimes. |
UPLOAD_DIR |
$YAOYAO_WEBUI_HOME/upload |
Upload root override. Files are stored below profile-scoped subdirectories. |
CORS_ORIGINS |
same host only | Comma- or space-separated cross-origin allowlist for HTTP, Socket.IO, and WebSocket requests. Set * only when you intentionally need legacy wildcard CORS. |
AUTH_TOKEN |
auto-generated | Explicit bearer token. If unset, Web UI creates one under YAOYAO_WEBUI_HOME. |
AUTH_JWT_SECRET |
AUTH_TOKEN |
JWT signing secret override for username/password sessions. |
YAOYAO_WEBUI_AUTH_JWT_EXPIRES_IN |
30d |
Username/password session JWT lifetime. Accepts seconds or s/m/h/d suffixes, for example 12h or 7d. |
PROFILE |
default |
Startup/default Hermes profile. Runtime requests use the profile selected by the frontend and authorized for the current account. |
LOG_LEVEL |
info |
Server log level. |
BRIDGE_LOG_LEVEL |
$LOG_LEVEL or info |
Bridge log level. |
MAX_DOWNLOAD_SIZE |
200MB |
Maximum file download size. |
MAX_EDIT_SIZE |
10MB |
Maximum editable file size. |
WORKSPACE_BASE |
current user's home directory | Base directory for workspace browsing. |
HERMES_HOME |
platform default | Hermes data home. Windows uses %LOCALAPPDATA%\hermes; macOS/Linux uses ~/.hermes. |
HERMES_BIN |
hermes |
Custom Hermes CLI binary path. |
HERMES_AGENT_ROOT |
auto-discovered | Hermes Agent source checkout containing run_agent.py. |
HERMES_AGENT_BRIDGE_PYTHON |
auto-discovered | Python interpreter used to launch the agent bridge. |
HERMES_AGENT_BRIDGE_UV |
auto-discovered | uv executable used to launch the agent bridge when available. |
UV |
auto-discovered | Fallback uv executable path. |
PYTHON |
auto-discovered | Fallback Python executable for the agent bridge. |
HERMES_AGENT_BRIDGE_ENDPOINT |
platform default | Agent bridge broker endpoint. Windows defaults to tcp://127.0.0.1:18765; macOS/Linux defaults to ipc:///tmp/hermes-agent-bridge.sock. |
HERMES_AGENT_BRIDGE_TIMEOUT_MS |
120000 |
Timeout for Node requests to the bridge broker. |
HERMES_AGENT_BRIDGE_CONNECT_RETRY_MS |
5000 |
Short retry window for connecting to the bridge socket. |
HERMES_AGENT_BRIDGE_STARTUP_TIMEOUT_MS |
120000 |
Timeout while waiting for the Python bridge to become ready. |
HERMES_AGENT_BRIDGE_STOP_ON_SHUTDOWN |
enabled | Stop the bridge broker during Web UI shutdown and restart. Set 0, false, no, or off to keep the bridge across restarts. |
HERMES_AGENT_BRIDGE_AUTO_RESTART |
enabled | Auto-restart the bridge broker after unexpected exit. Set 0, false, no, or off to disable. |
HERMES_AGENT_BRIDGE_RESTART_DELAY_MS |
1000 |
Base delay for bridge auto-restart backoff. |
HERMES_AGENT_BRIDGE_PLATFORM |
cli |
Platform identity passed to Hermes Agent. |
HERMES_AGENT_BRIDGE_WORKER_TRANSPORT |
platform default | Profile worker transport. Set tcp for loopback TCP or ipc/unix for Unix domain sockets; defaults to Windows TCP and macOS/Linux IPC. |
HERMES_AGENT_BRIDGE_WORKER_PORT_BASE |
18780 |
Base port for TCP worker endpoints. |
HERMES_BRIDGE_PROVIDER |
profile/default | Provider override for bridge runs. |
HERMES_BRIDGE_TOOLSETS |
profile/default | Toolset override for bridge runs. |
HERMES_BRIDGE_MAX_TURNS |
profile/default | Maximum turn override for bridge runs. |
HERMES_BRIDGE_SUPPRESS_PLATFORM_HINT |
cli |
Controls bridge platform hint suppression passed to Hermes Agent. |
HERMES_OPENROUTER_APP_REFERER |
https://hermes-studio.ai |
OpenRouter attribution referer sent by bridge runs. |
HERMES_OPENROUTER_APP_TITLE |
Hermes Web UI |
OpenRouter attribution title sent by bridge runs. |
HERMES_OPENROUTER_APP_CATEGORIES |
cli-agent,personal-agent |
OpenRouter attribution categories sent by bridge runs. |
HERMES_WEB_UI_MANAGED_GATEWAY |
enabled | Controls Web UI-managed Hermes gateway process handling. Set 0, false, no, or off to use hermes gateway start instead. |
HERMES_WEB_UI_DISABLE_GATEWAY_AUTOSTART |
unset | Skip startup gateway checks/autostart. Set 1, true, yes, or on for dashboard-only deployments where another service owns Hermes gateway lifecycle. |
HERMES_WEB_UI_DISABLE_SKILL_INJECTION |
unset | Skip startup bundled skill injection. Set 1, true, yes, or on when bundled skills are managed outside Hermes Web UI. When injection is enabled, Web UI updates only skills it previously installed or identical existing bundled copies; local edits and user-owned same-name skills are skipped. |
HERMES_WEB_UI_STOP_GATEWAYS_ON_SHUTDOWN |
enabled in production | Controls whether Web UI shutdown also stops managed gateway processes. Set 0 or false to detach them. |
HERMES_GATEWAY_URL / GATEWAY_URL |
unset | Explicit Hermes gateway upstream URL for proxy routes. |
GATEWAY_HOST |
127.0.0.1 |
Default Hermes gateway upstream host for proxy routes. |
GATEWAY_PORT |
8642 |
Default Hermes gateway upstream port for proxy routes. |
HERMES_WEB_UI_PREVIEW_REPO |
package repository | GitHub repository used by Version Preview. |
HERMES_WEB_UI_PREVIEW_AGENT_BRIDGE_TRANSPORT |
platform default | Version Preview broker transport. Set tcp to use loopback TCP for Preview on macOS/Linux; when unset, Preview follows HERMES_AGENT_BRIDGE_WORKER_TRANSPORT=tcp. |
HERMES_WEB_UI_PREVIEW_AGENT_BRIDGE_ENDPOINT |
isolated preview endpoint | Directly overrides the Version Preview broker endpoint. |
HERMES_WEB_UI_BACKEND_PORT |
8648 |
Backend port used by the Vite dev proxy. |
HERMES_WEB_UI_FRONTEND_PORT |
8649 |
Frontend Vite dev server port. |
When yaoyao-webui is already running on port 8648, use the source
frontend without starting a second backend:
npm run dev:client:system
Open http://localhost:8649 and sign in with the same Web UI account. The
Vite proxy forwards API and Socket.IO requests to port 8648, so conversations
and group chats come from the running Web UI instance.
| Command | Description |
|---|---|
yaoyao-webui start |
Start in background (daemon mode) |
yaoyao-webui start --port 9000 |
Start on custom port |
yaoyao-webui stop |
Stop background process |
yaoyao-webui restart |
Restart background process; stops the bridge by default |
yaoyao-webui status |
Check if running |
yaoyao-webui -v |
Show version number |
yaoyao-webui -h |
Show help message |
restart stops the Agent Bridge broker by default so restarted servers do not reuse stale Python bridge processes. Set HERMES_AGENT_BRIDGE_STOP_ON_SHUTDOWN=0 before restarting only when you explicitly want to keep the bridge broker and running bridge sessions alive. There is no update / upgrade command, npm registry request, or remote version comparison.
On startup the BFF server automatically:
/chat-rungit clone https://github.com/EKKOLearnAI/hermes-studio.git
cd yaoyao-webui
npm install
npm run dev
BFF Server: http://localhost:8647
npm run build # outputs to dist/
See DEVELOPMENT.md for project development guidelines.
Browser → BFF (Koa, :8648) → Socket.IO /chat-run
↓
Hermes agent bridge → Hermes Agent runtime
↓
Hermes CLI / profiles
profile config.yaml (channel/provider behavior)
profile auth.json (credential pool)
Tencent iLink API (WeChat QR login)
The frontend is designed with multi-agent extensibility — all Hermes-specific code is namespaced under hermes/ directories (API, components, views, stores), making it straightforward to add new agent integrations alongside.
The BFF layer handles Socket.IO chat streaming, the Hermes agent bridge, profile-aware file upload and path-based download (multi-backend: local/Docker/SSH/Singularity), session CRUD, account- and profile-scoped management, config/credential management, WeChat QR login, model discovery, skills/memory/plugin management, TTS/STT, coding-agent proxies, MCP/runtime management, log reading, and static file serving.
Frontend: Vue 3 + TypeScript + Vite + Naive UI + Pinia + Vue Router + vue-i18n + SCSS + markdown-it + highlight.js
Backend: Koa 2 (BFF server) + node-pty (web terminal)
The license covers Hermes Studio, the former Hermes Web UI name, the
hermes-web-ui npm package and CLI, desktop applications, firmware, release
artifacts, documentation, and associated files in this repository.