hermes-agent: restore packaged-install parity - #297394
Draft
dot-agi wants to merge 2 commits into
Draft
Conversation
Revert the deprecation (Homebrew#296811): the formula still builds from upstream source with HERMES_NIX_BUILD=1, and the 2026.8.3 bottles landed after it was merged. Original revert by Sean Molenaar (Homebrew#297271). Fix the build under flit_core 4.0.1 (released 2026-08-04), which removed the legacy [tool.flit.metadata] table: socksio 1.0.0's patched build requirement is unbounded (flit_core >=2), so cap it below 4 while building that resource. socksio upstream has had no release since 1.0.0, so there is no upstream commit to backport. Co-authored-by: Sean Molenaar <SMillerDev@users.noreply.github.com>
Mirror upstream's nix/hermes-agent.nix packaging (the interface upstream kept for packaged installs): ship the bundled data dirs (skills, optional-skills, plugins, locales, optional-mcps), build the web dashboard and TUI bundles with npm like nix/web.nix and nix/tui.nix do, and wrap the entry points with the HERMES_* env vars. Add node, ripgrep and tirith as runtime dependencies to replace hermes-agent's runtime self-downloads into ~/.hermes; ffmpeg stays optional via caveats. Without this, a brew install has no builtin skills, no dashboard, no TUI, and downloads node/ripgrep/tirith at runtime.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
HOMEBREW_NO_INSTALL_FROM_API=1 brew install --build-from-source <formula>?brew test <formula>?brew audit --strict <formula>(after doingHOMEBREW_NO_INSTALL_FROM_API=1 brew install --build-from-source <formula>)? If this is a new formula, does it passbrew audit --new <formula>?AI-assisted contribution by Claude Code (Claude Fable 5, model
claude-fable-5) for ~95% of the work (upstream packaging research, formula change, and running the validation). Build, test and audit were executed by the AI on the contributor's machine; the contributor reviewed the design, the diff and this description.Built and tested locally on macOS 26 (Tahoe) running arm64, and on Linux arm64 from source in the
homebrew/brewDocker container.Draft until #297327 lands — the first commit here is that PR's; this branch will be rebased exactly once after it merges, before being marked ready.
Restores packaged-install parity with upstream's own Nix packaging (
nix/hermes-agent.nix— the env-var wrapper interface upstream kept for packaged installs after removing brew/PyPI as channels in NousResearch/hermes-agent#68217). Today's brew install ships no bundled skills/plugins/locales, no web dashboard, no TUI, and hermes self-downloads node/ripgrep into~/.hermes(and tirith from GitHub releases) at runtime.What this change does:
skills,optional-skills,plugins,locales,optional-mcps) intopkgshare, pruned like Nix's source filters.web/, vite) and TUI (ui-tui/, esbuild) with npm at build time — same as upstream'snix/web.nix/nix/tui.nix. First npm-registry access for this formula; bottles grow roughly 25 MB.hermes,hermes-agent,hermes-acpwith the same tenHERMES_*env vars the Nix wrapper sets.node,ripgrep,tirithas runtime deps, replacing the runtime self-downloads;hermes doctorflips ripgrep/Node to ✓. ffmpeg stays optional via caveats. (noderather thannode@22: upstream pins for reproducibility, not compatibility;node@22is the fallback if CI disagrees.)revision 1so bottles rebuild with the new payload.Test rationale:
assert_match "bundled", shell_output("#{bin}/hermes plugins list")exercises the wrapper env mechanism directly and discriminates: via the bare venv entry point it matches 0 times; via the wrapper, 89. (skills listcouldn't be used — bundled-skill seeding only runs in interactive setup/update flows, not underbrew test's isolated$HOME.)