hermes - ✅(Solved) Fix [Bug]: 使用 Docker compose 全新安装 hermes 时未自动创建 .local 文件夹 [2 pull requests, 1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
NousResearch/hermes-agent#18184Fetched 2026-05-02 05:50:01
View on GitHub
Comments
0
Participants
1
Timeline
7
Reactions
0
Author
Participants
Timeline (top)
labeled ×4cross-referenced ×2referenced ×1

Error Message

Additional Logs / Traceback (optional)

Root Cause

Root Cause Analysis (optional)

Fix Action

Fixed

PR fix notes

PR #18191: fix(docker): expose hermes in volume local bin

Description (problem / solution / changelog)

Summary

  • create $HERMES_HOME/.local/bin during Docker entrypoint bootstrap
  • install a hermes launcher symlink to the image venv so later docker compose exec ... bash sessions can resolve hermes
  • add a Docker entrypoint contract test for the fresh-volume launcher path

Root cause

The Docker image adds /opt/data/.local/bin to PATH, but a fresh mounted Docker volume starts without that directory or a hermes launcher. The container startup path works because the entrypoint activates /opt/hermes/.venv, but later terminal sessions entered with docker compose exec do not rerun the entrypoint activation, so which hermes can return nothing.

Fix

During entrypoint volume bootstrap, create $HERMES_HOME/.local/bin and populate $HERMES_HOME/.local/bin/hermes as a symlink to ${INSTALL_DIR}/.venv/bin/hermes, while preserving any existing non-symlink user-provided launcher.

Regression coverage

Added tests/tools/test_docker_entrypoint.py to assert the entrypoint creates the volume-local bin directory and launcher pointing at the packaged venv hermes executable.

Testing

  • scripts/run_tests.sh tests/tools/test_docker_entrypoint.py -q (RED before fix)
  • scripts/run_tests.sh tests/tools/test_docker_entrypoint.py tests/tools/test_dockerfile_pid1_reaping.py -q (GREEN: 7 passed)
  • bash -n docker/entrypoint.sh

Closes #18184

Changed files

  • docker/entrypoint.sh (modified, +9/-1)
  • tests/tools/test_docker_entrypoint.py (added, +32/-0)

PR #17246: fix: resolve 7 identified issues [automated]

Description (problem / solution / changelog)

Summary

This automated PR resolves 7 identified open issues with focus on bugs, cross-platform reliability, and operational hardening.

Fixed issues

  1. #18594get_hermes_home() now fails fast in profile-scoped subprocesses when HERMES_HOME is missing (prevents silent cross-profile writes).
  2. #18588 — context compression now retries on the main model when summary_model_override is unset and summary model path fails.
  3. #18586delegate_task now passes target_model into runtime provider resolution, fixing wrong api_mode/base_url for providers like opencode-go.
  4. #18187 — Discord adapter now closes any existing bot client before reconnecting, preventing duplicate websocket consumers and double responses.
  5. #18221 — QQBot _open_ws() now bounds stale websocket/session close operations with timeouts to avoid reconnect hangs.
  6. #18437 — Weixin direct send now avoids reusing live adapters across event loops; falls back safely to one-shot adapter/session path.
  7. #18485 — Slack channel directory now warns once per team and downgrades repeated failures to debug, reducing recurring gateway log noise.

Files changed

  • hermes_constants.py
  • agent/context_compressor.py
  • tools/delegate_tool.py
  • gateway/platforms/discord.py
  • gateway/platforms/qqbot/adapter.py
  • gateway/platforms/weixin.py
  • gateway/channel_directory.py

Notes

  • Commits were created with descriptive English messages.
  • Push was performed at the end after all fixes were committed.

Changed files

  • Dockerfile (modified, +2/-1)
  • acp_adapter/session.py (modified, +12/-0)
  • agent/auxiliary_client.py (modified, +280/-28)
  • agent/context_compressor.py (modified, +496/-52)
  • agent/title_generator.py (modified, +2/-2)
  • agent/transports/chat_completions.py (modified, +14/-0)
  • agent/usage_pricing.py (modified, +4/-0)
  • cli-config.yaml.example (modified, +5/-0)
  • cli.py (modified, +27/-3)
  • cron/scheduler.py (modified, +8/-2)
  • docker/entrypoint.sh (modified, +5/-1)
  • gateway/channel_directory.py (modified, +14/-4)
  • gateway/platforms/discord.py (modified, +33/-7)
  • gateway/platforms/email.py (modified, +12/-2)
  • gateway/platforms/feishu.py (modified, +34/-1)
  • gateway/platforms/qqbot/adapter.py (modified, +8/-2)
  • gateway/platforms/telegram_network.py (modified, +7/-2)
  • gateway/platforms/weixin.py (modified, +10/-1)
  • gateway/run.py (modified, +99/-32)
  • gateway/status.py (modified, +8/-1)
  • hermes_cli/auth.py (modified, +1/-1)
  • hermes_cli/commands.py (modified, +1/-1)
  • hermes_cli/config.py (modified, +271/-40)
  • hermes_cli/copilot_auth.py (modified, +1/-1)
  • hermes_cli/gateway.py (modified, +16/-13)
  • hermes_cli/main.py (modified, +69/-3)
  • hermes_cli/memory_setup.py (modified, +1/-1)
  • hermes_cli/model_switch.py (modified, +6/-1)
  • hermes_cli/models.py (modified, +59/-1)
  • hermes_cli/profiles.py (modified, +16/-3)
  • hermes_cli/runtime_provider.py (modified, +16/-13)
  • hermes_cli/setup.py (modified, +8/-2)
  • hermes_cli/slack_cli.py (modified, +1/-2)
  • hermes_cli/status.py (modified, +17/-2)
  • hermes_cli/web_server.py (modified, +1/-1)
  • hermes_constants.py (modified, +16/-3)
  • model_tools.py (modified, +44/-13)
  • run_agent.py (modified, +389/-82)
  • setup-hermes.sh (modified, +23/-12)
  • skills/red-teaming/godmode/scripts/load_godmode.py (modified, +9/-8)
  • tests/agent/test_context_compressor.py (modified, +389/-0)
  • tests/gateway/test_compress_command.py (modified, +49/-0)
  • tests/run_agent/test_413_compression.py (modified, +81/-1)
  • tests/run_agent/test_compression_boundary_hook.py (modified, +42/-0)
  • tests/run_agent/test_run_agent.py (modified, +100/-13)
  • tests/tools/test_skill_manager_tool.py (modified, +270/-0)
  • tools/approval.py (modified, +1/-1)
  • tools/delegate_tool.py (modified, +4/-1)
  • tools/environments/docker.py (modified, +36/-5)
  • tools/environments/local.py (modified, +7/-1)
  • tools/file_operations.py (modified, +70/-67)
  • tools/file_tools.py (modified, +4/-1)
  • tools/send_message_tool.py (modified, +66/-2)
  • tools/session_search_tool.py (modified, +2/-2)
  • tools/skill_manager_tool.py (modified, +82/-21)
  • tools/skills_tool.py (modified, +13/-1)
  • tools/terminal_tool.py (modified, +6/-0)
  • tools/tool_backend_helpers.py (modified, +15/-5)
  • tools/tts_tool.py (modified, +27/-16)
  • tools/voice_mode.py (modified, +23/-10)
  • tui_gateway/server.py (modified, +5/-3)
  • ui-tui/src/app/turnController.ts (modified, +1/-1)
  • ui-tui/src/app/useInputHandlers.ts (modified, +8/-3)
  • ui-tui/src/app/useSessionLifecycle.ts (modified, +1/-1)
  • ui-tui/src/gatewayTypes.ts (modified, +1/-0)
  • utils.py (modified, +9/-0)
  • uv.lock (modified, +161/-2)

Code Example


---
RAW_BUFFERClick to expand / collapse

Bug Description

使用 Docker compose 全新安装 hermes 时,映射目录没有 .local 文件夹,期望安装时能自动创建该文件夹。此问题导致即使有环境变量也无法在docker终端使用hermes命令。

Steps to Reproduce

  1. 准备好 Docker 环境;
  2. 使用 Docker compose 进行 hermes 全新安装;
  3. 安装完成后检查,发现无 .local 文件夹生成。
  4. docker镜像版本V2026.4.30
  5. which hermes 无任何输出。

Expected Behavior

使用 Docker compose 全新安装 hermes 时,应自动创建 .local 文件夹和子文件夹。

Actual Behavior

使用 Docker compose 全新安装时,未创建 .local 文件夹及子文件夹。

Affected Component

Setup / Installation

Messaging Platform (if gateway-related)

No response

Debug Report

Operating System

fnos

Python Version

No response

Hermes Version

0.12

Additional Logs / Traceback (optional)

Root Cause Analysis (optional)

No response

Proposed Fix (optional)

No response

Are you willing to submit a PR for this?

  • I'd like to fix this myself and submit a PR

extent analysis

TL;DR

The issue can be fixed by manually creating the missing .local directory after installing Hermes using Docker Compose.

Guidance

  • Verify that the Docker Compose installation process does not create the .local directory by default.
  • Check the Hermes documentation to see if there are any environment variables or configuration options that can be set to create the .local directory automatically.
  • Manually create the .local directory and its subdirectories after installing Hermes using Docker Compose.
  • Test the hermes command in the Docker terminal to ensure it works as expected after creating the .local directory.

Example

No code snippet is provided as it is not clearly supported by the issue.

Notes

The issue seems to be specific to the Hermes installation process using Docker Compose, and the solution may vary depending on the specific version of Hermes and Docker Compose being used.

Recommendation

Apply workaround: Manually create the .local directory after installing Hermes using Docker Compose, as there is no clear indication that an upgrade to a fixed version is available.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

hermes - ✅(Solved) Fix [Bug]: 使用 Docker compose 全新安装 hermes 时未自动创建 .local 文件夹 [2 pull requests, 1 participants]