方案专为国内网络环境优化,全程使用清华源 + 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-essentialbash
# 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

bash
# 1.设置 uv 永久镜像源
echo 'export UV_DEFAULT_INDEX="https://pypi.tuna.tsinghua.edu.cn/simple"' >> ~/.bashrc
source ~/.bashrcbash
# 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 startbash
# 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-maxbash
# 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