fix(docker): install upstream optional dependencies #30

Merged
mehalter merged 4 commits from clawlter/hermes-agent-docker:fix/gateway-deps into main 2026-05-17 16:35:11 -04:00
Contributor

Summary

  • install the editable upstream Hermes checkout with every optional dependency extra declared by the pinned upstream pyproject.toml
  • keep README install documentation aligned with that eager-dependency policy

Root cause

Upstream Hermes changed the meaning of [all]: it is now a curated production extra, not literally every optional dependency. The official upstream Dockerfile now uses uv sync --extra all and compensates by making .venv writable so tools/lazy_deps.py can install platform/provider backends at first use.

This image is intentionally a ready-to-run gateway/server image, so relying on first-boot lazy installs is not the desired behavior. Generating the editable install spec from upstream pyproject.toml keeps the image aligned with new upstream extra names while still installing optional dependencies out of the gate.

For HERMES_REF=v2026.5.16, the generated spec resolves to all 34 optional extras, including messaging, matrix, dingtalk, feishu, voice, edge-tts, tts-premium, provider/search extras, and the existing curated all extra.

Testing

  • bash -n entrypoint.sh docker-wrapper.sh healthcheck.sh
  • parsed Dockerfile and upstream pyproject.toml for HERMES_REF=v2026.5.16 to verify the Dockerfile derives HERMES_EXTRAS from every optional dependency extra
  • uv pip install --dry-run -e "$EXTRA_SPEC" against the upstream v2026.5.16 source with the generated all-extras spec
    • resolved 206 packages
    • would install 206 packages
  • git diff --check

I did not run a Docker build in this environment because Docker use requires explicit approval.

## Summary - install the editable upstream Hermes checkout with every optional dependency extra declared by the pinned upstream `pyproject.toml` - keep README install documentation aligned with that eager-dependency policy ## Root cause Upstream Hermes changed the meaning of `[all]`: it is now a curated production extra, not literally every optional dependency. The official upstream Dockerfile now uses `uv sync --extra all` and compensates by making `.venv` writable so `tools/lazy_deps.py` can install platform/provider backends at first use. This image is intentionally a ready-to-run gateway/server image, so relying on first-boot lazy installs is not the desired behavior. Generating the editable install spec from upstream `pyproject.toml` keeps the image aligned with new upstream extra names while still installing optional dependencies out of the gate. For `HERMES_REF=v2026.5.16`, the generated spec resolves to all 34 optional extras, including `messaging`, `matrix`, `dingtalk`, `feishu`, `voice`, `edge-tts`, `tts-premium`, provider/search extras, and the existing curated `all` extra. ## Testing - `bash -n entrypoint.sh docker-wrapper.sh healthcheck.sh` - parsed `Dockerfile` and upstream `pyproject.toml` for `HERMES_REF=v2026.5.16` to verify the Dockerfile derives `HERMES_EXTRAS` from every optional dependency extra - `uv pip install --dry-run -e "$EXTRA_SPEC"` against the upstream `v2026.5.16` source with the generated all-extras spec - resolved 206 packages - would install 206 packages - `git diff --check` I did not run a Docker build in this environment because Docker use requires explicit approval.
fix(docker): install messaging gateway dependencies
Some checks failed
Build Docker Image / build (pull_request) Has been cancelled
bfe88845dc
clawlter force-pushed fix/gateway-deps from bfe88845dc
Some checks failed
Build Docker Image / build (pull_request) Has been cancelled
to 310a93f741
Some checks failed
Build Docker Image / build (pull_request) Failing after 16s
2026-05-16 18:31:15 -04:00
Compare
clawlter changed title from fix(docker): install messaging gateway dependencies to fix(docker): install upstream optional dependencies 2026-05-16 18:31:32 -04:00
fix(docker): use system python for Hermes venv
Some checks failed
Build Docker Image / build (pull_request) Failing after 15s
a754927001
fix(docker): sync Hermes deps from lockfile
Some checks failed
Build Docker Image / build (pull_request) Failing after 16s
e857a15332
fix(docker): install all Hermes optional extras
Some checks failed
Build Docker Image / build (pull_request) Failing after 13s
Build Docker Image / build (push) Successful in 29m16s
19d1639411
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
mehalter/hermes-agent-docker!30
No description provided.