三多运维

Hermes Agent 原创部署方案(Ubuntu 清华版)

2026/04/24
16
0

方案专为国内网络环境优化,全程使用清华源 + GitHub 代理加速,避免 pypi 超时和 git clone 失败问题。


📋 一、环境准备:更换系统源为清华源

bash

# 1. 备份原有源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# 2. 替换为清华源(Ubuntu 24.04 Noble)
sudo tee /etc/apt/sources.list << 'EOF'
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-security main restricted universe multiverse
EOF

# 3. 更新软件包列表并升级
sudo apt update && sudo apt upgrade -y

# 4. 安装必要基础工具
sudo apt install -y python3-pip python3-venv git curl wget build-essential

📁 二、创建工作目录并克隆源码(使用代理加速)

bash

# 1. 创建 .hermes 目录(Hermes 默认配置目录)
mkdir -p ~/.hermes
cd ~/.hermes

# 2. 使用 GitHub 代理加速克隆官方源码 和 install.sh 一键安装脚本
# 方案A:使用 g.blfrp.cn 代理(推荐)
git clone https://g.blfrp.cn/https://github.com/NousResearch/hermes-agent.git
wget https://g.blfrp.cn/https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh

# 方案B:如果上述失败,使用其他代理
# git clone https://githubproxy.cc/NousResearch/hermes-agent.git

# 方案C:直接克隆(速度较慢,备选)
# git clone https://github.com/NousResearch/hermes-agent.git



🐍 三、配置 PyPI 镜像源(加速 Python 依赖)

bash

# 1.设置 uv 永久镜像源
echo 'export UV_DEFAULT_INDEX="https://pypi.tuna.tsinghua.edu.cn/simple"' >> ~/.bashrc
source ~/.bashrc

🛠️ 四、安装 Hermes Agent

bash

# 1. 进入源码目录(确保在 ~/.hermes/ 下)
bash install.sh

# 5. 验证安装
hermes --version

💡 加速原理UV_DEFAULT_INDEX 会让 uv 从清华源下载依赖,原本需要 30 分钟以上的安装过程将缩短至 2-3 分钟。


root@Ai:~# cd /root/.hermes        
root@Ai:~/.hermes# bash install.sh 


┌─────────────────────────────────────────────────────────┐
│             ⚕ Hermes Agent Installer                    │
├─────────────────────────────────────────────────────────┤
│  An open source AI agent by Nous Research.              │
└─────────────────────────────────────────────────────────┘

✓ Detected: linux (ubuntu)
→ Checking for uv package manager...
✓ uv found (uv 0.11.7 (x86_64-unknown-linux-gnu))
→ Checking Python 3.11...
✓ Python found: Python 3.11.15
→ Checking Git...
✓ Git 2.43.0 found
→ Checking Node.js (for browser tools)...
✓ Node.js v22.22.2 found
→ Checking ripgrep (fast file search)...
✓ ripgrep 14.1.0 found
→ Checking ffmpeg (TTS voice messages)...
✓ ffmpeg 6.1.1-3ubuntu5 found
→ Installing to /root/.hermes/hermes-agent...
→ Existing installation found, updating...
remote: Enumerating objects: 4551, done.
remote: Counting objects: 100% (2562/2562), done.
remote: Compressing objects: 100% (303/303), done.
remote: Total 4551 (delta 2371), reused 2267 (delta 2258), pack-reused 1989 (from 3)
Receiving objects: 100% (4551/4551), 6.69 MiB | 3.15 MiB/s, done.
Resolving deltas: 100% (3225/3225), completed with 438 local objects.
From https://g.blfrp.cn/https://github.com/NousResearch/hermes-agent
   5dda4cab..b16f9d43  main                                     -> origin/main
 * [new branch]        bb/base-gui                              -> origin/bb/base-gui
 * [new branch]        bb/tui-long-session-perf                 -> origin/bb/tui-long-session-perf
 * [new branch]        bb/tui-perf-fix                          -> origin/bb/tui-perf-fix
 * [new branch]        design/compression-eval-harness          -> origin/design/compression-eval-harness
 * [new branch]        feat/kanban-standing                     -> origin/feat/kanban-standing
 + 1d71a986...0e257391 feat/provider-modules                    -> origin/feat/provider-modules  (forced update)
 * [new branch]        feature/tui-showroom                     -> origin/feature/tui-showroom
 * [new branch]        fix/flush-memories-context-overflow      -> origin/fix/flush-memories-context-overflow
 * [new branch]        fix/hindsight-blank-nuke                 -> origin/fix/hindsight-blank-nuke
 * [new branch]        fix/model-switch-custom-endpoint         -> origin/fix/model-switch-custom-endpoint
 * [new branch]        fix/nix-package-lock                     -> origin/fix/nix-package-lock
 * [new branch]        fix/setup-vision-blank                   -> origin/fix/setup-vision-blank
 * [new branch]        fix/stop-interrupt-retry-loop            -> origin/fix/stop-interrupt-retry-loop
 * [new branch]        fix/web-env-validation                   -> origin/fix/web-env-validation
 * [new branch]        hermes/curator-infra                     -> origin/hermes/curator-infra
 * [new branch]        hermes/hermes-6c37b3dd                   -> origin/hermes/hermes-6c37b3dd
 * [new branch]        hermes/hermes-9d07c44f                   -> origin/hermes/hermes-9d07c44f
 * [new branch]        hermes/hermes-d7874f79                   -> origin/hermes/hermes-d7874f79
 * [new branch]        investigate/fix-tui-container-ink-bundle -> origin/investigate/fix-tui-container-ink-bundle
 * [new branch]        nanoclaw-port/signal-groupv2             -> origin/nanoclaw-port/signal-groupv2
 * [new branch]        sid/discord-context-injection            -> origin/sid/discord-context-injection
 * [new branch]        sid/discord-tool-split                   -> origin/sid/discord-tool-split
 * [new branch]        sid/fix-platform-tool-loading            -> origin/sid/fix-platform-tool-loading
 * [new branch]        sid/fix-tools-config-save                -> origin/sid/fix-tools-config-save
 * [new branch]        sid/nix-overlay                          -> origin/sid/nix-overlay
Already on 'main'
Your branch is behind 'origin/main' by 378 commits, and can be fast-forwarded.
  (use "git pull" to update your local branch)
From https://g.blfrp.cn/https://github.com/NousResearch/hermes-agent
 * branch              main       -> FETCH_HEAD
