# NousResearch/hermes-agent · Gateway /update broken for pip/PyPI installs

## Open now

- 3 issues, 2 PRs open on GitHub.
- #39104: Gateway /update fails with "not_git_repo" for pip (PyPI) installs
- #46406: \[Bug\]: System-installed hermes CLI resolves PROJECT_ROOT to Python package dir, not project dir — cascading failure when venv is unavailable
- #59850: hermes update (Windows): dependency install runs at PROJECT_ROOT (running-CLI dir), not the extracted install root → \`uv pip install -e .\` exit 2
- PR #46418: fix(cli): recover project root outside editable installs
- PR #71510: fix(cli): target the managed install root in the ZIP update path

A cluster of bugs and fixes around the /update endpoint and CLI update path failing for pip-installed (PyPI/system) packages, primarily due to incorrect PROJECT_ROOT resolution and .git-based install detection rejecting non-git installs.

## TL;DR

- 11 member(s): 3 open issue(s), 0 closed issue(s), 2 open PR(s), 0 merged PR(s), 6 PR(s) closed without merging.
- No fix has been merged to main; one or more PRs were attempted (see below).
- **Recommended:** review the prior/competing PR(s) below. A fix was attempted but not merged; your case may extend or revive that work.

## Maintainer resolution verdict

- Internal-tracker verdict over this cluster's issue members: `unresolved`. This is distinct from the fix status above. Weigh it yourself.

## How this cluster was grouped

- Link evidence (`STRUCTURAL_PARTIAL`): some members are connected by structural evidence (shared changed files, or a closing/superseded reference); the rest are joined by an automated relevance judgement over their text.
- Members outside that structural core may belong to a different underlying problem.
- Pairwise link density `0.16`: the share of member pairs that carry a link, counting a structural link in full and a relevance-only link at 0.36. `1.00` means every pair is linked.

## Open related issues

- #39104: Gateway /update fails with "not_git_repo" for pip (PyPI) installs
- #46406: \[Bug\]: System-installed hermes CLI resolves PROJECT_ROOT to Python package dir, not project dir — cascading failure when venv is unavailable
- #59850: hermes update (Windows): dependency install runs at PROJECT_ROOT (running-CLI dir), not the extracted install root → \`uv pip install -e .\` exit 2

## Prior & competing PRs

- **#39158: fix(gateway): allow update for pip installs**. closed without merge · fix tier `suggested`
  - maintainer direction: category `superseded_by_pr`; implication `superseded`; refs `#39157`, `#39104`, `#39157`
  - _suggested-tier fix detail withheld; re-request with `?tier=all` to include it._
- **#39232: fix(gateway): allow /update for pip installs (#39104)**. closed without merge · fix tier `suggested`
  - maintainer direction: category `merged_via`; implication `superseded`; refs `#39157`, `#39155`, `#39158`, `#39104`, `#39104`, `#54825`
  - _suggested-tier fix detail withheld; re-request with `?tier=all` to include it._
- **#46571: fix(cli): validate PROJECT_ROOT by walking to pyproject.toml (#46406)**. closed without merge · fix tier `suggested`
  - maintainer direction: category `uncategorized`; implication `needs_llm`
  - _suggested-tier fix detail withheld; re-request with `?tier=all` to include it._
- **#39155: fix(gateway): remove .git check blocking /update on pip installs**. closed without merge
  - maintainer direction: category `silent_close`; implication `active`
- **#39157: fix(gateway): detect pip installs in /update instead of bare .git check**. closed without merge
  - maintainer direction: category `stale_abandoned`; implication `active`
- **#46418: fix(cli): recover project root outside editable installs**. open
  - maintainer direction: category `uncategorized`; implication `needs_llm`
  - files: `hermes_cli/config.py`, `hermes_cli/main.py`, `tests/hermes_cli/test_config.py`
- **#59866: fix(cli): pass cwd to install functions to support update when PROJECT_ROOT diverges from install root**. closed without merge
  - maintainer direction: category `superseded_by_pr`; implication `superseded`; refs `#71510`, `#59850`
- **#71510: fix(cli): target the managed install root in the ZIP update path**. open
  - maintainer direction: category `partial_fix`; implication `needs_llm`; refs `2071aa7ea038`, `#59866`, `#71510`, `#59866`, `#59866`, `#71510`, `#71510`, `#71510`, `#59866`, `#71510`, `#59866`, `#71510`, `#59866`, `#71510`, `#71510`, `#59866`, `#71510`, `#374151`, `#59850`, `#59866`, `#71510`
  - files: `hermes_cli/main.py`, `tests/hermes_cli/test_update_zip_install_root.py`, `tests/hermes_cli/test_verify_console_scripts.py`

## Fix status

- No merged fix on record.
- Subsystem: `gateway`
