hermes - 💡(How to fix) Fix Add a first-class plugin dependency installation seam [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#15220Fetched 2026-04-25 06:23:40
View on GitHub
Comments
0
Participants
1
Timeline
4
Reactions
0
Author
Participants
Timeline (top)
labeled ×4

Hermes supports plugin-style memory providers, but Docker/source installs do not appear to expose a first-class way for a provider plugin to declare runtime Python dependencies that must be installed into the Hermes environment/image.

This forces external provider installers to patch the Dockerfile or manually install dependencies out-of-band.

Root Cause

A memory provider can be a clean plugin at the Python/package level but still need backend libraries such as vector stores, graph stores, database clients, or SDKs. Without a stable dependency installation seam, integrations either:

  • patch Dockerfile directly;
  • require users to manually run install commands after each rebuild;
  • silently fail at runtime when the provider imports but its backend dependencies are absent.

That makes provider integrations harder to maintain across upstream Hermes updates.

Fix Action

Fix / Workaround

This forces external provider installers to patch the Dockerfile or manually install dependencies out-of-band.

  • patch Dockerfile directly;

  • require users to manually run install commands after each rebuild;

  • silently fail at runtime when the provider imports but its backend dependencies are absent.

  • External memory provider dependencies can be installed without patching Hermes Dockerfile.

  • Docker rebuilds include provider dependencies deterministically.

  • Missing provider dependencies are visible as setup/doctor errors rather than late runtime import failures.

  • The mechanism is generic for all providers/plugins, not specific to one integration.

Code Example

RUN uv venv && \
    uv pip install --no-cache-dir -e ".[all]"
RAW_BUFFERClick to expand / collapse

Summary

Hermes supports plugin-style memory providers, but Docker/source installs do not appear to expose a first-class way for a provider plugin to declare runtime Python dependencies that must be installed into the Hermes environment/image.

This forces external provider installers to patch the Dockerfile or manually install dependencies out-of-band.

Why this matters

A memory provider can be a clean plugin at the Python/package level but still need backend libraries such as vector stores, graph stores, database clients, or SDKs. Without a stable dependency installation seam, integrations either:

  • patch Dockerfile directly;
  • require users to manually run install commands after each rebuild;
  • silently fail at runtime when the provider imports but its backend dependencies are absent.

That makes provider integrations harder to maintain across upstream Hermes updates.

Current behavior in vanilla Hermes

The Dockerfile installs Hermes itself:

RUN uv venv && \
    uv pip install --no-cache-dir -e ".[all]"

There is no obvious provider/plugin dependency manifest hook consumed during Docker image build or source setup.

Requested behavior

Please consider a generic plugin dependency seam, for example one of:

  • a provider/plugin manifest field listing Python packages/extras;
  • a requirements.txt/pyproject discovery convention for installed plugins;
  • a documented build arg or install hook for runtime plugin dependencies;
  • a first-class CLI command that installs provider dependencies into the active Hermes runtime.

Suggested acceptance criteria

  • External memory provider dependencies can be installed without patching Hermes Dockerfile.
  • Docker rebuilds include provider dependencies deterministically.
  • Missing provider dependencies are visible as setup/doctor errors rather than late runtime import failures.
  • The mechanism is generic for all providers/plugins, not specific to one integration.

extent analysis

TL;DR

Implement a generic plugin dependency seam to allow external memory providers to declare and install runtime Python dependencies without patching the Dockerfile.

Guidance

  • Introduce a provider/plugin manifest field to list Python packages/extras, enabling Hermes to install dependencies during the Docker image build or source setup.
  • Explore using a requirements.txt or pyproject discovery convention for installed plugins to automate dependency installation.
  • Consider adding a documented build arg or install hook for runtime plugin dependencies to provide flexibility.
  • Develop a first-class CLI command to install provider dependencies into the active Hermes runtime for easier management.

Example

# Example of a potential provider manifest field in the Dockerfile
ENV PROVIDER_DEPENDENCIES=vector-store,graph-store,database-client
RUN pip install ${PROVIDER_DEPENDENCIES}

Notes

The solution should be generic and applicable to all providers/plugins, avoiding integration-specific workarounds. The chosen approach should ensure deterministic installation of provider dependencies during Docker rebuilds and provide clear error messages for missing dependencies.

Recommendation

Apply a workaround by introducing a provider/plugin manifest field or using a requirements.txt discovery convention, as these approaches seem to be the most straightforward and flexible solutions to the problem.

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