hermes - 💡(How to fix) Fix Docker: Chat tab broken — npm install fails with EACCES due to root-owned node_modules [2 comments, 2 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#18800Fetched 2026-05-03 04:54:13
View on GitHub
Comments
2
Participants
2
Timeline
6
Reactions
1
Author
Participants
Timeline (top)
labeled ×4commented ×2

When running the dashboard via Docker with HERMES_DASHBOARD_TUI=1, the Chat tab immediately shows [session ended] and no input is accepted.

Root Cause

/opt/hermes/ui-tui and its subdirectories (including packages/hermes-ink/node_modules) are owned by root in the Docker image, but the dashboard process runs as uid 10000 (hermes) after privilege drop in entrypoint.sh.

When the Chat tab opens a WebSocket connection, _make_tui_argv() in hermes_cli/main.py calls npm install in /opt/hermes/ui-tui. This fails with:

npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'mkdir',
npm ERR!   path: '/opt/hermes/ui-tui/packages/hermes-ink/node_modules/@esbuild/aix-ppc64'

_make_tui_argv then calls sys.exit(1), which is caught as SystemExit in pty_ws() (web_server.py line ~3007) and results in the WebSocket closing immediately — shown to the user as [session ended].

The same issue affects /opt/hermes/node_modules.

Fix Action

Fix

Add a chown in the Dockerfile before the image is finalized:

RUN chown -R hermes:hermes /opt/hermes/ui-tui /opt/hermes/node_modules

This ensures the hermes user (uid 10000) can write to node_modules when npm install runs at Chat tab startup.

Code Example

npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'mkdir',
npm ERR!   path: '/opt/hermes/ui-tui/packages/hermes-ink/node_modules/@esbuild/aix-ppc64'

---

RUN chown -R hermes:hermes /opt/hermes/ui-tui /opt/hermes/node_modules
RAW_BUFFERClick to expand / collapse

Summary

When running the dashboard via Docker with HERMES_DASHBOARD_TUI=1, the Chat tab immediately shows [session ended] and no input is accepted.

Root Cause

/opt/hermes/ui-tui and its subdirectories (including packages/hermes-ink/node_modules) are owned by root in the Docker image, but the dashboard process runs as uid 10000 (hermes) after privilege drop in entrypoint.sh.

When the Chat tab opens a WebSocket connection, _make_tui_argv() in hermes_cli/main.py calls npm install in /opt/hermes/ui-tui. This fails with:

npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'mkdir',
npm ERR!   path: '/opt/hermes/ui-tui/packages/hermes-ink/node_modules/@esbuild/aix-ppc64'

_make_tui_argv then calls sys.exit(1), which is caught as SystemExit in pty_ws() (web_server.py line ~3007) and results in the WebSocket closing immediately — shown to the user as [session ended].

The same issue affects /opt/hermes/node_modules.

Steps to Reproduce

  1. Run hermes-dashboard via Docker Compose (standard setup from docs)
  2. Set HERMES_DASHBOARD_TUI=1
  3. Open the dashboard and click the Chat tab
  4. Observe [session ended] — typing is not possible

Fix

Add a chown in the Dockerfile before the image is finalized:

RUN chown -R hermes:hermes /opt/hermes/ui-tui /opt/hermes/node_modules

This ensures the hermes user (uid 10000) can write to node_modules when npm install runs at Chat tab startup.

Environment

  • Image: nousresearch/hermes-agent:latest (v0.12.0, 2026.4.30)
  • HERMES_DASHBOARD_TUI=1
  • Linux/amd64, Docker Compose

extent analysis

TL;DR

The issue can be fixed by adding a chown command in the Dockerfile to change the ownership of /opt/hermes/ui-tui and /opt/hermes/node_modules to the hermes user.

Guidance

  • Verify that the hermes user has the correct uid (10000) in the Docker image.
  • Check the Dockerfile for any existing chown or chmod commands that may be overriding the suggested fix.
  • Consider adding a chmod command to ensure the hermes user has write permissions to the affected directories.
  • Test the fix by rebuilding the Docker image and running the dashboard with HERMES_DASHBOARD_TUI=1.

Example

RUN chown -R hermes:hermes /opt/hermes/ui-tui /opt/hermes/node_modules

This command changes the ownership of the specified directories to the hermes user, allowing npm install to run successfully.

Notes

This fix assumes that the hermes user is the intended owner of the affected directories. If the user or group ownership needs to be different, the chown command should be adjusted accordingly.

Recommendation

Apply the suggested chown command in the Dockerfile, as it directly addresses the root cause of the issue and ensures the hermes user has the necessary permissions to run npm install.

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 - 💡(How to fix) Fix Docker: Chat tab broken — npm install fails with EACCES due to root-owned node_modules [2 comments, 2 participants]