Skip to content

feat(acp-registry): switch to uvx distribution, drop npm launcher - #26120

Merged
teknium1 merged 1 commit into
mainfrom
hermes/hermes-fb343bf7
May 15, 2026
Merged

feat(acp-registry): switch to uvx distribution, drop npm launcher#26120
teknium1 merged 1 commit into
mainfrom
hermes/hermes-fb343bf7

Conversation

@teknium1

Copy link
Copy Markdown
Contributor

Summary

The Zed ACP Registry now installs Hermes directly from PyPI via uvx instead of through an @nousresearch/hermes-agent-acp npm shim. Same end-user command, no npm-org claim to chase, no separate publish step per release.

The registry schema supports uvx as a first-class distribution alongside npx and binary. hermes-agent is already on PyPI at the pinned version, so registry CI's URL-accessibility check passes today.

Changes

  • acp_registry/agent.json: distribution.npxdistribution.uvx with package: 'hermes-agent[acp]==0.13.0', args: ['hermes-acp']
  • Delete packages/hermes-agent-acp/ (npm launcher, README, Node tests)
  • scripts/release.py: drop the npm-launcher bump paths, keep manifest-↔-pyproject lockstep
  • tests/acp/test_registry_manifest.py: assert uvx shape + exact version pin
  • tests/scripts/test_release_acp_registry.py: rewrite for uvx-only shape
  • Docs (user-guide + dev-guide): drop all npm-launcher references
  • Delete docs/plans/acp-registry-zed-integration.md (stale, npm-shaped contributor plan)

Validation

Before After
Manifest matches upstream schema yes (npx shape) yes (uvx shape) — verified with jsonschema.validate() against agentclientprotocol/registry/agent.schema.json
End-user launch command uvx --from 'hermes-agent[acp]==X' hermes-acp (via npm shim) uvx --from 'hermes-agent[acp]==X' hermes-acp (direct)
Pre-publish steps before registry PR npm scope claim + npm publish none — PyPI already has 0.13.0
Tests tests/acp/ + tests/scripts/test_release_acp_registry.py: 229 passed

Follow-up

Submit the agentclientprotocol/registry PR copying acp_registry/agent.json + acp_registry/icon.svg into top-level hermes-agent/.

The ACP Registry schema supports uvx as a first-class distribution method
alongside npx and binary. Pointing the registry directly at the existing
hermes-agent PyPI release removes:

- the @NousResearch npm scope (we don't own it)
- a separate npm publish step on every weekly release
- 90 lines of Node launcher + tests in packages/hermes-agent-acp/

The Zed registry now installs Hermes via:

  uvx --from 'hermes-agent[acp]==<version>' hermes-acp

This is the same command the npm launcher was shelling out to anyway, so
end-user behavior is unchanged. Registry CI validates the PyPI URL +
version-pin exact match automatically.

Changes:
- acp_registry/agent.json: distribution.npx -> distribution.uvx
- delete packages/hermes-agent-acp/ entirely
- scripts/release.py: drop npm-launcher bump paths, keep manifest lockstep
- tests/acp/test_registry_manifest.py: assert uvx shape + version pin
- tests/scripts/test_release_acp_registry.py: rewrite for uvx-only shape
- docs (user-guide + dev-guide): drop all npm-launcher references
- delete docs/plans/acp-registry-zed-integration.md (stale, npm-shaped)

Validated against agentclientprotocol/registry agent.schema.json via
jsonschema. hermes-agent==0.13.0 is already live on PyPI.
@teknium1
teknium1 requested a review from a team May 15, 2026 05:05
@github-actions

Copy link
Copy Markdown
Contributor

🔎 Lint report: hermes/hermes-fb343bf7 vs origin/main

ruff

Total: 0 on HEAD, 0 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 0 pre-existing issues carried over.

ty (type checker)

Total: 8374 on HEAD, 8374 on base (➖ 0)

🆕 New issues (3):

Rule Count
invalid-argument-type 3
First entries
run_agent.py:7482: [invalid-argument-type] invalid-argument-type: Argument to function `build_anthropic_client` is incorrect: Expected `str`, found `str | dict[Unknown | str, Unknown | str | dict[str, str]] | Any | ... omitted 3 union elements`
run_agent.py:13750: [invalid-argument-type] invalid-argument-type: Argument to function `_is_oauth_token` is incorrect: Expected `str`, found `str | dict[Unknown | str, Unknown | str | dict[str, str]] | Any | ... omitted 3 union elements`
run_agent.py:13753: [invalid-argument-type] invalid-argument-type: Argument to function `len` is incorrect: Expected `Sized`, found `(str & ~AlwaysFalsy) | (dict[Unknown | str, Unknown | str | dict[str, str]] & ~AlwaysFalsy) | (Any & ~AlwaysFalsy) | ... omitted 3 union elements`

✅ Fixed issues (3):

Rule Count
invalid-argument-type 3
First entries
run_agent.py:13753: [invalid-argument-type] invalid-argument-type: Argument to function `len` is incorrect: Expected `Sized`, found `(str & ~AlwaysFalsy) | (dict[Unknown, Unknown] & ~AlwaysFalsy) | (Any & ~AlwaysFalsy) | ... omitted 3 union elements`
run_agent.py:7482: [invalid-argument-type] invalid-argument-type: Argument to function `build_anthropic_client` is incorrect: Expected `str`, found `str | dict[Unknown, Unknown] | Any | ... omitted 3 union elements`
run_agent.py:13750: [invalid-argument-type] invalid-argument-type: Argument to function `_is_oauth_token` is incorrect: Expected `str`, found `str | dict[Unknown, Unknown] | Any | ... omitted 3 union elements`

Unchanged: 4406 pre-existing issues carried over.

Diagnostics are surfaced as warnings — this check never fails the build.

@teknium1
teknium1 merged commit c8c6ce1 into main May 15, 2026
18 of 20 checks passed
@teknium1
teknium1 deleted the hermes/hermes-fb343bf7 branch May 15, 2026 05:27
@alt-glitch alt-glitch added type/refactor Code restructuring, no behavior change P3 Low — cosmetic, nice to have comp/acp Agent Communication Protocol adapter labels May 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/acp Agent Communication Protocol adapter P3 Low — cosmetic, nice to have type/refactor Code restructuring, no behavior change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants