Skip to content

fix(docker): build web/ dashboard assets in image#12180

Merged
alt-glitch merged 1 commit into
NousResearch:mainfrom
bluefishs:fix/docker-web-build
Apr 18, 2026
Merged

fix(docker): build web/ dashboard assets in image#12180
alt-glitch merged 1 commit into
NousResearch:mainfrom
bluefishs:fix/docker-web-build

Conversation

@bluefishs

Copy link
Copy Markdown
Contributor

What does this PR do?

The Dockerfile installs root-level npm dependencies (for Playwright) and the whatsapp-bridge bundle, but never builds the web/ Vite project. As a result, hermes dashboard starts FastAPI on :9119 but serves a broken SPA because hermes_cli/web_dist/ is empty and requests to /assets/index-<hash>.js return 404.

This PR adds a RUN step that installs web/ dependencies and runs npm run build, so the Vite output is baked into the image.

Related Issue

Fixes #12177

Type of Change

  • 🐛 Bug fix (non-breaking change that fixes an issue)

Changes Made

  • Dockerfile: add a RUN cd /opt/hermes/web && npm install --prefer-offline --no-audit && npm run build && npm cache clean --force layer between the existing npm install block and the chown step.

How to Test

Before:

docker build -t hermes-repro -f Dockerfile .
docker run --rm -p 9119:9119 hermes-repro hermes dashboard
curl -sI http://localhost:9119/assets/ | head -1   # -> 404

After this patch: /assets/ returns the Vite-built asset path (non-404), and the dashboard SPA loads cleanly.

Checklist

Code

Cross-platform

  • No OS-specific code paths added; the added step is standard npm install && npm run build identical to the existing adjacent whatsapp-bridge layer.

The Dockerfile installs root-level npm dependencies (for Playwright) and the
whatsapp-bridge bundle, but never builds the web/ Vite project. As a result,
'hermes dashboard' starts FastAPI on :9119 but serves a broken SPA because
hermes_cli/web_dist/ is empty and requests to /assets/index-<hash>.js 404.

Add a build step inside web/ so the Vite output is baked into the image.

Reproduce (before):
  docker build -t hermes-repro -f Dockerfile .
  docker run --rm -p 9119:9119 hermes-repro hermes dashboard
  curl -sI http://localhost:9119/assets/ | head -1   # -> 404

After: /assets/ returns the built asset path.
@alt-glitch alt-glitch merged commit b0bde98 into NousResearch:main Apr 18, 2026
3 of 4 checks passed
@alt-glitch

Copy link
Copy Markdown
Collaborator

thanks for your PR @bluefishs!

Blazenetic added a commit to Blazenetic/hermes-agent that referenced this pull request Apr 19, 2026
- Add repeat count field to cron job creation
- Add skills field with multi-select capability
- Add model override dropdown
- Add toolset toggle endpoint
- Add skill detail inspection modal
- Fix pre-existing bug: @api.post > @app.post for cron jobs
- Add toggle switches to toolset cards in SkillsPage
- Add skill inspection modal with description, tags, path, linked files

Closes NousResearch#12180, NousResearch#12194

Includes comprehensive documentation and testing setup
bluefishs added a commit to bluefishs/hermes-agent that referenced this pull request Apr 24, 2026
- docs/plans/upstream-sync-cadence.md: per-release-tag sync rhythm
  (replacing monthly), check command, conflict handling, escalation
- docs/plans/upstream-feature-eval-2026-04-18.md: evaluate /steer
  (adopt), execute_code project/strict (default accept, re-eval with
  ADR-0017), Tool Gateway (decline)
- docs/plans/upstream-pr-web-build.md: PR draft and checklist used to
  submit NousResearch#12180 and NousResearch#12181
ulasbilgen pushed a commit to ulasbilgen/hermes-adhd-agent that referenced this pull request May 1, 2026
The Dockerfile installs root-level npm dependencies (for Playwright) and the
whatsapp-bridge bundle, but never builds the web/ Vite project. As a result,
'hermes dashboard' starts FastAPI on :9119 but serves a broken SPA because
hermes_cli/web_dist/ is empty and requests to /assets/index-<hash>.js 404.

Add a build step inside web/ so the Vite output is baked into the image.

Reproduce (before):
  docker build -t hermes-repro -f Dockerfile .
  docker run --rm -p 9119:9119 hermes-repro hermes dashboard
  curl -sI http://localhost:9119/assets/ | head -1   # -> 404

After: /assets/ returns the built asset path.
aj-nt pushed a commit to aj-nt/hermes-agent that referenced this pull request May 1, 2026
The Dockerfile installs root-level npm dependencies (for Playwright) and the
whatsapp-bridge bundle, but never builds the web/ Vite project. As a result,
'hermes dashboard' starts FastAPI on :9119 but serves a broken SPA because
hermes_cli/web_dist/ is empty and requests to /assets/index-<hash>.js 404.

Add a build step inside web/ so the Vite output is baked into the image.

Reproduce (before):
  docker build -t hermes-repro -f Dockerfile .
  docker run --rm -p 9119:9119 hermes-repro hermes dashboard
  curl -sI http://localhost:9119/assets/ | head -1   # -> 404

After: /assets/ returns the built asset path.
02356abc pushed a commit to 02356abc/hermes-agent that referenced this pull request May 14, 2026
The Dockerfile installs root-level npm dependencies (for Playwright) and the
whatsapp-bridge bundle, but never builds the web/ Vite project. As a result,
'hermes dashboard' starts FastAPI on :9119 but serves a broken SPA because
hermes_cli/web_dist/ is empty and requests to /assets/index-<hash>.js 404.

Add a build step inside web/ so the Vite output is baked into the image.

Reproduce (before):
  docker build -t hermes-repro -f Dockerfile .
  docker run --rm -p 9119:9119 hermes-repro hermes dashboard
  curl -sI http://localhost:9119/assets/ | head -1   # -> 404

After: /assets/ returns the built asset path.
gweeteve pushed a commit to gweeteve/hermes-agent that referenced this pull request Jun 2, 2026
The Dockerfile installs root-level npm dependencies (for Playwright) and the
whatsapp-bridge bundle, but never builds the web/ Vite project. As a result,
'hermes dashboard' starts FastAPI on :9119 but serves a broken SPA because
hermes_cli/web_dist/ is empty and requests to /assets/index-<hash>.js 404.

Add a build step inside web/ so the Vite output is baked into the image.

Reproduce (before):
  docker build -t hermes-repro -f Dockerfile .
  docker run --rm -p 9119:9119 hermes-repro hermes dashboard
  curl -sI http://localhost:9119/assets/ | head -1   # -> 404

After: /assets/ returns the built asset path.
Egavasyug pushed a commit to Egavasyug/hermes-agent that referenced this pull request Jun 10, 2026
The Dockerfile installs root-level npm dependencies (for Playwright) and the
whatsapp-bridge bundle, but never builds the web/ Vite project. As a result,
'hermes dashboard' starts FastAPI on :9119 but serves a broken SPA because
hermes_cli/web_dist/ is empty and requests to /assets/index-<hash>.js 404.

Add a build step inside web/ so the Vite output is baked into the image.

Reproduce (before):
  docker build -t hermes-repro -f Dockerfile .
  docker run --rm -p 9119:9119 hermes-repro hermes dashboard
  curl -sI http://localhost:9119/assets/ | head -1   # -> 404

After: /assets/ returns the built asset path.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Docker image 'hermes dashboard' 404s because web/ assets are not built

2 participants