Updating 5dda4cab..b16f9d43
Fast-forward
 AGENTS.md                                                                                        |   13 ++
 Dockerfile                                                                                       |   16 +-
 acp_adapter/server.py                                                                            |   12 +-
 acp_adapter/session.py                                                                           |   29 ++-
 agent/anthropic_adapter.py                                                                       |  130 ++++++++++++-
 agent/auxiliary_client.py                                                                        |  381 +++++++++++++++++++++++++++++++++++--
 agent/bedrock_adapter.py                                                                         |  132 ++++++++++++-
 agent/codex_responses_adapter.py                                                                 |  208 ++++++++++++++++++--
 agent/context_compressor.py                                                                      |   30 +++
 agent/context_engine.py                                                                          |   22 +++
 agent/copilot_acp_client.py                                                                      |   42 +++++
 agent/credential_pool.py                                                                         |  120 +++++++++++-
 agent/error_classifier.py                                                                        |    5 +
 agent/gemini_native_adapter.py                                                                   |  104 ++++++++++
 agent/gemini_schema.py                                                                           |   14 ++
 agent/memory_manager.py                                                                          |   45 ++++-
 agent/memory_provider.py                                                                         |   15 +-
 agent/model_metadata.py                                                                          |  160 +++++++++++++---
 agent/nous_rate_guard.py                                                                         |  142 ++++++++++++++
 agent/onboarding.py                                                                              |  144 ++++++++++++++
 agent/skill_commands.py                                                                          |  147 ++-------------
 agent/skill_preprocessing.py                                                                     |  131 +++++++++++++
 agent/transports/__init__.py                                                                     |    9 +-
 agent/transports/chat_completions.py                                                             |    9 +-
 agent/transports/codex.py                                                                        |   20 ++
 agent/transports/types.py                                                                        |    7 +-
 batch_runner.py                                                                                  |    8 +-
 cli-config.yaml.example                                                                          |   52 ++++-
 cli.py                                                                                           |  646 ++++++++++++++++++++++++++++++--------------------------------
 cron/jobs.py                                                                                     |   66 ++++++-
 cron/scheduler.py                                                                                |  137 ++++++++++++--
 docker-compose.yml                                                                               |   52 +++++
 docker/entrypoint.sh                                                                             |   29 ++-
 gateway/channel_directory.py                                                                     |   81 ++++++--
 gateway/config.py                                                                                |   27 ++-
 gateway/platforms/api_server.py                                                                  |  172 ++++++++++++++---
 gateway/platforms/base.py                                                                        |  176 ++++++++++++++++-
 gateway/platforms/bluebubbles.py                                                                 |   21 ++-
 gateway/platforms/discord.py                                                                     |   44 +++--
 gateway/platforms/matrix.py                                                                      |   14 ++
 gateway/platforms/slack.py                                                                       |  576 +++++++++++++++++++++++++++++++++++++++++++++++++++----
 gateway/platforms/telegram.py                                                                    |   28 ++-
 gateway/platforms/telegram_network.py                                                            |    6 +-
 gateway/run.py                                                                                   | 1267 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------
 gateway/session.py                                                                               |  120 ++++++++++--
 gateway/stream_consumer.py                                                                       |  110 +++++++++++
 gateway/whatsapp_identity.py                                                                     |  135 +++++++++++++
 hermes_cli/auth.py                                                                               | 1051 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------
 hermes_cli/auth_commands.py                                                                      |   75 +++++++-
 hermes_cli/azure_detect.py                                                                       |  300 +++++++++++++++++++++++++++++
 hermes_cli/commands.py                                                                           |  132 +++++++++++--
 hermes_cli/config.py                                                                             |  134 ++++++++++++-
 hermes_cli/copilot_auth.py                                                                       |   93 +++++++++
 hermes_cli/cron.py                                                                               |    9 +
 hermes_cli/doctor.py                                                                             |   39 +++-
 hermes_cli/dump.py                                                                               |    2 +
 hermes_cli/fallback_cmd.py                                                                       |  361 +++++++++++++++++++++++++++++++++++
 hermes_cli/hooks.py                                                                              |    1 +
 hermes_cli/main.py                                                                               |  977 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 hermes_cli/model_catalog.py                                                                      |  329 ++++++++++++++++++++++++++++++++
 hermes_cli/model_normalize.py                                                                    |   57 +++++-
 hermes_cli/model_switch.py                                                                       |  130 +++++++++++--
 hermes_cli/models.py                                                                             |  421 +++++++++++++++++++++++++++++++++--------
 hermes_cli/oneshot.py                                                                            |  202 ++++++++++++++++++++
 hermes_cli/plugins.py                                                                            |    8 +
 hermes_cli/providers.py                                                                          |   13 ++
 hermes_cli/pty_bridge.py                                                                         |  229 ++++++++++++++++++++++
 hermes_cli/runtime_provider.py                                                                   |  225 ++++++++++++++++++++--
 hermes_cli/setup.py                                                                              |  161 +++++++++-------
 hermes_cli/skills_hub.py                                                                         |   74 ++++++--
 hermes_cli/slack_cli.py                                                                          |  152 +++++++++++++++
 hermes_cli/status.py                                                                             |   19 +-
 hermes_cli/tips.py                                                                               |    5 +-
 hermes_cli/tools_config.py                                                                       |  195 +++++++++++++++++--
 hermes_cli/web_server.py                                                                         |  361 ++++++++++++++++++++++++++++++++++-
 hermes_state.py                                                                                  |  112 ++++++++++-
 model_tools.py                                                                                   |   78 +++++---
 nix/lib.nix                                                                                      |    2 +-
 nix/web.nix                                                                                      |    2 +-
 plugins/example-dashboard/dashboard/dist/index.js                                                |   25 +++
 plugins/example-dashboard/dashboard/manifest.json                                                |    1 +
 plugins/memory/hindsight/README.md                                                               |    3 +-
 plugins/memory/hindsight/__init__.py                                                             |  371 +++++++++++++++++++++++++++++-------
 plugins/memory/openviking/__init__.py                                                            |    2 +-
 plugins/spotify/__init__.py                                                                      |   66 +++++++
 plugins/spotify/client.py                                                                        |  435 ++++++++++++++++++++++++++++++++++++++++++
 plugins/spotify/plugin.yaml                                                                      |   13 ++
 plugins/spotify/tools.py                                                                         |  454 ++++++++++++++++++++++++++++++++++++++++++++
 pyproject.toml                                                                                   |   11 ++
 run_agent.py                                                                                     | 1449 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------
 scripts/build_model_catalog.py                                                                   |   95 ++++++++++
 scripts/install.sh                                                                               |  133 ++++++++++++-
 scripts/release.py                                                                               |   82 ++++++++
 skills/autonomous-ai-agents/hermes-agent/SKILL.md                                                |    2 -
 skills/feeds/DESCRIPTION.md                                                                      |    3 -
 skills/media/spotify/SKILL.md                                                                    |  134 +++++++++++++
 skills/mlops/inference/obliteratus/SKILL.md                                                      |    7 +
 skills/mlops/models/segment-anything/SKILL.md                                                    |    2 +
 skills/productivity/google-workspace/scripts/_hermes_home.py                                     |   42 +++++
 skills/productivity/google-workspace/scripts/google_api.py                                       |    9 +-
 skills/productivity/google-workspace/scripts/gws_bridge.py                                       |    7 +-
 skills/productivity/google-workspace/scripts/setup.py                                            |   21 ++-
 skills/research/research-paper-writing/SKILL.md                                                  |    2 +
 tests/acp/test_server.py                                                                         |    8 +-
 tests/acp/test_session.py                                                                        |   37 ++++
 tests/agent/test_anthropic_keychain.py                                                           |  165 ++++++++++++++++
 tests/agent/test_auxiliary_client.py                                                             |  210 +++++++++++++++++++++
 tests/agent/test_auxiliary_named_custom_providers.py                                             |  175 +++++++++++++++++
 tests/agent/test_bedrock_adapter.py                                                              |  207 ++++++++++++++++++++
 tests/agent/test_bedrock_integration.py                                                          |  180 ++++++++++++++++--
 tests/agent/test_context_compressor.py                                                           |   26 +++
 tests/agent/test_copilot_acp_client.py                                                           |   57 ++++++
 tests/agent/test_credential_pool.py                                                              |  268 ++++++++++++++++++++++++++
 tests/agent/test_error_classifier.py                                                             |   34 ++++
 tests/agent/test_gemini_free_tier_gate.py                                                        |  166 ++++++++++++++++
 tests/agent/test_gemini_native_adapter.py                                                        |   13 ++
 tests/agent/test_gemini_schema.py                                                                |  140 ++++++++++++++
 tests/agent/test_memory_provider.py                                                              |   52 +++++
 tests/agent/test_minimax_provider.py                                                             |    1 +
 tests/agent/test_model_metadata.py                                                               |  202 +++++++++++++++++++-
 tests/agent/test_model_metadata_ssl.py                                                           |   90 +++++++++
 tests/agent/test_nous_rate_guard.py                                                              |  138 ++++++++++++++
 tests/agent/test_onboarding.py                                                                   |  164 ++++++++++++++++
 tests/agent/test_skill_commands.py                                                               |   36 ----
 tests/agent/test_unsupported_parameter_retry.py                                                  |  201 ++++++++++++++++++++
 tests/agent/test_unsupported_temperature_retry.py                                                |  237 +++++++++++++++++++++++
 tests/agent/transports/test_chat_completions.py                                                  |    3 +
 tests/agent/transports/test_codex_transport.py                                                   |   30 +++
 tests/agent/transports/test_transport.py                                                         |    7 +
 tests/agent/transports/test_types.py                                                             |   12 ++
 tests/cli/test_branch_command.py                                                                 |   24 +++
 tests/cli/test_busy_input_mode_command.py                                                        |   94 +++++++++
 tests/cli/test_cli_approval_ui.py                                                                |   82 ++++++++
 tests/cli/test_cli_new_session.py                                                                |    2 -
 tests/cli/test_cli_plan_command.py                                                               |   67 -------
 tests/cli/test_quick_commands.py                                                                 |    5 +
 tests/conftest.py                                                                                |   15 ++
 tests/cron/test_cron_context_from.py                                                             |  390 ++++++++++++++++++++++++++++++++++++++
 tests/cron/test_cron_workdir.py                                                                  |  380 +++++++++++++++++++++++++++++++++++++
 tests/e2e/conftest.py                                                                            |    1 +
 tests/e2e/test_platform_commands.py                                                              |    8 -
 tests/gateway/conftest.py                                                                        |   60 +++++-
 tests/gateway/test_agent_cache.py                                                                |  140 +++++++++++++-
 tests/gateway/test_api_server.py                                                                 |  133 +++++++++++++
 tests/gateway/test_api_server_runs.py                                                            |  365 +++++++++++++++++++++++++++++++++++
 tests/gateway/test_async_memory_flush.py                                                         |  249 ------------------------
 tests/gateway/test_auth_fallback.py                                                              |   73 +++++++
 tests/gateway/test_bluebubbles.py                                                                |   31 +++
 tests/gateway/test_busy_session_ack.py                                                           |  145 ++++++++++++++
 tests/gateway/test_channel_directory.py                                                          |  154 ++++++++++++++-
 tests/gateway/test_command_bypass_active_session.py                                              |    5 +-
 tests/gateway/test_compress_command.py                                                           |    8 +-
 tests/gateway/test_compress_focus.py                                                             |    8 +-
 tests/gateway/test_compress_plugin_engine.py                                                     |  173 +++++++++++++++++
 tests/gateway/test_config.py                                                                     |   61 ++++++
 tests/gateway/test_discord_allowed_channels.py                                                   |  104 ++++++++++
 tests/gateway/test_discord_model_picker.py                                                       |   82 ++++++++
 tests/gateway/test_discord_slash_commands.py                                                     |    2 +-
 tests/gateway/test_flush_memory_stale_guard.py                                                   |  240 -----------------------
 tests/gateway/test_matrix.py                                                                     |    4 +
 tests/gateway/test_media_download_retry.py                                                       |   35 +++-
 tests/gateway/test_plan_command.py                                                               |  129 -------------
 tests/gateway/test_pre_gateway_dispatch.py                                                       |  179 ++++++++++++++++++
 tests/gateway/test_proxy_mode.py                                                                 |   29 ++-
 tests/gateway/test_queue_consumption.py                                                          |  193 ++++++++++++++++++-
 tests/gateway/test_reasoning_command.py                                                          |  134 ++++++++++++-
 tests/gateway/test_resume_command.py                                                             |   62 +++---
 tests/gateway/test_run_progress_interrupt.py                                                     |  215 +++++++++++++++++++++
 tests/gateway/test_run_progress_topics.py                                                        |   30 ++-
 tests/gateway/test_running_agent_session_toggles.py                                              |   23 +++
 tests/gateway/test_session.py                                                                    |  156 ++++++++++++++-
 tests/gateway/test_session_boundary_hooks.py                                                     |   77 ++++++++
 tests/gateway/test_session_boundary_security_state.py                                            |    3 +-
 tests/gateway/test_session_info.py                                                               |    2 +-
 tests/gateway/test_session_model_override_routing.py                                             |    5 +
 tests/gateway/test_session_model_reset.py                                                        |   15 +-
 tests/gateway/test_shutdown_cache_cleanup.py                                                     |  210 +++++++++++++++++++++
 tests/gateway/test_slack.py                                                                      |  372 +++++++++++++++++++++++++++++++++++-
 tests/gateway/test_slack_approval_buttons.py                                                     |  187 +++++++++++++++++-
 tests/gateway/test_slack_mention.py                                                              |  152 ++++++++++++++-
 tests/gateway/test_status_command.py                                                             |  101 +++++++++-
 tests/gateway/test_stream_consumer_fresh_final.py                                                |  236 +++++++++++++++++++++++
 tests/gateway/test_telegram_network.py                                                           |   21 ++-
 tests/gateway/test_unauthorized_dm_behavior.py                                                   |   24 ++-
 tests/gateway/test_voice_command.py                                                              |  100 ++++++++++
 tests/hermes_cli/test_anthropic_model_flow_stale_oauth.py                                        |  210 +++++++++++++++++++++
 tests/hermes_cli/test_apply_model_switch_result_context.py                                       |  152 +++++++++++++++
 tests/hermes_cli/test_auth_codex_provider.py                                                     |  161 ++++++++++++++++
 tests/hermes_cli/test_auth_commands.py                                                           |  122 +++++++++++-
 tests/hermes_cli/test_auth_nous_provider.py                                                      |  156 +++++++++++++++
 tests/hermes_cli/test_auth_ssl_macos.py                                                          |  115 +++++++++++
 tests/hermes_cli/test_azure_detect.py                                                            |  237 +++++++++++++++++++++++
 tests/hermes_cli/test_codex_models.py                                                            |   79 ++++++++
 tests/hermes_cli/test_commands.py                                                                |  116 +++++++++++-
 tests/hermes_cli/test_copilot_context.py                                                         |  134 +++++++++++++
 tests/hermes_cli/test_copilot_in_model_list.py                                                   |   41 ++++
 tests/hermes_cli/test_copilot_token_exchange.py                                                  |  159 ++++++++++++++++
 tests/hermes_cli/test_custom_provider_context_length.py                                          |  240 +++++++++++++++++++++++
 tests/hermes_cli/test_custom_provider_model_switch.py                                            |  151 ++++++++++++++-
 tests/hermes_cli/test_doctor.py                                                                  |   90 +++++++++
 tests/hermes_cli/test_fallback_cmd.py                                                            |  486 +++++++++++++++++++++++++++++++++++++++++++++++
 tests/hermes_cli/test_gemini_free_tier_setup_block.py                                            |  141 ++++++++++++++
 tests/hermes_cli/test_model_catalog.py                                                           |  284 ++++++++++++++++++++++++++++
 tests/hermes_cli/test_model_normalize.py                                                         |   70 +++++++
 tests/hermes_cli/test_model_switch_context_display.py                                            |  148 +++++++++++++++
 tests/hermes_cli/test_model_switch_custom_providers.py                                           |    2 +-
 tests/hermes_cli/test_model_switch_opencode_anthropic.py                                         |  123 ++++++++++++
 tests/hermes_cli/test_model_validation.py                                                        |   24 ++-
 tests/hermes_cli/test_models.py                                                                  |   11 ++
 tests/hermes_cli/test_ollama_cloud_auth.py                                                       |    4 +-
 tests/hermes_cli/test_overlay_slug_resolution.py                                                 |   19 ++
 tests/hermes_cli/test_plugins.py                                                                 |   35 +++-
 tests/hermes_cli/test_pty_bridge.py                                                              |  172 +++++++++++++++++
 tests/hermes_cli/test_redact_config_bridge.py                                                    |  151 +++++++++++++++
 tests/hermes_cli/test_runtime_provider_resolution.py                                             |  144 ++++++++++++++
 tests/hermes_cli/test_setup.py                                                                   |   35 ++++
 tests/hermes_cli/test_setup_noninteractive.py                                                    |   85 ---------
 tests/hermes_cli/test_setup_reconfigure.py                                                       |  287 ++++++++++++++++++++++++++++
 tests/hermes_cli/test_skills_config.py                                                           |   29 +--
 tests/hermes_cli/test_skills_hub.py                                                              |   72 ++++++-
 tests/hermes_cli/test_spotify_auth.py                                                            |  138 ++++++++++++++
 tests/hermes_cli/test_status.py                                                                  |   37 ++++
 tests/hermes_cli/test_suppress_eio_on_interrupt.py                                               |  115 +++++++++++
 tests/hermes_cli/test_tools_config.py                                                            |  216 +++++++++++++++++++++
 tests/hermes_cli/test_tui_npm_install.py                                                         |   28 +++
 tests/hermes_cli/test_tui_resume_flow.py                                                         |   64 ++++++-
 tests/hermes_cli/test_user_providers_model_switch.py                                             |   52 +++++
 tests/hermes_cli/test_web_server.py                                                              |  287 ++++++++++++++++++++++++++++
 tests/hermes_cli/test_xiaomi_provider.py                                                         |   54 ++++++
 tests/hermes_state/test_resolve_resume_session_id.py                                             |   96 ++++++++++
 tests/plugins/memory/test_hindsight_provider.py                                                  |  521 +++++++++++++++++++++++++++++++++++++++++++++++++-
 tests/run_agent/test_background_review.py                                                        |   73 +++++++
 tests/run_agent/test_background_review_summary.py                                                |  130 +++++++++++++
 tests/run_agent/test_compress_focus_plugin_fallback.py                                           |   75 ++++++++
 tests/run_agent/test_compression_feasibility.py                                                  |    6 +-
 tests/run_agent/test_concurrent_interrupt.py                                                     |    2 +-
 tests/run_agent/test_create_openai_client_proxy_env.py                                           |   77 +++++++-
 tests/run_agent/test_deepseek_reasoning_content_echo.py                                          |  213 +++++++++++++++++++++
 tests/run_agent/test_flush_memories_codex.py                                                     |  277 ---------------------------
 tests/run_agent/test_jsondecodeerror_retryable.py                                                |   87 +++++++++
 tests/run_agent/test_memory_sync_interrupted.py                                                  |  189 +++++++++++++++++++
 tests/run_agent/test_primary_runtime_restore.py                                                  |   82 ++++++++
 tests/run_agent/test_provider_attribution_headers.py                                             |   18 ++
 tests/run_agent/test_provider_fallback.py                                                        |   41 +++-
 tests/run_agent/test_provider_parity.py                                                          |  204 +++++++++++++++++++-
 tests/run_agent/test_repair_tool_call_arguments.py                                               |   36 ++++
 tests/run_agent/test_repair_tool_call_name.py                                                    |  117 ++++++++++++
 tests/run_agent/test_review_prompt_class_first.py                                                |   78 ++++++++
 tests/run_agent/test_run_agent.py                                                                |  157 ++++++++++-----
 tests/run_agent/test_run_agent_codex_responses.py                                                |  310 ++++++++++++++++++++++++++++++
 tests/run_agent/test_stream_interrupt_retry.py                                                   |  162 ++++++++++++++++
 tests/run_agent/test_streaming_tool_call_repair.py                                               |  116 ++++++++++++
 tests/run_agent/test_switch_model_fallback_prune.py                                              |   11 ++
 tests/run_agent/test_tool_call_args_sanitizer.py                                                 |  157 +++++++++++++++
 tests/skills/test_google_oauth_setup.py                                                          |   66 +++++++
 tests/test_batch_runner_checkpoint.py                                                            |   64 +++++++
 tests/test_hermes_state.py                                                                       |   75 +++++++-
 tests/test_model_tools.py                                                                        |   74 +++++++-
 tests/test_toolsets.py                                                                           |    4 +-
 tests/test_tui_gateway_server.py                                                                 |  262 +++++++++++++++++++++++++
 tests/tools/test_base_environment.py                                                             |   16 ++
 tests/tools/test_browser_camofox.py                                                              |    4 +-
 tests/tools/test_browser_cdp_tool.py                                                             |    5 +-
 tests/tools/test_browser_hybrid_routing.py                                                       |  248 ++++++++++++++++++++++++
 tests/tools/test_checkpoint_manager.py                                                           |   23 ++-
 tests/tools/test_credential_pool_env_fallback.py                                                 |  210 +++++++++++++++++++++
 tests/tools/test_cron_approval_mode.py                                                           |    6 +-
 tests/tools/test_delegate.py                                                                     |  204 ++++++++++++++++++++
 tests/tools/test_delegate_subagent_timeout_diagnostic.py                                         |  286 ++++++++++++++++++++++++++++
 tests/tools/test_discord_tool.py                                                                 |  278 +++++++++++++++++----------
 tests/tools/test_dockerfile_pid1_reaping.py                                                      |   78 ++++++++
 tests/tools/test_file_tools.py                                                                   |    6 +-
 tests/tools/test_hardline_blocklist.py                                                           |  290 ++++++++++++++++++++++++++++
 tests/tools/test_mcp_oauth.py                                                                    |   37 +++-
 tests/tools/test_mcp_tool_session_expired.py                                                     |  359 +++++++++++++++++++++++++++++++++++
 tests/tools/test_registry.py                                                                     |    1 +
 tests/tools/test_schema_sanitizer.py                                                             |  205 ++++++++++++++++++++
 tests/tools/test_send_message_tool.py                                                            |   38 ++++
 tests/tools/test_shared_container_task_id.py                                                     |  107 +++++++++++
 tests/tools/test_skills_tool.py                                                                  |   64 +++++++
 tests/tools/test_spotify_client.py                                                               |  299 +++++++++++++++++++++++++++++
 tests/tools/test_transcription_tools.py                                                          |   95 ++++++++++
 tests/tools/test_watch_patterns.py                                                               |  328 ++++++++++++++++++++++++--------
 tests/tools/test_write_deny.py                                                                   |    7 +-
 tests/tools/test_yolo_mode.py                                                                    |   30 +--
 tests/tools/test_zombie_process_cleanup.py                                                       |    8 +-
 tests/tui_gateway/test_make_agent_provider.py                                                    |  155 ++++++++++++++-
 tests/tui_gateway/test_protocol.py                                                               |   31 +++
 tools/approval.py                                                                                |  114 +++++++++++
 tools/browser_cdp_tool.py                                                                        |    1 +
 tools/browser_tool.py                                                                            |  329 +++++++++++++++++++++++++++-----
 tools/code_execution_tool.py                                                                     |    3 +-
 tools/cronjob_tools.py                                                                           |   61 +++++-
 tools/delegate_tool.py                                                                           |  352 +++++++++++++++++++++++++++++++---
 tools/discord_tool.py                                                                            |  174 ++++++++++-------
 tools/environments/base.py                                                                       |   18 +-
 tools/file_tools.py                                                                              |   18 +-
 tools/mcp_oauth.py                                                                               |   23 +--
 tools/mcp_oauth_manager.py                                                                       |    3 +-
 tools/mcp_tool.py                                                                                |  173 +++++++++++++++++
 tools/process_registry.py                                                                        |  256 +++++++++++++++++++------
 tools/schema_sanitizer.py                                                                        |  186 ++++++++++++++++++
 tools/send_message_tool.py                                                                       |   11 ++
 tools/skills_tool.py                                                                             |   55 +++++-
 tools/terminal_tool.py                                                                           |   86 ++++++++-
 tools/transcription_tools.py                                                                     |   88 ++++++++-
 toolsets.py                                                                                      |   33 +++-
 tui_gateway/entry.py                                                                             |   23 +++
 tui_gateway/event_publisher.py                                                                   |  126 +++++++++++++
 tui_gateway/server.py                                                                            |  424 +++++++++++++++++++++++++----------------
 tui_gateway/transport.py                                                                         |  127 +++++++++++++
 tui_gateway/ws.py                                                                                |  174 +++++++++++++++++
 ui-tui/README.md                                                                                 |    5 +-
 ui-tui/packages/hermes-ink/src/ink/components/AlternateScreen.tsx                                |    6 +-
 ui-tui/packages/hermes-ink/src/ink/dom.ts                                                        |   15 +-
 ui-tui/packages/hermes-ink/src/ink/hooks/use-selection.ts                                        |    8 +-
 ui-tui/packages/hermes-ink/src/ink/ink.tsx                                                       |   60 ++++--
 ui-tui/packages/hermes-ink/src/ink/screen.ts                                                     |   39 ++++
 ui-tui/packages/hermes-ink/src/ink/selection.test.ts                                             |   82 ++++++++
 ui-tui/packages/hermes-ink/src/ink/selection.ts                                                  |   71 ++++++-
 ui-tui/packages/hermes-ink/src/ink/termio/osc.test.ts                                            |   43 ++++-
 ui-tui/packages/hermes-ink/src/ink/termio/osc.ts                                                 |  157 ++++++++++-----
 ui-tui/src/__tests__/createGatewayEventHandler.test.ts                                           |   55 +++---
 ui-tui/src/__tests__/createSlashHandler.test.ts                                                  |   86 ++++++---
 ui-tui/src/__tests__/details.test.ts                                                             |    2 +-
 ui-tui/src/__tests__/platform.test.ts                                                            |   22 +++
 ui-tui/src/app.tsx                                                                               |    7 +-
 ui-tui/src/app/createGatewayEventHandler.ts                                                      |    6 -
 ui-tui/src/app/interfaces.ts                                                                     |    5 +-
 ui-tui/src/app/slash/commands/core.ts                                                            |   74 +++++++-
 ui-tui/src/app/slash/commands/session.ts                                                         |   21 +--
 ui-tui/src/app/slash/commands/setup.ts                                                           |   12 --
 ui-tui/src/app/turnController.ts                                                                 |   31 ++-
 ui-tui/src/app/uiStore.ts                                                                        |    2 +
 ui-tui/src/app/useComposerState.ts                                                               |   39 ++--
 ui-tui/src/app/useConfigSync.ts                                                                  |    1 +
 ui-tui/src/app/useInputHandlers.ts                                                               |   35 ++--
 ui-tui/src/app/useMainApp.ts                                                                     |   16 +-
 ui-tui/src/app/useSessionLifecycle.ts                                                            |    4 +
 ui-tui/src/components/appChrome.tsx                                                              |    6 +-
 ui-tui/src/components/appOverlays.tsx                                                            |    9 +-
 ui-tui/src/components/messageLine.tsx                                                            |   21 ++-
 ui-tui/src/components/modelPicker.tsx                                                            |   68 +++----
 ui-tui/src/components/overlayControls.tsx                                                        |   50 +++++
 ui-tui/src/components/sessionPicker.tsx                                                          |   24 +--
 ui-tui/src/components/skillsHub.tsx                                                              |   87 ++++-----
 ui-tui/src/components/thinking.tsx                                                               |   59 ++++--
 ui-tui/src/content/hotkeys.ts                                                                    |   23 ++-
 ui-tui/src/gatewayTypes.ts                                                                       |   12 +-
 ui-tui/src/lib/editor.test.ts                                                                    |   74 ++++++++
 ui-tui/src/lib/editor.ts                                                                         |   47 +++++
 ui-tui/src/lib/platform.ts                                                                       |   20 +-
 ui-tui/src/types/hermes-ink.d.ts                                                                 |    4 +-
 uv.lock                                                                                          |    4 +-
 web/package-lock.json                                                                            | 1206 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------
 web/package.json                                                                                 |    7 +-
 web/public/fonts-terminal/JetBrainsMono-Bold.woff2                                               |  Bin 0 -> 94628 bytes
 web/public/fonts-terminal/JetBrainsMono-Italic.woff2                                             |  Bin 0 -> 96428 bytes
 web/public/fonts-terminal/JetBrainsMono-Regular.woff2                                            |  Bin 0 -> 92380 bytes
 web/src/App.tsx                                                                                  |  709 +++++++++++++++++++++++++++++++++++++++++++++-----------------------
 web/src/components/ChatSidebar.tsx                                                               |  379 +++++++++++++++++++++++++++++++++++++
 web/src/components/DeleteConfirmDialog.tsx                                                       |   40 ++++
 web/src/components/Markdown.tsx                                                                  |  128 +++++++++++--
 web/src/components/ModelPickerDialog.tsx                                                         |  392 ++++++++++++++++++++++++++++++++++++++
 web/src/components/PlatformsCard.tsx                                                             |   97 ++++++++++
 web/src/components/SidebarFooter.tsx                                                             |   40 ++++
 web/src/components/SidebarStatusStrip.tsx                                                        |   70 +++++++
 web/src/components/SlashPopover.tsx                                                              |  174 +++++++++++++++++
 web/src/components/ThemeSwitcher.tsx                                                             |   13 +-
 web/src/components/ToolCall.tsx                                                                  |  228 ++++++++++++++++++++++
 web/src/components/ui/button.tsx                                                                 |    2 +-
 web/src/components/ui/confirm-dialog.tsx                                                         |  138 ++++++++++++++
 web/src/components/ui/segmented.tsx                                                              |   80 ++++++++
 web/src/components/ui/switch.tsx                                                                 |    3 +
 web/src/contexts/PageHeaderProvider.tsx                                                          |  106 +++++++++++
 web/src/contexts/SystemActions.tsx                                                               |  120 ++++++++++++
 web/src/contexts/page-header-context.ts                                                          |   12 ++
 web/src/contexts/system-actions-context.ts                                                       |   18 ++
 web/src/contexts/usePageHeader.ts                                                                |   10 +
 web/src/contexts/useSystemActions.ts                                                             |   15 ++
 web/src/hooks/useConfirmDelete.ts                                                                |   41 ++++
 web/src/hooks/useSidebarStatus.ts                                                                |   27 +++
 web/src/i18n/en.ts                                                                               |   56 +++++-
 web/src/i18n/types.ts                                                                            |   63 +++++--
 web/src/i18n/zh.ts                                                                               |   52 ++++-
 web/src/index.css                                                                                |   54 ++++++
 web/src/lib/api.ts                                                                               |    7 +-
 web/src/lib/dashboard-flags.ts                                                                   |   15 ++
 web/src/lib/gatewayClient.ts                                                                     |  235 +++++++++++++++++++++++
 web/src/lib/resolve-page-title.ts                                                                |   33 ++++
 web/src/lib/slashExec.ts                                                                         |  163 ++++++++++++++++
 web/src/main.tsx                                                                                 |    5 +-
 web/src/pages/AnalyticsPage.tsx                                                                  |   73 +++++--
 web/src/pages/ChatPage.tsx                                                                       |  763 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 web/src/pages/ConfigPage.tsx                                                                     |  147 +++++++++------
 web/src/pages/CronPage.tsx                                                                       |   63 +++++--
 web/src/pages/DocsPage.tsx                                                                       |   57 ++++++
 web/src/pages/EnvPage.tsx                                                                        |   95 +++++++---
 web/src/pages/LogsPage.tsx                                                                       |  308 ++++++++++++++----------------
 web/src/pages/SessionsPage.tsx                                                                   |  357 +++++++++++++++++++++++++++++++----
 web/src/pages/SkillsPage.tsx                                                                     |  289 ++++++++++++++++------------
 web/src/pages/StatusPage.tsx                                                                     |  614 -----------------------------------------------------------
 web/src/plugins/PluginPage.tsx                                                                   |   64 +++++++
 web/src/plugins/index.ts                                                                         |    1 +
 web/src/plugins/registry.ts                                                                      |   16 ++
 web/src/plugins/slots.ts                                                                         |   43 +++++
 web/src/plugins/types.ts                                                                         |   21 +--
 web/src/plugins/usePlugins.ts                                                                    |   49 ++++-
 web/vite.config.ts                                                                               |   24 ++-
 website/docs/developer-guide/architecture.md                                                     |    2 +-
 website/docs/developer-guide/context-compression-and-caching.md                                  |    6 +-
 website/docs/developer-guide/gateway-internals.md                                                |    2 +-
 website/docs/developer-guide/session-storage.md                                                  |   11 +-
 website/docs/guides/azure-foundry.md                                                             |  155 +++++++++++++++
 website/docs/guides/build-a-hermes-plugin.md                                                     |    2 +-
 website/docs/guides/delegation-patterns.md                                                       |   20 +-
 website/docs/integrations/providers.md                                                           |   12 ++
 website/docs/reference/cli-commands.md                                                           |   40 +++-
 website/docs/reference/environment-variables.md                                                  |    3 +
 website/docs/reference/faq.md                                                                    |   64 ++++---
 website/docs/reference/model-catalog.md                                                          |  103 ++++++++++
 website/docs/reference/skills-catalog.md                                                         |    1 +
 website/docs/reference/slash-commands.md                                                         |   13 +-
 website/docs/user-guide/cli.md                                                                   |   12 ++
 website/docs/user-guide/configuration.md                                                         |   29 ++-
 website/docs/user-guide/features/browser.md                                                      |   34 ++++
 website/docs/user-guide/features/cron.md                                                         |   32 ++++
 website/docs/user-guide/features/dashboard-plugins.md                                            |  336 ---------------------------------
 website/docs/user-guide/features/extending-the-dashboard.md                                      |  904 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 website/docs/user-guide/features/fallback-providers.md                                           |    6 -
 website/docs/user-guide/features/hooks.md                                                        |   75 +++++++-
 website/docs/user-guide/features/plugins.md                                                      |    1 +
 website/docs/user-guide/features/skills.md                                                       |    2 +-
 website/docs/user-guide/features/spotify.md                                                      |  265 ++++++++++++++++++++++++++
 website/docs/user-guide/features/web-dashboard.md                                                |  311 +++++-------------------------
 website/docs/user-guide/messaging/index.md                                                       |   12 +-
 website/docs/user-guide/messaging/slack.md                                                       |   82 +++++++-
 website/docs/user-guide/messaging/webhooks.md                                                    |   12 ++
 website/docs/user-guide/sessions.md                                                              |    2 +-
 website/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-hermes-agent.md |    2 -
 website/docs/user-guide/skills/bundled/media/media-spotify.md                                    |  150 +++++++++++++++
 website/docs/user-guide/skills/bundled/mlops/mlops-models-segment-anything.md                    |    2 +
 website/docs/user-guide/skills/bundled/mlops/mlops-training-unsloth.md                           |    2 +-
 website/docs/user-guide/skills/bundled/research/research-research-paper-writing.md               |    2 +
 website/scripts/extract-skills.py                                                                |    1 -
 website/scripts/generate-skill-docs.py                                                           |    8 +
 website/sidebars.ts                                                                              |    6 +-
 website/static/api/model-catalog.json                                                            |  245 ++++++++++++++++++++++++
 448 files changed, 44321 insertions(+), 7138 deletions(-)
 create mode 100644 agent/onboarding.py
 create mode 100644 agent/skill_preprocessing.py
 create mode 100644 docker-compose.yml
 create mode 100644 gateway/whatsapp_identity.py
 create mode 100644 hermes_cli/azure_detect.py
 create mode 100644 hermes_cli/fallback_cmd.py
 create mode 100644 hermes_cli/model_catalog.py
 create mode 100644 hermes_cli/oneshot.py
 create mode 100644 hermes_cli/pty_bridge.py
 create mode 100644 hermes_cli/slack_cli.py
 create mode 100644 plugins/spotify/__init__.py
 create mode 100644 plugins/spotify/client.py
 create mode 100644 plugins/spotify/plugin.yaml
 create mode 100644 plugins/spotify/tools.py
 create mode 100755 scripts/build_model_catalog.py
 delete mode 100644 skills/feeds/DESCRIPTION.md
 create mode 100644 skills/media/spotify/SKILL.md
 create mode 100644 skills/productivity/google-workspace/scripts/_hermes_home.py
 create mode 100644 tests/agent/test_anthropic_keychain.py
 create mode 100644 tests/agent/test_gemini_free_tier_gate.py
 create mode 100644 tests/agent/test_gemini_schema.py
 create mode 100644 tests/agent/test_model_metadata_ssl.py
 create mode 100644 tests/agent/test_onboarding.py
 create mode 100644 tests/agent/test_unsupported_parameter_retry.py
 create mode 100644 tests/agent/test_unsupported_temperature_retry.py
 create mode 100644 tests/cli/test_busy_input_mode_command.py
 delete mode 100644 tests/cli/test_cli_plan_command.py
 create mode 100644 tests/cron/test_cron_context_from.py
 create mode 100644 tests/cron/test_cron_workdir.py
 create mode 100644 tests/gateway/test_api_server_runs.py
 delete mode 100644 tests/gateway/test_async_memory_flush.py
 create mode 100644 tests/gateway/test_auth_fallback.py
 create mode 100644 tests/gateway/test_compress_plugin_engine.py
 create mode 100644 tests/gateway/test_discord_allowed_channels.py
 create mode 100644 tests/gateway/test_discord_model_picker.py
 delete mode 100644 tests/gateway/test_flush_memory_stale_guard.py
 delete mode 100644 tests/gateway/test_plan_command.py
 create mode 100644 tests/gateway/test_pre_gateway_dispatch.py
 create mode 100644 tests/gateway/test_run_progress_interrupt.py
 create mode 100644 tests/gateway/test_shutdown_cache_cleanup.py
 create mode 100644 tests/gateway/test_stream_consumer_fresh_final.py
 create mode 100644 tests/hermes_cli/test_anthropic_model_flow_stale_oauth.py
 create mode 100644 tests/hermes_cli/test_apply_model_switch_result_context.py
 create mode 100644 tests/hermes_cli/test_auth_ssl_macos.py
 create mode 100644 tests/hermes_cli/test_azure_detect.py
 create mode 100644 tests/hermes_cli/test_copilot_context.py
 create mode 100644 tests/hermes_cli/test_copilot_in_model_list.py
 create mode 100644 tests/hermes_cli/test_copilot_token_exchange.py
 create mode 100644 tests/hermes_cli/test_custom_provider_context_length.py
 create mode 100644 tests/hermes_cli/test_fallback_cmd.py
 create mode 100644 tests/hermes_cli/test_gemini_free_tier_setup_block.py
 create mode 100644 tests/hermes_cli/test_model_catalog.py
 create mode 100644 tests/hermes_cli/test_model_switch_context_display.py
 create mode 100644 tests/hermes_cli/test_pty_bridge.py
 create mode 100644 tests/hermes_cli/test_redact_config_bridge.py
 create mode 100644 tests/hermes_cli/test_setup_reconfigure.py
 create mode 100644 tests/hermes_cli/test_spotify_auth.py
 create mode 100644 tests/hermes_cli/test_suppress_eio_on_interrupt.py
 create mode 100644 tests/hermes_state/test_resolve_resume_session_id.py
 create mode 100644 tests/run_agent/test_background_review.py
 create mode 100644 tests/run_agent/test_background_review_summary.py
 create mode 100644 tests/run_agent/test_compress_focus_plugin_fallback.py
 create mode 100644 tests/run_agent/test_deepseek_reasoning_content_echo.py
 delete mode 100644 tests/run_agent/test_flush_memories_codex.py
 create mode 100644 tests/run_agent/test_jsondecodeerror_retryable.py
 create mode 100644 tests/run_agent/test_memory_sync_interrupted.py
 create mode 100644 tests/run_agent/test_repair_tool_call_name.py
 create mode 100644 tests/run_agent/test_review_prompt_class_first.py
 create mode 100644 tests/run_agent/test_stream_interrupt_retry.py
 create mode 100644 tests/run_agent/test_streaming_tool_call_repair.py
 create mode 100644 tests/run_agent/test_tool_call_args_sanitizer.py
 create mode 100644 tests/tools/test_browser_hybrid_routing.py
 create mode 100644 tests/tools/test_credential_pool_env_fallback.py
 create mode 100644 tests/tools/test_delegate_subagent_timeout_diagnostic.py
 create mode 100644 tests/tools/test_dockerfile_pid1_reaping.py
 create mode 100644 tests/tools/test_hardline_blocklist.py
 create mode 100644 tests/tools/test_mcp_tool_session_expired.py
 create mode 100644 tests/tools/test_schema_sanitizer.py
 create mode 100644 tests/tools/test_shared_container_task_id.py
 create mode 100644 tests/tools/test_spotify_client.py
 create mode 100644 tools/schema_sanitizer.py
 create mode 100644 tui_gateway/event_publisher.py
 create mode 100644 tui_gateway/transport.py
 create mode 100644 tui_gateway/ws.py
 create mode 100644 ui-tui/packages/hermes-ink/src/ink/selection.test.ts
 create mode 100644 ui-tui/src/components/overlayControls.tsx
 create mode 100644 ui-tui/src/lib/editor.test.ts
 create mode 100644 ui-tui/src/lib/editor.ts
 create mode 100644 web/public/fonts-terminal/JetBrainsMono-Bold.woff2
 create mode 100644 web/public/fonts-terminal/JetBrainsMono-Italic.woff2
 create mode 100644 web/public/fonts-terminal/JetBrainsMono-Regular.woff2
 create mode 100644 web/src/components/ChatSidebar.tsx
 create mode 100644 web/src/components/DeleteConfirmDialog.tsx
 create mode 100644 web/src/components/ModelPickerDialog.tsx
 create mode 100644 web/src/components/PlatformsCard.tsx
 create mode 100644 web/src/components/SidebarFooter.tsx
 create mode 100644 web/src/components/SidebarStatusStrip.tsx
 create mode 100644 web/src/components/SlashPopover.tsx
 create mode 100644 web/src/components/ToolCall.tsx
 create mode 100644 web/src/components/ui/confirm-dialog.tsx
 create mode 100644 web/src/components/ui/segmented.tsx
 create mode 100644 web/src/contexts/PageHeaderProvider.tsx
 create mode 100644 web/src/contexts/SystemActions.tsx
 create mode 100644 web/src/contexts/page-header-context.ts
 create mode 100644 web/src/contexts/system-actions-context.ts
 create mode 100644 web/src/contexts/usePageHeader.ts
 create mode 100644 web/src/contexts/useSystemActions.ts
 create mode 100644 web/src/hooks/useConfirmDelete.ts
 create mode 100644 web/src/hooks/useSidebarStatus.ts
 create mode 100644 web/src/lib/dashboard-flags.ts
 create mode 100644 web/src/lib/gatewayClient.ts
 create mode 100644 web/src/lib/resolve-page-title.ts
 create mode 100644 web/src/lib/slashExec.ts
 create mode 100644 web/src/pages/ChatPage.tsx
 create mode 100644 web/src/pages/DocsPage.tsx
 delete mode 100644 web/src/pages/StatusPage.tsx
 create mode 100644 web/src/plugins/PluginPage.tsx
 create mode 100644 website/docs/guides/azure-foundry.md
 create mode 100644 website/docs/reference/model-catalog.md
 delete mode 100644 website/docs/user-guide/features/dashboard-plugins.md
 create mode 100644 website/docs/user-guide/features/extending-the-dashboard.md
 create mode 100644 website/docs/user-guide/features/spotify.md
 create mode 100644 website/docs/user-guide/skills/bundled/media/media-spotify.md
 create mode 100644 website/static/api/model-catalog.json
