Skip to content

fix(packaging): ship hermes_cli subpackages in wheel - #34811

Merged
teknium1 merged 1 commit into
mainfrom
hermes/hermes-3d9c0155
May 29, 2026
Merged

fix(packaging): ship hermes_cli subpackages in wheel#34811
teknium1 merged 1 commit into
mainfrom
hermes/hermes-3d9c0155

Conversation

@teknium1

@teknium1 teknium1 commented May 29, 2026

Copy link
Copy Markdown
Contributor

Summary

Wheel installs now ship hermes_cli's subpackages, so the dashboard starts instead of dying on ModuleNotFoundError: No module named 'hermes_cli.dashboard_auth' (#34701).

Root cause: [tool.setuptools.packages.find] listed hermes_cli without the hermes_cli.* wildcard. Every other top-level package is listed with its wildcard (agent.*, tools.*, gateway.*). setuptools shipped hermes_cli/*.py but dropped the dashboard_auth and proxy subpackages. Latent for ages — nothing the runtime imported lived in a hermes_cli subpackage until dashboard_auth landed (imported at module level in web_server.py). hermes proxy was equally broken in installed wheels.

This is the same bug class as #34034 / #28149 (hand-maintained packaging lists silently shedding files). The blessed Docker image is the wheel, and the in-dashboard updater reinstalls it — so this bit the official container path, not just freelance pip install.

Changes

  • pyproject.toml: add "hermes_cli.*" to packages.find include.
  • tests/test_packaging_metadata.py: regression test that drives setuptools' own find_packages against the live tree — any on-disk subpackage dropped from the include list now fails CI.

Validation

Before fix After fix
find_packages(include=...) for hermes_cli ['hermes_cli'] hermes_cli, .dashboard_auth, .proxy, .proxy.adapters
subpackage .py files in built wheel 0 18
regression guard FAILS, names the 3 dropped subpackages passes

Built a real wheel and confirmed all 18 subpackage files land. Guard verified both directions (fails on the bug, passes on the fix).

Not in scope: the reporter's /opt/hermes/.venv UID-10000 write-permission issue is a separate area/docker image concern.

Fixes #34701

Infographic

ship-hermes_cli-subpackages

[tool.setuptools.packages.find] listed 'hermes_cli' without the
'hermes_cli.*' wildcard, so the wheel shipped hermes_cli/*.py but
dropped the dashboard_auth and proxy subpackages. The dashboard died
on every install with ModuleNotFoundError: No module named
'hermes_cli.dashboard_auth' (#34701); 'hermes proxy' was equally
broken.

Add the wildcard, and add a regression test that drives setuptools'
own find_packages against the live tree so any future subpackage
dropped from the include list fails CI instead of a user's container.
@teknium1
teknium1 requested a review from a team May 29, 2026 19:23
@alt-glitch alt-glitch added type/bug Something isn't working P1 High — major feature broken, no workaround comp/cli CLI entry point, hermes_cli/, setup wizard area/docker Docker image, Compose, packaging labels May 29, 2026
@teknium1
teknium1 merged commit 45b00bb into main May 29, 2026
26 checks passed
@teknium1
teknium1 deleted the hermes/hermes-3d9c0155 branch May 29, 2026 19:36
teknium1 added a commit that referenced this pull request May 29, 2026
tests/test_packaging_metadata.py (added in #34811) imports
`from setuptools import find_packages` at module level. setuptools is
only declared under [build-system] requires, not as a runtime/test dep,
so CI's uv-managed test venv (uv pip install -e '.[all,dev]') lacks it
and the module errors at collection with ModuleNotFoundError. Adding
setuptools>=61.0 to the dev extra keeps the wheel-packaging regression
test running in CI instead of skipping or erroring.
KKT-OPT pushed a commit to KKT-OPT/hermes-agent that referenced this pull request May 31, 2026
)

[tool.setuptools.packages.find] listed 'hermes_cli' without the
'hermes_cli.*' wildcard, so the wheel shipped hermes_cli/*.py but
dropped the dashboard_auth and proxy subpackages. The dashboard died
on every install with ModuleNotFoundError: No module named
'hermes_cli.dashboard_auth' (NousResearch#34701); 'hermes proxy' was equally
broken.

Add the wildcard, and add a regression test that drives setuptools'
own find_packages against the live tree so any future subpackage
dropped from the include list fails CI instead of a user's container.
alt-glitch pushed a commit that referenced this pull request Jun 14, 2026
[tool.setuptools.packages.find] listed 'hermes_cli' without the
'hermes_cli.*' wildcard, so the wheel shipped hermes_cli/*.py but
dropped the dashboard_auth and proxy subpackages. The dashboard died
on every install with ModuleNotFoundError: No module named
'hermes_cli.dashboard_auth' (#34701); 'hermes proxy' was equally
broken.

Add the wildcard, and add a regression test that drives setuptools'
own find_packages against the live tree so any future subpackage
dropped from the include list fails CI instead of a user's container.
lbouriez added a commit to lbouriez/unraid-templates that referenced this pull request Jun 17, 2026
The dashboard_auth subpackage is missing from the v0.15.x wheel
(upstream packaging bug, fixed in NousResearch/hermes-agent#34811).
Setting HERMES_DASHBOARD_INSECURE=1 bypasses the OAuth gate so the
dashboard binds on 0.0.0.0 without requiring the missing module.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
T02200059 pushed a commit to T02200059/hermes-agent that referenced this pull request Jun 18, 2026
)

[tool.setuptools.packages.find] listed 'hermes_cli' without the
'hermes_cli.*' wildcard, so the wheel shipped hermes_cli/*.py but
dropped the dashboard_auth and proxy subpackages. The dashboard died
on every install with ModuleNotFoundError: No module named
'hermes_cli.dashboard_auth' (NousResearch#34701); 'hermes proxy' was equally
broken.

Add the wildcard, and add a regression test that drives setuptools'
own find_packages against the live tree so any future subpackage
dropped from the include list fails CI instead of a user's container.
xyshanren pushed a commit to xyshanren/hermes-agent-cn that referenced this pull request Jun 25, 2026
)

[tool.setuptools.packages.find] listed 'hermes_cli' without the
'hermes_cli.*' wildcard, so the wheel shipped hermes_cli/*.py but
dropped the dashboard_auth and proxy subpackages. The dashboard died
on every install with ModuleNotFoundError: No module named
'hermes_cli.dashboard_auth' (NousResearch#34701); 'hermes proxy' was equally
broken.

Add the wildcard, and add a regression test that drives setuptools'
own find_packages against the live tree so any future subpackage
dropped from the include list fails CI instead of a user's container.
waefrebeorn pushed a commit to waefrebeorn/slermes that referenced this pull request Jul 2, 2026
)

[tool.setuptools.packages.find] listed 'hermes_cli' without the
'hermes_cli.*' wildcard, so the wheel shipped hermes_cli/*.py but
dropped the dashboard_auth and proxy subpackages. The dashboard died
on every install with ModuleNotFoundError: No module named
'hermes_cli.dashboard_auth' (NousResearch#34701); 'hermes proxy' was equally
broken.

Add the wildcard, and add a regression test that drives setuptools'
own find_packages against the live tree so any future subpackage
dropped from the include list fails CI instead of a user's container.
santhreal pushed a commit to santhreal/hermes-agent that referenced this pull request Jul 13, 2026
)

[tool.setuptools.packages.find] listed 'hermes_cli' without the
'hermes_cli.*' wildcard, so the wheel shipped hermes_cli/*.py but
dropped the dashboard_auth and proxy subpackages. The dashboard died
on every install with ModuleNotFoundError: No module named
'hermes_cli.dashboard_auth' (NousResearch#34701); 'hermes proxy' was equally
broken.

Add the wildcard, and add a regression test that drives setuptools'
own find_packages against the live tree so any future subpackage
dropped from the include list fails CI instead of a user's container.
donbowman pushed a commit to donbowman/hermes-agent that referenced this pull request Jul 13, 2026
)

[tool.setuptools.packages.find] listed 'hermes_cli' without the
'hermes_cli.*' wildcard, so the wheel shipped hermes_cli/*.py but
dropped the dashboard_auth and proxy subpackages. The dashboard died
on every install with ModuleNotFoundError: No module named
'hermes_cli.dashboard_auth' (NousResearch#34701); 'hermes proxy' was equally
broken.

Add the wildcard, and add a regression test that drives setuptools'
own find_packages against the live tree so any future subpackage
dropped from the include list fails CI instead of a user's container.
Gravezzz pushed a commit to Gravezzz/hermes-agent that referenced this pull request Jul 21, 2026
)

[tool.setuptools.packages.find] listed 'hermes_cli' without the
'hermes_cli.*' wildcard, so the wheel shipped hermes_cli/*.py but
dropped the dashboard_auth and proxy subpackages. The dashboard died
on every install with ModuleNotFoundError: No module named
'hermes_cli.dashboard_auth' (NousResearch#34701); 'hermes proxy' was equally
broken.

Add the wildcard, and add a regression test that drives setuptools'
own find_packages against the live tree so any future subpackage
dropped from the include list fails CI instead of a user's container.
leewenjie pushed a commit to leewenjie/hermes-agent that referenced this pull request Aug 7, 2026
)

[tool.setuptools.packages.find] listed 'hermes_cli' without the
'hermes_cli.*' wildcard, so the wheel shipped hermes_cli/*.py but
dropped the dashboard_auth and proxy subpackages. The dashboard died
on every install with ModuleNotFoundError: No module named
'hermes_cli.dashboard_auth' (NousResearch#34701); 'hermes proxy' was equally
broken.

Add the wildcard, and add a regression test that drives setuptools'
own find_packages against the live tree so any future subpackage
dropped from the include list fails CI instead of a user's container.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/docker Docker image, Compose, packaging comp/cli CLI entry point, hermes_cli/, setup wizard P1 High — major feature broken, no workaround type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Dashboard fails after updating to 0.15.2: missing hermes_cli.dashboard_auth module

2 participants