Install this version:
emerge -a =app-misc/hermes-agent-0.21.1
If this version is masked, you can unmask it using the autounmask tool or standard emerge options:
autounmask =app-misc/hermes-agent-0.21.1
Or alternatively:
emerge --autounmask-write -a =app-misc/hermes-agent-0.21.1
| Version | EAPI | Keywords | Slot |
|---|---|---|---|
| 0.21.1 | 8 | ~amd64 | 0 |
# Copyright 2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
# Upstream caps at <3.14: Rust-backed transitives (pydantic-core) had no
# cp314 wheels at release time. Keep in sync with the HERMES_PYTHON wrapper
# path in src_install.
PYTHON_COMPAT=( python3_13 )
DISTUTILS_SINGLE_IMPL=1
DISTUTILS_USE_PEP517=setuptools
inherit distutils-r1
MY_TAG=2026.9.7
DESCRIPTION="Self-improving AI agent CLI by Nous Research with a built-in learning loop"
HOMEPAGE="https://hermes-agent.nousresearch.com/ https://github.com/NousResearch/hermes-agent"
SRC_URI="https://github.com/NousResearch/hermes-agent/archive/refs/tags/v${MY_TAG}.tar.gz -> ${P}.gh.tar.gz"
S="${WORKDIR}/${PN}-${MY_TAG}"
LICENSE="MIT"
SLOT="0"
KEYWORDS="~amd64"
IUSE="anthropic edge-tts mcp telegram"
RESTRICT="test"
# Upstream exact-pins every core dependency in pyproject.toml; floors below
# track those pins where the (guru/tatsh) tree can satisfy them, bare atoms
# elsewhere. openai lives in guru (2.44.0 >= pinned 2.24.0); fire,
# firecrawl-anydoc and nemo-relay are packaged in this overlay. httpx[socks]
# is python-socks in ::gentoo. git/ripgrep/ffmpeg mirror the runtime PATH of
# the upstream nix derivation (nix/hermes-agent.nix).
RDEPEND="
dev-vcs/git
media-video/ffmpeg
sys-apps/ripgrep
dev-python/certifi
dev-python/croniter
dev-python/cryptography
>=dev-python/fastapi-0.104
dev-python/fire
>=dev-python/firecrawl-anydoc-0.2.4
dev-python/httptools
dev-python/httpx
dev-python/jinja2
dev-python/markdown
dev-python/nemo-relay
>=dev-python/openai-2.24.0
dev-python/packaging
dev-python/pathspec
>=dev-python/pillow-12.3.0
dev-python/prompt-toolkit
dev-python/psutil
dev-python/ptyprocess
>=dev-python/pydantic-2.13.4
dev-python/pyjwt
dev-python/python-dotenv
dev-python/python-multipart
dev-python/python-socks
dev-python/pyyaml
dev-python/requests
dev-python/rich
dev-python/ruamel-yaml
dev-python/snowballstemmer
dev-python/starlette
dev-python/tenacity
dev-python/uvicorn
dev-python/uvloop
dev-python/watchfiles
dev-python/websockets
anthropic? ( >=dev-python/anthropic-0.87 )
edge-tts? ( >=dev-python/edge-tts-7.2.7 )
mcp? (
>=dev-python/httpx2-2.5.0
>=dev-python/mcp-2.0.0
>=dev-python/starlette-1.3.1
)
telegram? ( >=dev-python/python-telegram-bot-22.7 )
"
# setup.py raises unless HERMES_NIX_BUILD=1: upstream retired the
# pip/PyPI/Homebrew wheel channels and only lets their uv2nix derivation
# build wheels. Portage is the same kind of sealed, review-at-the-pin
# package manager, so opt into that build path.
export HERMES_NIX_BUILD=1
src_install() {
distutils-r1_src_install
# Bundled assets the wheel deliberately omits (resolved at runtime via
# HERMES_* env overrides; see hermes_constants.py::_packaged_dir and
# the mirroring installPhase in nix/hermes-agent.nix). HERMES_WEB_DIST
# and HERMES_TUI_DIR are intentionally unset: they point at Node-built
# dashboard/TUI bundles this ebuild does not build.
insinto /usr/share/${PN}
doins -r \
"${S}"/skills \
"${S}"/optional-skills \
"${S}"/plugins \
"${S}"/locales \
"${S}"/optional-mcps \
|| die
# The generated /usr/bin entry-point scripts are plain; re-create them
# as thin wrappers exporting the same asset-discovery environment the
# nix derivation's makeWrapper sets (--set-default semantics: an already
# exported value wins). eutils/makeWrapper no longer exists in the tree,
# so the wrapper is written by hand.
local libdir=$(get_libdir)
dodir /usr/${libdir}/${PN}
local s
for s in hermes hermes-agent hermes-acp; do
mv "${ED}/usr/bin/${s}" "${ED}/usr/${libdir}/${PN}/${s}" || die
cat > "${ED}/usr/bin/${s}" <<-EOF || die
#!/bin/sh
export HERMES_BUNDLED_SKILLS="\${HERMES_BUNDLED_SKILLS:-${EPREFIX}/usr/share/${PN}/skills}"
export HERMES_OPTIONAL_SKILLS="\${HERMES_OPTIONAL_SKILLS:-${EPREFIX}/usr/share/${PN}/optional-skills}"
export HERMES_BUNDLED_PLUGINS="\${HERMES_BUNDLED_PLUGINS:-${EPREFIX}/usr/share/${PN}/plugins}"
export HERMES_BUNDLED_LOCALES="\${HERMES_BUNDLED_LOCALES:-${EPREFIX}/usr/share/${PN}/locales}"
export HERMES_OPTIONAL_MCPS="\${HERMES_OPTIONAL_MCPS:-${EPREFIX}/usr/share/${PN}/optional-mcps}"
export HERMES_PYTHON="\${HERMES_PYTHON:-${EPREFIX}/usr/bin/python3.13}"
export HERMES_BIN="\${HERMES_BIN:-${EPREFIX}/usr/bin/hermes}"
exec "${EPREFIX}/usr/${libdir}/${PN}/${s}" "\$@"
EOF
fperms +x "/usr/bin/${s}" || die
done
}
Manage flags for this package:
euse -i <flag> -p app-misc/hermes-agent |
euse -E <flag> -p app-misc/hermes-agent |
euse -D <flag> -p app-misc/hermes-agent
dev-vcs/git media-video/ffmpeg sys-apps/ripgrep dev-python/certifi dev-python/croniter dev-python/cryptography >=dev-python/fastapi-0.104 dev-python/fire >=dev-python/firecrawl-anydoc-0.2.4 dev-python/httptools dev-python/httpx dev-python/jinja2 dev-python/markdown dev-python/nemo-relay >=dev-python/openai-2.24.0 dev-python/packaging dev-python/pathspec >=dev-python/pillow-12.3.0 dev-python/prompt-toolkit dev-python/psutil dev-python/ptyprocess >=dev-python/pydantic-2.13.4 dev-python/pyjwt dev-python/python-dotenv dev-python/python-multipart dev-python/python-socks dev-python/pyyaml dev-python/requests dev-python/rich dev-python/ruamel-yaml dev-python/snowballstemmer dev-python/starlette dev-python/tenacity dev-python/uvicorn dev-python/uvloop dev-python/watchfiles dev-python/websockets anthropic? ( >=dev-python/anthropic-0.87 ) edge-tts? ( >=dev-python/edge-tts-7.2.7 ) mcp? ( >=dev-python/httpx2-2.5.0 >=dev-python/mcp-2.0.0 >=dev-python/starlette-1.3.1 ) telegram? ( >=dev-python/python-telegram-bot-22.7 )
| Type | File | Size | Source URLs |
|---|---|---|---|
| DIST | hermes-agent-0.21.1.gh.tar.gz | 69214959 bytes | https://github.com/NousResearch/hermes-agent/archive/refs/tags/v2026.9.7.tar.gz |