✓ Repository ready
→ Creating virtual environment with Python 3.11...
→ Virtual environment already exists, recreating...
Using CPython 3.11.15
Creating virtual environment at: venv
Activate with: source venv/bin/activate
✓ Virtual environment ready (Python 3.11)
→ Installing dependencies...
⚠ Full install (.[all]) failed, trying base install...
→ Reason: 
      hint: Pre-releases are available for `mautrix` in the requested range (e.g., 0.21.0b5), but pre-releases weren't enabled (try: `--prerelease=allow`)
Using Python 3.11.15 environment at: venv
Resolved 58 packages in 258ms
      Built hermes-agent @ file:///root/.hermes/hermes-agent
Prepared 3 packages in 1.03s
Installed 58 packages in 22ms
 + aiohappyeyeballs==2.6.1
 + aiohttp==3.13.5
 + aiosignal==1.4.0
 + annotated-types==0.7.0
 + anthropic==0.96.0
 + anyio==4.13.0
 + attrs==26.1.0
 + certifi==2026.2.25
 + cffi==2.0.0
 + charset-normalizer==3.4.7
 + cryptography==46.0.7
 + distro==1.9.0
 + docstring-parser==0.18.0
 + edge-tts==7.2.8
 + exa-py==2.12.0
 + fal-client==0.13.2
 + fire==0.7.1
 + firecrawl-py==4.22.2
 + frozenlist==1.8.0
 + h11==0.16.0
 + hermes-agent==0.11.0 (from file:///root/.hermes/hermes-agent)
 + httpcore==1.0.9
 + httpx==0.28.1
 + httpx-sse==0.4.3
 + idna==3.11
 + jinja2==3.1.6
 + jiter==0.14.0
 + markdown-it-py==4.0.0
 + markupsafe==3.0.3
 + mdurl==0.1.2
 + msgpack==1.1.2
 + multidict==6.7.1
 + nest-asyncio==1.6.0
 + openai==2.32.0
 + parallel-web==0.4.2
 + prompt-toolkit==3.0.52
 + propcache==0.4.1
 + pycparser==3.0
 + pydantic==2.13.2
 + pydantic-core==2.46.2
 + pygments==2.20.0
 + pyjwt==2.12.1
 + python-dotenv==1.2.2
 + pyyaml==6.0.3
 + requests==2.33.1
 + rich==14.3.4
 + sniffio==1.3.1
 + socksio==1.0.0
 + tabulate==0.10.0
 + tenacity==9.1.4
 + termcolor==3.3.0
 + tqdm==4.67.3
 + typing-extensions==4.15.0
 + typing-inspection==0.4.2
 + urllib3==2.6.3
 + wcwidth==0.6.0
 + websockets==16.0
 + yarl==1.23.0
✓ Main package installed
✓ All dependencies installed
→ Installing Node.js dependencies (browser tools)...
✅ Browser tools ready. Run: python run_agent.py --help
✓ Node.js dependencies installed
→ Installing browser engine (Playwright Chromium)...
→ Playwright may request sudo to install browser system dependencies (shared libraries).
→ This is standard Playwright setup — Hermes itself does not require root access.
Installing dependencies...
Get:1 https://mirrors.aliyun.com/docker-ce/linux/ubuntu noble InRelease [48.5 kB]
Hit:2 https://mirrors.tuna.tsinghua.edu.cn/ubuntu noble InRelease                                                                                                                                                        
Get:3 https://mirrors.tuna.tsinghua.edu.cn/ubuntu noble-updates InRelease [126 kB]                                                            
Get:4 https://mirrors.tuna.tsinghua.edu.cn/ubuntu noble-backports InRelease [126 kB]                                 
Hit:5 http://archive.ubuntu.com/ubuntu noble InRelease                                                               
Get:6 https://mirrors.tuna.tsinghua.edu.cn/ubuntu noble-security InRelease [126 kB]
Get:7 https://mirrors.tuna.tsinghua.edu.cn/ubuntu noble-updates/main amd64 Packages [1919 kB]
Get:8 http://archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB]       
Get:9 https://mirrors.tuna.tsinghua.edu.cn/ubuntu noble-updates/universe amd64 Packages [1685 kB]
Hit:10 https://deb.nodesource.com/node_22.x nodistro InRelease                                                  
Get:11 http://archive.ubuntu.com/ubuntu noble-security InRelease [126 kB]                                       
Get:12 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages [1919 kB]
Get:13 http://archive.ubuntu.com/ubuntu noble-updates/universe amd64 Packages [1685 kB]
Fetched 7886 kB in 5s (1705 kB/s)                          
Reading package lists... Done
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
libasound2t64 is already the newest version (1.2.11-1ubuntu0.2).
libatk-bridge2.0-0t64 is already the newest version (2.52.0-1build1).
libatk1.0-0t64 is already the newest version (2.52.0-1build1).
libatspi2.0-0t64 is already the newest version (2.52.0-1build1).
libcairo2 is already the newest version (1.18.0-3build1).
libcups2t64 is already the newest version (2.4.7-1.2ubuntu7.9).
libdbus-1-3 is already the newest version (1.14.10-4ubuntu4.1).
libdrm2 is already the newest version (2.4.125-1ubuntu0.1~24.04.1).
libgbm1 is already the newest version (25.2.8-0ubuntu0.24.04.1).
libglib2.0-0t64 is already the newest version (2.80.0-6ubuntu3.8).
libnspr4 is already the newest version (2:4.35-1.1build1).
libnss3 is already the newest version (2:3.98-1ubuntu0.1).
libpango-1.0-0 is already the newest version (1.52.1+ds-1build1).
libx11-6 is already the newest version (2:1.8.7-1build1).
libxcb1 is already the newest version (1.15-1ubuntu2).
libxcomposite1 is already the newest version (1:0.4.5-1build3).
libxdamage1 is already the newest version (1:1.1.6-1build1).
libxext6 is already the newest version (2:1.3.4-1build2).
libxfixes3 is already the newest version (1:6.0.0-2build1).
libxkbcommon0 is already the newest version (1.6.0-1build1).
libxrandr2 is already the newest version (2:1.5.2-2build1).
xvfb is already the newest version (2:21.1.12-1ubuntu1.5).
fonts-noto-color-emoji is already the newest version (2.047-0ubuntu0.24.04.1).
fonts-unifont is already the newest version (1:15.1.01-1build1).
libfontconfig1 is already the newest version (2.15.0-1.1ubuntu2).
libfreetype6 is already the newest version (2.13.2+dfsg-1ubuntu0.1).
xfonts-cyrillic is already the newest version (1:1.0.5+nmu1).
xfonts-scalable is already the newest version (1:1.0.3-1.3).
fonts-liberation is already the newest version (1:2.1.5-3).
fonts-ipafont-gothic is already the newest version (00303-21ubuntu1).
fonts-wqy-zenhei is already the newest version (0.9.45-8).
fonts-tlwg-loma-otf is already the newest version (1:0.7.3-1).
fonts-freefont-ttf is already the newest version (20211204+svn4273-2).
0 upgraded, 0 newly installed, 0 to remove and 35 not upgraded.
✓ Browser engine setup complete
→ Installing TUI dependencies...
✓ TUI dependencies installed
→ Setting up hermes command...
✓ Symlinked hermes → ~/.local/bin/hermes
→ ~/.local/bin already on PATH
✓ hermes command ready
→ Setting up configuration files...
→ ~/.hermes/.env already exists, keeping it
→ ~/.hermes/config.yaml already exists, keeping it
✓ Configuration directory ready: ~/.hermes/
→ Syncing bundled skills to ~/.hermes/skills/ ...
Syncing bundled skills into ~/.hermes/skills/ ...
  ↑ segment-anything-model (updated)
  ↑ obliteratus (updated)
  ↑ google-workspace (updated)
  ↑ hermes-agent (updated)
  + spotify
  ↑ research-paper-writing (updated)

Done: 1 new, 5 updated, 68 unchanged. 74 total bundled.
✓ Skills synced to ~/.hermes/skills/

→ Starting setup wizard...


┌─────────────────────────────────────────────────────────┐
│             ⚕ Hermes Agent Setup Wizard                │
├─────────────────────────────────────────────────────────┤
│  Let's configure your Hermes Agent installation.       │
│  Press Ctrl+C at any time to exit.                     │
└─────────────────────────────────────────────────────────┘



◆ OpenClaw Installation Detected
  Found OpenClaw data at /root/.openclaw
  Hermes can preview what would be imported before making any changes.

Would you like to see what can be imported? [Y/n]: y


◆ Migration Preview — 12 item(s) would be imported
  No changes have been made yet. Review the list below:

  Would import:
      soul                   → ~/.hermes/SOUL.md
      memory                 → ~/.hermes/memories/MEMORY.md
      user-profile           → ~/.hermes/memories/USER.md
      model-config           → ~/.hermes/config.yaml
      skill                  → ~/.hermes/skills/openclaw-imports/weekly-report-collector
      skill-category         → ~/.hermes/skills/openclaw-imports/DESCRIPTION.md
      daily-memory           → ~/.hermes/memories/MEMORY.md
      agent-config           → config.yaml agent/compression/terminal
      env-var                → .env HERMES_GATEWAY_TOKEN
      full-providers         → config.yaml custom_providers[qwen]
      env-var                → .env OLLAMA_API_KEY
      full-providers         → config.yaml custom_providers[ollama]

  Would skip:
      workspace-agents        No workspace target was provided
      messaging-settings      No Hermes-compatible messaging settings found
      secret-settings         No allowlisted Hermes-compatible secrets found
      discord-settings        No Discord settings found
      slack-settings          No Slack settings found
      whatsapp-settings       No WhatsApp settings found
      signal-settings         No Signal settings found
      provider-keys           No provider API keys found
      tts-config              No TTS configuration found in OpenClaw config
      command-allowlist       No allowlist patterns found
      shared-skills           No shared OpenClaw skills directories found
      tts-assets              Source directory not found
      raw-config-skip         Selected Hermes-compatible values were extracted; raw OpenClaw config was not copied.
      sensitive-skip          Contains secrets, binary state, or product-specific runtime data
      sensitive-skip          Contains secrets, binary state, or product-specific runtime data
      sensitive-skip          Contains secrets, binary state, or product-specific runtime data
      mcp-servers             No MCP servers found in OpenClaw config
      cron-jobs               No cron configuration found
      browser-config          No browser configuration found
      approvals-config        No approvals configuration found
      memory-backend          No memory backend configuration found
      ui-identity             No UI/identity configuration found
      logging-config          No logging/diagnostics configuration found

  ── Warnings ──
    ⚠ Config values — OpenClaw settings may not map 1:1 to Hermes equivalents
    ⚠ Gateway/messaging — this will configure Hermes to use your OpenClaw messaging channels
    ⚠ Instruction file — may contain OpenClaw-specific setup/restart procedures
    ⚠ Memory/context file — may reference OpenClaw-specific infrastructure

  Note: OpenClaw config values may have different semantics in Hermes.
  For example, OpenClaw's tool_call_execution: "auto" ≠ Hermes's yolo mode.
  Instruction files (.md) from OpenClaw may contain incompatible procedures.

Proceed with migration? [y/N]:y

How would you like to set up Hermes?
  ↑↓ navigate  ENTER/SPACE select  ESC cancel

 → (●) Quick setup — provider, model & messaging (recommended)
   (○) Full setup — configure everything

◆ Messaging Platforms
  Connect to messaging platforms to chat with Hermes from anywhere.
  Toggle with Space, confirm with Enter.


  ─── 💬 WeCom (Enterprise WeChat) Setup ───



    1. Go to WeCom Application → Workspace → Smart Robot -> Create smart robots
    2. Select API Mode
    3. Copy the Bot ID and Secret from the bot's credentials info
    4. The bot connects via WebSocket — no public endpoint needed

  Bot ID: aibai4rH0JYciCzmKQo6JA5pCB1WEJO7M1w
  Secret: ********************************************

    The gateway DENIES all users by default for security.
    Enter user IDs to create an allowlist, or leave empty.
  Allowed user IDs (comma-separated, or empty):白名单

⚙️ 五、初始化配置

bash

# 1. 运行配置向导
hermes setup

# 2. 配置记忆组件(推荐 Local Embedded 模式,数据本地化)
hermes memory setup

# 3. 运行健康检查
hermes doctor

# 4. 启动网关(企业微信/Telegram 等)
hermes gateway start

📦 六、配置阿里云百炼模型(可选但推荐)

bash

# 1. 在 ~/.hermes/.env 中添加 API Key
echo "DASHSCOPE_API_KEY=sk-你的百炼API_Key" >> ~/.hermes/.env

# 2. 配置模型端点
hermes model add custom \
  --base-url https://dashscope.aliyuncs.com/compatible-mode/v1 \
  --model qwen-max

# 3. 设置为主模型
hermes model set qwen-max

🖥️ 七、安装 WebUI(可选)

bash

# 1. 在 ~/.hermes 目录下克隆 WebUI 源码
cd ~/.hermes
git clone https://g.blfrp.cn/https://github.com/nesquena/hermes-webui.git

# 2. 进入目录并安装依赖
cd hermes-webui
npm install  # 若安装慢,可配置淘宝镜像:npm config set registry https://registry.npmmirror.com

# 3. 启动 WebUI(默认监听 8787 端口)
npm start