hermes - ✅(Solved) Fix Docker: add complete image and publish workflow [1 pull requests]

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…

The current Docker image is a lean/default image, but Hermes and bundled skills often expect additional tooling to be available out of the box.

We should add a second official Docker image variant, complete, plus a dedicated GitHub Actions workflow to publish it.

The goal is to keep the existing image and publish workflow unchanged, while offering an opt-in image that bundles the most useful extra CLI and lightweight skill dependencies for a more VPS/workstation-like experience.

Root Cause

The current Docker image is a lean/default image, but Hermes and bundled skills often expect additional tooling to be available out of the box.

We should add a second official Docker image variant, complete, plus a dedicated GitHub Actions workflow to publish it.

The goal is to keep the existing image and publish workflow unchanged, while offering an opt-in image that bundles the most useful extra CLI and lightweight skill dependencies for a more VPS/workstation-like experience.

Fix Action

Fixed

PR fix notes

PR #13147: Add complete Docker image and publish workflow

Description (problem / solution / changelog)

Summary

This adds an opt-in complete Docker image variant for Hermes users who want a fuller container environment without changing the current lean/default image.

The existing Dockerfile and Docker publish workflow stay as-is. This PR introduces a parallel complete path with its own image tags and workflow.

What changed

New Dockerfile.complete

  • starts from the current Dockerfile layout and behavior
  • keeps the same base image, entrypoint model, web build, Playwright setup, and Hermes install flow
  • adds these global npm CLIs:
    • @anthropic-ai/claude-code
    • @google/gemini-cli
    • @openai/codex
    • opencode-ai@latest
  • adds these lightweight Python packages used by bundled skills:
    • pygount
    • jupyterlab
    • youtube-transcript-api
    • markitdown[pptx]
    • Pillow
    • python-docx
    • pyfiglet

New publish workflow

Adds .github/workflows/docker-publish-complete.yml which mirrors the existing Docker publish workflow, but builds from Dockerfile.complete and publishes separate tags:

  • nousresearch/hermes-agent:complete-latest from main
  • nousresearch/hermes-agent:complete-<release-tag> from releases

The workflow also includes smoke checks for:

  • container startup
  • hermes --help
  • claude, gemini, codex, and opencode on PATH
  • Python imports for pygount, jupyterlab, youtube_transcript_api, PIL, and docx
  • python -m markitdown --help

Docker docs update

Updates the Docker guide to explain:

  • latest remains the lean/default image
  • complete-latest is the fuller opt-in variant
  • which npm CLIs and Python packages are added in complete
  • what is intentionally excluded from this pass

Why this shape

The goal is to improve the Docker experience for Hermes users who need more built-in tooling, without turning the default image into a large general-purpose environment.

This keeps the current default image stable and introduces a separate published variant for the fuller setup.

Explicit exclusions

This PR does not add:

  • extra system packages beyond the current base image
  • vendor CLIs such as Docker, GitHub CLI, or Cosign
  • heavy ML / OCR / LaTeX / Java stacks
  • heavyweight optional-skill-specific tooling
  • pptxgenjs in this pass

Validation

I did not run a local Docker build or workflow validation in this workspace.

Closes #13141

Changed files

  • .github/workflows/docker-publish-complete.yml (added, +129/-0)
  • Dockerfile.complete (added, +67/-0)
  • website/docs/user-guide/docker.md (modified, +28/-0)
RAW_BUFFERClick to expand / collapse

Summary

The current Docker image is a lean/default image, but Hermes and bundled skills often expect additional tooling to be available out of the box.

We should add a second official Docker image variant, complete, plus a dedicated GitHub Actions workflow to publish it.

The goal is to keep the existing image and publish workflow unchanged, while offering an opt-in image that bundles the most useful extra CLI and lightweight skill dependencies for a more VPS/workstation-like experience.

Problem

Today:

  • the default Docker image stays intentionally lean
  • Hermes works in Docker, but some common built-in-skill workflows require extra setup
  • users who want a fuller environment have to install additional tooling manually
  • there is no official published complete image tag or workflow for it

This makes Docker less convenient for users who want a more complete Hermes environment without manually extending the image themselves.

Proposed scope

Add a new Dockerfile.complete that starts from the current Dockerfile and only adds:

Global npm CLIs

  • @anthropic-ai/claude-code
  • @google/gemini-cli
  • @openai/codex
  • opencode-ai@latest

Lightweight Python packages used by bundled skills

  • pygount
  • jupyterlab
  • youtube-transcript-api
  • markitdown[pptx]
  • Pillow
  • python-docx
  • pyfiglet

Also add a dedicated GitHub Actions workflow to build and publish that image.

Workflow requirements

Add .github/workflows/docker-publish-complete.yml that:

  • mirrors the existing Docker publish workflow structure
  • builds from Dockerfile.complete
  • publishes nousresearch/hermes-agent:complete-latest from main
  • publishes nousresearch/hermes-agent:complete-<release-tag> from releases
  • triggers on Docker, Python, package-lock, workflow, and skills/** changes relevant to this image

Acceptance criteria

  • Dockerfile.complete exists and is based on the current Dockerfile
  • the existing lean/default image remains unchanged
  • the complete image installs the four npm CLIs listed above
  • the complete image installs the listed lightweight Python packages
  • a dedicated publish workflow exists for complete-* tags
  • the workflow includes smoke tests for:
    • container startup
    • hermes --help
    • claude, gemini, codex, and opencode on PATH
    • imports for pygount, jupyterlab, youtube_transcript_api, PIL, and docx
    • python -m markitdown --help
  • Docker docs explain the difference between latest and complete-latest

Non-goals

This issue does not require:

  • extra system packages beyond the current base image
  • vendor CLI binaries like Docker, GitHub CLI, or Cosign
  • heavy ML / OCR / LaTeX / Java stacks
  • optional-skill-specific heavyweight tooling
  • pptxgenjs in this pass

Notes

The intent is a constrained complete variant, not a maximal image. The existing image stays the default, and the fuller environment is exposed through separate complete-* tags.

extent analysis

TL;DR

Create a new Dockerfile.complete that extends the current Dockerfile and adds required dependencies, then set up a GitHub Actions workflow to build and publish the complete image variant.

Guidance

  • Create a new Dockerfile.complete that starts from the current Dockerfile and adds the specified global npm CLIs and lightweight Python packages.
  • Set up a dedicated GitHub Actions workflow (docker-publish-complete.yml) that mirrors the existing Docker publish workflow structure, builds from Dockerfile.complete, and publishes the complete image variant.
  • Ensure the workflow includes smoke tests for container startup, CLI tools, and Python package imports.
  • Update Docker documentation to explain the difference between latest and complete-latest image tags.

Example

# Dockerfile.complete
FROM current-docker-image

# Install global npm CLIs
RUN npm install -g @anthropic-ai/claude-code @google/gemini-cli @openai/codex opencode-ai@latest

# Install lightweight Python packages
RUN pip install pygount jupyterlab youtube-transcript-api markitdown[pptx] Pillow python-docx pyfiglet

Notes

The goal is to create a constrained complete image variant that provides a more comprehensive environment without adding unnecessary dependencies. The existing lean image remains unchanged, and the fuller environment is exposed through separate complete-* tags.

Recommendation

Apply workaround by creating the new Dockerfile.complete and setting up the dedicated GitHub Actions workflow, as this will provide the required dependencies for a more complete Hermes environment without modifying the existing image.

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 Docker: add complete image and publish workflow [1 pull requests]