Bug
`find /home/duplex/.local/lib/python3.11/site-packages/plugins -name plugin.yaml` returns ZERO files on a pip-installed hermes-agent from main. Plugin loader (`hermes_cli/plugins.py`) requires BOTH `plugin.yaml` AND `init.py` per directory — without yaml, plugin is silently skipped. So:
- G1 `devagentic-vertical-preamble`: installed but loader skips → no preamble fetch → worker boots with zero vertical context
- G2 `devagentic-mutations` (silo_query, confer_run): installed but loader skips → tools never registered
- G3 `hermes-github` (file_issue): installed but loader skips → tool never registered
- G4 `devagentic-lane-h` (lane_h_list, lane_h_fetch, grafted_context_fetch): installed but loader skips → tools never registered
- Every other plugin with a plugin.yaml that's not also in skills/ (canvas, mutations, etc.): same
The 33 MCP tools count the orchestrator was seeing earlier was from the OLD container hermes (v0.14.0 pre-G1-G4) where plugins were not packaging-gated. The pip-reinstalled hermes from main loads ZERO plugins because the .yaml files aren't in the wheel.
Root cause
- `MANIFEST.in` only contains:
graft skills
graft optional-skills
global-exclude __pycache__
global-exclude *.py[cod]
No graft / recursive-include for `plugins/`.
- `pyproject.toml` has `[tool.setuptools.packages.find] include = ["plugins", "plugins.*"]` which picks up Python packages (dirs with `init.py`) and
.py files — but non-.py files like `plugin.yaml` / `README.md` are NOT included by default.
- No `include-package-data = true` setting + no `[tool.setuptools.package-data]` mapping.
Setuptools' canonical fix: `include-package-data = true` in pyproject.toml + `recursive-include plugins *.yaml` etc. in MANIFEST.in.
Verification (in-tree files exist; only PACKAGING omits them)
$ find plugins -name plugin.yaml | wc -l
~25
So the files are in the source tree fine. Just not in the built wheel.
Fix
- Update `MANIFEST.in` to add `recursive-include plugins *.yaml *.yml *.md *.txt` (also for skills/ subdirs within plugins/, e.g. `plugins/devagentic-canvas/skills/canvas/SKILL.md`)
- Update `pyproject.toml` `[tool.setuptools]` to add `include-package-data = true`
- Add a packaging-contract test asserting MANIFEST.in includes the right patterns AND in-tree .yaml files exist (regression catcher)
Severity
Critical, ships now. Every devagentic-* plugin built post-G1-G4 is non-functional on the canonical pip-installed deployment. Container redeploy that picks up the wheel is the only path to bring them online; this packaging fix is mandatory for that redeploy to actually deliver the plugins.
Related
- devagentic#221 (just shipped) fixed the /graphql port-6071 oversight. Combined with this fix, plugins both LOAD and can actually REACH the graphql endpoint. Both are required.
Bug
`find /home/duplex/.local/lib/python3.11/site-packages/plugins -name plugin.yaml` returns ZERO files on a pip-installed hermes-agent from main. Plugin loader (`hermes_cli/plugins.py`) requires BOTH `plugin.yaml` AND `init.py` per directory — without yaml, plugin is silently skipped. So:
The 33 MCP tools count the orchestrator was seeing earlier was from the OLD container hermes (v0.14.0 pre-G1-G4) where plugins were not packaging-gated. The pip-reinstalled hermes from main loads ZERO plugins because the .yaml files aren't in the wheel.
Root cause
.pyfiles — but non-.py files like `plugin.yaml` / `README.md` are NOT included by default.Setuptools' canonical fix: `include-package-data = true` in pyproject.toml + `recursive-include plugins *.yaml` etc. in MANIFEST.in.
Verification (in-tree files exist; only PACKAGING omits them)
So the files are in the source tree fine. Just not in the built wheel.
Fix
Severity
Critical, ships now. Every devagentic-* plugin built post-G1-G4 is non-functional on the canonical pip-installed deployment. Container redeploy that picks up the wheel is the only path to bring them online; this packaging fix is mandatory for that redeploy to actually deliver the plugins.
Related