diff --git a/apps/hermes-web-ui/README.md b/apps/hermes-web-ui/README.md new file mode 100644 index 0000000..20720be --- /dev/null +++ b/apps/hermes-web-ui/README.md @@ -0,0 +1,54 @@ +# Hermes Web UI + +Hermes Agent 的全功能 Web 管理面板。管理 AI 聊天会话、监控使用量与成本、配置平台渠道、调度定时任务、浏览技能等,全部通过简洁响应式 Web 界面完成。 + +## 功能特点 + +- **AI 聊天** — 实时流式 SSE 传输,多会话管理,Markdown 渲染与代码高亮 +- **平台渠道** — 统一配置 8 大平台(Telegram、Discord、Slack、WhatsApp、Matrix、飞书、微信、企业微信) +- **用量分析** — Token 使用量统计、成本追踪、模型分布图表 +- **定时任务** — 创建、编辑、暂停、恢复、删除 Cron 任务 +- **模型管理** — 自动发现/添加提供商,支持 OpenAI 兼容接口 +- **多配置文件** — 创建、克隆、导入/导出 Hermes 配置文件 +- **文件浏览器** — 浏览、上传、下载远程后端文件 +- **群聊** — 多 Agent 聊天室,支持 @提及和上下文压缩 +- **技能与记忆** — 浏览已安装技能,用户笔记管理 +- **日志查看** — Agent/网关/错误日志过滤与查看 +- **身份认证** — 基于 Token 的认证(首次运行自动生成) +- **Web 终端** — 集成终端,支持多会话 + +## 使用说明 + +### 架构说明 + +本应用包含两个服务: +- **hermes-agent**:使用 1Panel 官方维护的 Hermes Agent 镜像([1panel/hermes-agent](https://hub.docker.com/r/1panel/hermes-agent)) +- **hermes-webui**:社区维护的全功能 Web 管理面板 + +### 默认端口 + +- Web 界面: `6060`(可在安装时修改) + +### 默认认证 + +- 首次运行时自动生成 Auth Token,可通过容器日志查看: + ```bash + docker logs <容器名> | grep token + ``` +- 也可通过环境变量 `AUTH_TOKEN` 设置自定义 Token +- 如需禁用认证,可将 `AUTH_DISABLED` 设置为 `true` + +### 数据目录 + +- `./data` — Hermes Agent 运行时数据(会话、配置、配置文件) +- `./webui-data` — Web UI 数据(Auth Token 等) + +### 前置条件 + +使用前请确保已在 Web 界面的模型管理页面配置好 AI 模型的 API 密钥。 + +## 相关链接 + +- Hermes Web UI: https://github.com/EKKOLearnAI/hermes-web-ui +- Hermes Agent: https://github.com/NousResearch/hermes-agent +- 1Panel 官方 Hermes Agent: https://github.com/1Panel-dev/appstore/tree/dev/apps/hermes-agent \ No newline at end of file diff --git a/apps/hermes-web-ui/README_en.md b/apps/hermes-web-ui/README_en.md new file mode 100644 index 0000000..e8fcb4c --- /dev/null +++ b/apps/hermes-web-ui/README_en.md @@ -0,0 +1,54 @@ +# Hermes Web UI + +A full-featured web dashboard for Hermes Agent. Manage AI chat sessions, monitor usage & costs, configure platform channels, schedule cron jobs, browse skills — all from a clean, responsive web interface. + +## Features + +- **AI Chat** — Real-time streaming via SSE, multi-session management, Markdown rendering with syntax highlighting +- **Platform Channels** — Unified configuration for 8 platforms (Telegram, Discord, Slack, WhatsApp, Matrix, Feishu, WeChat, WeCom) +- **Usage Analytics** — Token usage breakdown, cost tracking, model distribution charts +- **Scheduled Jobs** — Create, edit, pause, resume, delete cron jobs +- **Model Management** — Auto-discover providers, add custom OpenAI-compatible endpoints +- **Multi-Profile** — Create, clone, import/export Hermes profiles +- **File Browser** — Browse, upload, download files on remote backends +- **Group Chat** — Multi-agent chat rooms with @mention support and context compression +- **Skills & Memory** — Browse installed skills, user notes management +- **Log Viewer** — Filter and view agent/gateway/error logs +- **Authentication** — Token-based auth (auto-generated on first run) +- **Web Terminal** — Integrated terminal with multi-session support + +## Usage + +### Architecture + +This app includes two services: +- **hermes-agent**: Uses the official 1Panel-maintained Hermes Agent image ([1panel/hermes-agent](https://hub.docker.com/r/1panel/hermes-agent)) +- **hermes-webui**: Community-maintained full-featured web dashboard + +### Default Port + +- Web UI: `6060` (configurable during installation) + +### Default Credentials + +- Auth Token is auto-generated on first run. View it via container logs: + ```bash + docker logs | grep token + ``` +- You can also set a custom token via `AUTH_TOKEN` environment variable +- Set `AUTH_DISABLED=true` to disable authentication + +### Data Directories + +- `./data` — Hermes Agent runtime data (sessions, configs, profiles) +- `./webui-data` — Web UI data (auth token, etc.) + +### Prerequisites + +Make sure to configure your AI model API keys via the Web UI's Model Management page before use. + +## Links + +- Hermes Web UI: https://github.com/EKKOLearnAI/hermes-web-ui +- Hermes Agent: https://github.com/NousResearch/hermes-agent +- Official 1Panel Hermes Agent: https://github.com/1Panel-dev/appstore/tree/dev/apps/hermes-agent \ No newline at end of file diff --git a/apps/hermes-web-ui/data.yml b/apps/hermes-web-ui/data.yml new file mode 100644 index 0000000..a6efde6 --- /dev/null +++ b/apps/hermes-web-ui/data.yml @@ -0,0 +1,33 @@ +name: Hermes Web UI +tags: + - AI +title: Hermes Agent 的全功能 Web 管理面板 +description: Hermes Agent 的全功能 Web 管理面板 +additionalProperties: + key: hermes-web-ui + name: Hermes Web UI + type: website + tags: + - AI + shortDescZh: Hermes Agent 的全功能 Web 管理面板 + shortDescEn: A full-featured web dashboard for Hermes Agent + description: + en: A full-featured web dashboard for Hermes Agent. Manage AI chat sessions, monitor usage & costs, configure platform channels, schedule cron jobs, browse skills — all from a clean, responsive web interface. + ja: Hermes Agent のフル機能 Web ダッシュボード。AIチャットセッション管理、使用量・コスト監視、プラットフォームチャンネル設定、cronジョブスケジュール、スキル閲覧など。 + ms: Papan pemuka web berciri penuh untuk Hermes Agent + pt-br: Um painel web completo para Hermes Agent + ru: Полнофункциональная веб-панель для Hermes Agent + ko: Hermes Agent를 위한 완전한 기능의 웹 대시보드 + zh-Hant: Hermes Agent 的全功能 Web 管理面板 + zh: Hermes Agent 的全功能 Web 管理面板。管理 AI 聊天会话、监控使用量与成本、配置平台渠道、调度定时任务、浏览技能等,全部通过简洁响应式 Web 界面完成。 + tr: Hermes Agent için tam özellikli web kontrol paneli + es-es: Un panel web completo para Hermes Agent + crossVersionUpdate: true + limit: 0 + recommend: 13 + website: https://github.com/EKKOLearnAI/hermes-web-ui + github: https://github.com/EKKOLearnAI/hermes-web-ui + document: https://github.com/EKKOLearnAI/hermes-web-ui + architectures: + - amd64 + - arm64 \ No newline at end of file diff --git a/apps/hermes-web-ui/latest/data.yml b/apps/hermes-web-ui/latest/data.yml new file mode 100644 index 0000000..4d0b3cc --- /dev/null +++ b/apps/hermes-web-ui/latest/data.yml @@ -0,0 +1,21 @@ +additionalProperties: + formFields: + - default: 6060 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Web UI Port + labelZh: Web UI 端口 + required: true + rule: paramPort + type: number + label: + en: Web UI Port + es-es: Puerto web + ja: Web UIポート + ms: Port Web UI + pt-br: Porta da Web UI + ru: Порт веб-интерфейса + ko: 웹 UI 포트 + zh-Hant: Web UI 埠 + zh: Web UI 端口 + tr: Web UI Bağlantı Noktası \ No newline at end of file diff --git a/apps/hermes-web-ui/latest/data/.gitkeep b/apps/hermes-web-ui/latest/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/apps/hermes-web-ui/latest/docker-compose.yml b/apps/hermes-web-ui/latest/docker-compose.yml new file mode 100644 index 0000000..4d2cf50 --- /dev/null +++ b/apps/hermes-web-ui/latest/docker-compose.yml @@ -0,0 +1,45 @@ +services: + hermes-agent: + container_name: ${CONTAINER_NAME}-agent + image: 1panel/hermes-agent:latest + restart: always + networks: + - 1panel-network + environment: + HOME: /opt/data/home + HERMES_HOME: /opt/data + HERMES_DASHBOARD: "1" + HERMES_DASHBOARD_HOST: 0.0.0.0 + HERMES_DASHBOARD_PORT: 9119 + TERM: xterm-256color + volumes: + - ./data:/opt/data + - /etc/localtime:/etc/localtime + init: true + labels: + createdBy: "Apps" + hermes-webui: + container_name: ${CONTAINER_NAME} + image: ekkoye8888/hermes-web-ui:latest + entrypoint: ["node", "dist/server/index.js"] + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:6060" + volumes: + - ./data:/opt/data + - ./webui-data:/home/agent/.hermes-web-ui + environment: + - PORT=6060 + - HERMES_HOME=/opt/data + - HERMES_BIN=/opt/hermes/.venv/bin/hermes + - AUTH_DISABLED=false + - PATH=/opt/hermes/.venv/bin:/opt/data/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + depends_on: + - hermes-agent + labels: + createdBy: "Apps" +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/hermes-web-ui/logo.png b/apps/hermes-web-ui/logo.png new file mode 100644 index 0000000..b821dc3 Binary files /dev/null and b/apps/hermes-web-ui/logo.png differ diff --git a/apps/hermes-web-ui/v0.5.15/data.yml b/apps/hermes-web-ui/v0.5.15/data.yml new file mode 100644 index 0000000..4d0b3cc --- /dev/null +++ b/apps/hermes-web-ui/v0.5.15/data.yml @@ -0,0 +1,21 @@ +additionalProperties: + formFields: + - default: 6060 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Web UI Port + labelZh: Web UI 端口 + required: true + rule: paramPort + type: number + label: + en: Web UI Port + es-es: Puerto web + ja: Web UIポート + ms: Port Web UI + pt-br: Porta da Web UI + ru: Порт веб-интерфейса + ko: 웹 UI 포트 + zh-Hant: Web UI 埠 + zh: Web UI 端口 + tr: Web UI Bağlantı Noktası \ No newline at end of file diff --git a/apps/hermes-web-ui/v0.5.15/data/.gitkeep b/apps/hermes-web-ui/v0.5.15/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/apps/hermes-web-ui/v0.5.15/docker-compose.yml b/apps/hermes-web-ui/v0.5.15/docker-compose.yml new file mode 100644 index 0000000..619ef8e --- /dev/null +++ b/apps/hermes-web-ui/v0.5.15/docker-compose.yml @@ -0,0 +1,45 @@ +services: + hermes-agent: + container_name: ${CONTAINER_NAME}-agent + image: 1panel/hermes-agent:2026.5.7 + restart: always + networks: + - 1panel-network + environment: + HOME: /opt/data/home + HERMES_HOME: /opt/data + HERMES_DASHBOARD: "1" + HERMES_DASHBOARD_HOST: 0.0.0.0 + HERMES_DASHBOARD_PORT: 9119 + TERM: xterm-256color + volumes: + - ./data:/opt/data + - /etc/localtime:/etc/localtime + init: true + labels: + createdBy: "Apps" + hermes-webui: + container_name: ${CONTAINER_NAME} + image: ekkoye8888/hermes-web-ui:v0.5.15 + entrypoint: ["node", "dist/server/index.js"] + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:6060" + volumes: + - ./data:/opt/data + - ./webui-data:/home/agent/.hermes-web-ui + environment: + - PORT=6060 + - HERMES_HOME=/opt/data + - HERMES_BIN=/opt/hermes/.venv/bin/hermes + - AUTH_DISABLED=false + - PATH=/opt/hermes/.venv/bin:/opt/data/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + depends_on: + - hermes-agent + labels: + createdBy: "Apps" +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/openclaw-zh/2026.5.7-nightly.202605080122/data.yml b/apps/openclaw-zh/2026.5.7-nightly.202605080122/data.yml deleted file mode 100644 index 1874895..0000000 --- a/apps/openclaw-zh/2026.5.7-nightly.202605080122/data.yml +++ /dev/null @@ -1,31 +0,0 @@ -additionalProperties: - formFields: - - default: 18789 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Web UI Port - labelZh: Web UI 端口 - required: true - rule: paramPort - type: number - label: - en: Web UI Port - zh: Web UI 端口 - zh-Hant: Web UI 埠 - - default: "" - edit: true - envKey: OPENCLAW_GATEWAY_TOKEN - labelEn: Gateway Token - labelZh: 网关令牌 - random: true - required: false - rule: paramCommon - type: password - label: - en: Gateway Token - zh: 网关令牌 - zh-Hant: 閘道權杖 - description: - en: Token used to access the OpenClaw Dashboard. Append ?token=your-token to the Dashboard URL when needed. - zh: 用于访问 OpenClaw Dashboard 的令牌。需要时可在访问地址后追加 ?token=你的令牌。 - zh-Hant: 用於訪問 OpenClaw Dashboard 的權杖。需要時可在訪問地址後追加 ?token=你的權杖。 diff --git a/apps/openclaw-zh/2026.5.7-nightly.202605080122/docker-compose.yml b/apps/openclaw-zh/2026.5.7-nightly.202605080122/docker-compose.yml deleted file mode 100644 index 1e96597..0000000 --- a/apps/openclaw-zh/2026.5.7-nightly.202605080122/docker-compose.yml +++ /dev/null @@ -1,36 +0,0 @@ -services: - openclaw-zh: - container_name: ${CONTAINER_NAME} - image: 1186258278/openclaw-zh:2026.5.7-nightly.202605080122 - restart: always - networks: - - 1panel-network - environment: - HOME: /root - TERM: xterm-256color - OPENCLAW_DISABLE_BONJOUR: "1" - OPENCLAW_GATEWAY_TOKEN: ${OPENCLAW_GATEWAY_TOKEN} - volumes: - - ./data/conf:/root/.openclaw - ports: - - ${PANEL_APP_PORT_HTTP}:18789 - command: openclaw gateway run --allow-unconfigured - init: true - healthcheck: - test: - [ - "CMD", - "node", - "-e", - "fetch('http://127.0.0.1:18789/healthz').then((r)=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))" - ] - interval: 3m - timeout: 10s - start_period: 15s - retries: 3 - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/openclaw-zh/README.md b/apps/openclaw-zh/README.md deleted file mode 100644 index 00defa7..0000000 --- a/apps/openclaw-zh/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# OpenClaw Chinese - -OpenClaw Chinese 是 OpenClaw 的汉化发行版。OpenClaw 是开源、自托管的个人 AI 助理,提供本地运行的 Web Dashboard 和 Gateway。 - -## 使用说明 - -安装后访问 `http://服务器 IP:端口` 打开 Dashboard。默认端口为 `18789`。 - -建议在安装参数中设置 `OPENCLAW_GATEWAY_TOKEN`,用于 Dashboard 访问认证。浏览器打开页面后,可以在 URL 后追加 `?token=你的令牌` 进行访问。 - -## 数据目录 - -应用数据会持久化到安装目录下的 `data/conf`,对应容器内 `/root/.openclaw`。 - -## 参考 - -- 项目仓库:https://github.com/1186258278/OpenClawChineseTranslation -- Docker 说明:https://github.com/1186258278/OpenClawChineseTranslation/blob/main/DOCKER_README.md -- OpenClaw 官网:https://openclaw.ai/ diff --git a/apps/openclaw-zh/README_en.md b/apps/openclaw-zh/README_en.md deleted file mode 100644 index 8ccffbf..0000000 --- a/apps/openclaw-zh/README_en.md +++ /dev/null @@ -1,19 +0,0 @@ -# OpenClaw Chinese - -OpenClaw Chinese is a localized Chinese distribution of OpenClaw. OpenClaw is an open-source, self-hosted personal AI assistant with a local Web Dashboard and Gateway. - -## Usage - -After installation, open `http://server-ip:port` in your browser. The default port is `18789`. - -It is recommended to set `OPENCLAW_GATEWAY_TOKEN` during installation for Dashboard authentication. You can append `?token=your-token` to the URL when opening the Dashboard. - -## Data Directory - -Application data is persisted in `data/conf` under the installation directory, mapped to `/root/.openclaw` inside the container. - -## References - -- Repository: https://github.com/1186258278/OpenClawChineseTranslation -- Docker guide: https://github.com/1186258278/OpenClawChineseTranslation/blob/main/DOCKER_README.md -- OpenClaw website: https://openclaw.ai/ diff --git a/apps/openclaw-zh/data.yml b/apps/openclaw-zh/data.yml deleted file mode 100644 index 9cbdbb8..0000000 --- a/apps/openclaw-zh/data.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: OpenClaw Chinese -tags: - - AI / 大模型 -title: OpenClaw 汉化发行版,开源、自托管的个人 AI 助理 -description: OpenClaw 汉化发行版,开源、自托管的个人 AI 助理 -additionalProperties: - key: openclaw-zh - name: OpenClaw Chinese - tags: - - AI - shortDescZh: OpenClaw 汉化发行版,开源、自托管的个人 AI 助理 - shortDescEn: Chinese localized OpenClaw distribution, a self-hosted personal AI assistant - description: - en: Chinese localized OpenClaw distribution, a self-hosted personal AI assistant - zh: OpenClaw 汉化发行版,开源、自托管的个人 AI 助理 - zh-Hant: OpenClaw 漢化發行版,開源、自托管的個人 AI 助理 - type: website - crossVersionUpdate: true - limit: 0 - recommend: 0 - batchInstallSupport: true - website: https://openclaw.qt.cool/ - github: https://github.com/1186258278/OpenClawChineseTranslation - document: https://github.com/1186258278/OpenClawChineseTranslation/blob/main/DOCKER_README.md - architectures: - - amd64 - - arm64 diff --git a/apps/openclaw-zh/latest/data.yml b/apps/openclaw-zh/latest/data.yml deleted file mode 100644 index 1874895..0000000 --- a/apps/openclaw-zh/latest/data.yml +++ /dev/null @@ -1,31 +0,0 @@ -additionalProperties: - formFields: - - default: 18789 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Web UI Port - labelZh: Web UI 端口 - required: true - rule: paramPort - type: number - label: - en: Web UI Port - zh: Web UI 端口 - zh-Hant: Web UI 埠 - - default: "" - edit: true - envKey: OPENCLAW_GATEWAY_TOKEN - labelEn: Gateway Token - labelZh: 网关令牌 - random: true - required: false - rule: paramCommon - type: password - label: - en: Gateway Token - zh: 网关令牌 - zh-Hant: 閘道權杖 - description: - en: Token used to access the OpenClaw Dashboard. Append ?token=your-token to the Dashboard URL when needed. - zh: 用于访问 OpenClaw Dashboard 的令牌。需要时可在访问地址后追加 ?token=你的令牌。 - zh-Hant: 用於訪問 OpenClaw Dashboard 的權杖。需要時可在訪問地址後追加 ?token=你的權杖。 diff --git a/apps/openclaw-zh/latest/docker-compose.yml b/apps/openclaw-zh/latest/docker-compose.yml deleted file mode 100644 index bcc13fb..0000000 --- a/apps/openclaw-zh/latest/docker-compose.yml +++ /dev/null @@ -1,36 +0,0 @@ -services: - openclaw-zh: - container_name: ${CONTAINER_NAME} - image: 1186258278/openclaw-zh:latest - restart: always - networks: - - 1panel-network - environment: - HOME: /root - TERM: xterm-256color - OPENCLAW_DISABLE_BONJOUR: "1" - OPENCLAW_GATEWAY_TOKEN: ${OPENCLAW_GATEWAY_TOKEN} - volumes: - - ./data/conf:/root/.openclaw - ports: - - ${PANEL_APP_PORT_HTTP}:18789 - command: openclaw gateway run --allow-unconfigured - init: true - healthcheck: - test: - [ - "CMD", - "node", - "-e", - "fetch('http://127.0.0.1:18789/healthz').then((r)=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))" - ] - interval: 3m - timeout: 10s - start_period: 15s - retries: 3 - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/openclaw-zh/logo.png b/apps/openclaw-zh/logo.png deleted file mode 100644 index 0812e61..0000000 Binary files a/apps/openclaw-zh/logo.png and /dev/null differ