misc/hermes-agent 0.21.5 FreeBSD
AI agent with built-in learning loop
- System
- FreeBSD
- Repository
- FreeBSD ports
- Maintainer
- [email protected]
- Last update
- Commit
de6c5bbdd1- License
- MIT
- Categories
- misc, python
- Package size
- 15916.2 KiB, 58483.6 KiB installed
Description
Hermes is a self-improving AI agent that creates skills from experience and improves them during use. It runs as a CLI on a developer's machine and supports a pluggable toolset system, multiple LLM backends (OpenAI, Anthropic, Mistral, Bedrock, ...), web search and crawling integrations, voice / TTS / messaging connectors, and an agent-control protocol (ACP) adapter.
This port installs the core CLI plus the optional [web] dashboard backend (FastAPI + Uvicorn). The dashboard's static frontend assets (hermes_cli/web_dist/) are produced by an upstream npm pipeline that is not run in the ports build environment. Other upstream extras such as Modal, Daytona, Vercel, faster-whisper, Telegram, Discord, Slack and the [rl] training loop are not packaged.
Because Hermes ships top-level Python packages with generic names (tools, agent, gateway, plugins, ...), the source tree is installed under ${PREFIX}/lib/hermes-agent/ rather than site-packages, matching upstream's own Docker / Nix / Homebrew packaging. The wrappers in ${PREFIX}/bin prepend that directory to sys.path before invoking each entry point.
The skills/ and optional-skills/ template directories ship under ${DATADIR}/. Hermes reads its working set from ${HOME}/.hermes/.
Install
Binary package:
pkg install hermes-agent
From the ports tree:
cd /usr/ports/misc/hermes-agent/ && make install clean
To depend on this port in another port's Makefile:
RUN_DEPENDS= hermes-agent>0:misc/hermes-agent
Packages
The version each package repository carries. “-” means the repository builds no package of it, “n/a” that there is no such repository.
| Repository | aarch64 | amd64 | armv6 | armv7 | i386 |
|---|---|---|---|---|---|
| FreeBSD:14:latest | 0.21.5 | 0.21.5 | - | - | 0.21.5 |
| FreeBSD:14:quarterly | 0.21.5 | 0.21.5 | n/a | - | 0.21.5 |
| FreeBSD:15:latest | 0.21.5 | 0.21.5 | n/a | - | - |
| FreeBSD:15:quarterly | 0.21.5 | 0.21.5 | n/a | n/a | n/a |
| FreeBSD:16:latest | 0.21.5 | 0.21.5 | n/a | n/a | n/a |
| FreeBSD:16:quarterly | n/a | n/a | n/a | n/a | n/a |
Dependencies
As this port's Makefile names them.
Runtime 40
${PYTHON_PKGNAMEPREFIX}anthropic>=0.87.0: misc/py-anthropic${PYTHON_PKGNAMEPREFIX}certifi>=2026.5.20: security/py-certifi${PYTHON_PKGNAMEPREFIX}croniter>=6.0.0: sysutils/py-croniter${PYTHON_PKGNAMEPREFIX}cryptography>=50.0.0: security/py-cryptography${PYTHON_PKGNAMEPREFIX}edge-tts>=7.2.7: audio/py-edge-tts${PYTHON_PKGNAMEPREFIX}exa-py>=2.10.2: www/py-exa-py${PYTHON_PKGNAMEPREFIX}fal-client>=0.13.1: misc/py-fal-client${PYTHON_PKGNAMEPREFIX}fastapi>=0.133.1: www/py-fastapi${PYTHON_PKGNAMEPREFIX}fire>=0.7.1: devel/py-fire${PYTHON_PKGNAMEPREFIX}firecrawl-py>=4.17.0: www/py-firecrawl-py${PYTHON_PKGNAMEPREFIX}httptools>=0.6.3: www/py-httptools${PYTHON_PKGNAMEPREFIX}httpx>=0.28.1: www/py-httpx${PYTHON_PKGNAMEPREFIX}Jinja2>=3.1.6: devel/py-Jinja2${PYTHON_PKGNAMEPREFIX}markdown>=3.10.2: textproc/py-markdown${PYTHON_PKGNAMEPREFIX}openai>=2.24.0: misc/py-openai${PYTHON_PKGNAMEPREFIX}packaging>=26.0: devel/py-packaging${PYTHON_PKGNAMEPREFIX}parallel-web>=0.4.2: www/py-parallel-web${PYTHON_PKGNAMEPREFIX}pathspec>=1.1.1: devel/py-pathspec${PYTHON_PKGNAMEPREFIX}pillow>=12.3.0: graphics/py-pillow${PYTHON_PKGNAMEPREFIX}pillow-heif>=1.4.0: graphics/py-pillow-heif${PYTHON_PKGNAMEPREFIX}prompt-toolkit>=3.0.52: devel/py-prompt-toolkit${PYTHON_PKGNAMEPREFIX}psutil>=7.2.2: sysutils/py-psutil${PYTHON_PKGNAMEPREFIX}ptyprocess>=0.7.0: sysutils/py-ptyprocess${PYTHON_PKGNAMEPREFIX}pydantic2>=2.13.4: devel/py-pydantic2${PYTHON_PKGNAMEPREFIX}pyjwt>=2.13.0: www/py-pyjwt${PYTHON_PKGNAMEPREFIX}pysocks>0: net/py-pysocks${PYTHON_PKGNAMEPREFIX}python-dotenv>=1.2.2: www/py-python-dotenv${PYTHON_PKGNAMEPREFIX}python-multipart>=0.0.32: www/py-python-multipart${PYTHON_PKGNAMEPREFIX}pyyaml>=6.0.3: devel/py-pyyaml${PYTHON_PKGNAMEPREFIX}requests>=2.33.0: www/py-requests${PYTHON_PKGNAMEPREFIX}rich>=14.3.3: textproc/py-rich${PYTHON_PKGNAMEPREFIX}ruamel.yaml>=0.18.17: devel/py-ruamel.yaml${PYTHON_PKGNAMEPREFIX}snowballstemmer>=3.1.1: textproc/py-snowballstemmer${PYTHON_PKGNAMEPREFIX}socksio>0: net/py-socksio${PYTHON_PKGNAMEPREFIX}starlette>=1.3.1: www/py-starlette${PYTHON_PKGNAMEPREFIX}tenacity>=9.1.4: devel/py-tenacity${PYTHON_PKGNAMEPREFIX}urllib3>=2.7.0: net/py-urllib3${PYTHON_PKGNAMEPREFIX}uvicorn>=0.41.0: www/py-uvicorn${PYTHON_PKGNAMEPREFIX}watchfiles>=0.20: devel/py-watchfiles${PYTHON_PKGNAMEPREFIX}websockets>=15.0.1: devel/py-websockets
The full lists below include those, and their dependencies in turn.
Run dependencies 214
- archivers/brotli
- archivers/libdeflate
- archivers/liblz4
- archivers/zstd
- audio/lame
- audio/libogg
- audio/libvorbis
- audio/mpg123
- audio/opus
- audio/py-edge-tts
- converters/fribidi
- converters/libiconv
- databases/py-sqlite3
- databases/sqlite3
- devel/binutils
- devel/gettext-runtime
- devel/glib20
- devel/libedit
- devel/libepoll-shim
- devel/libffi
- devel/libinotify
- devel/libpciaccess
- devel/libunistring
- devel/llvm12
- devel/pcre2
- devel/py-Jinja2
- devel/py-aiofiles
- devel/py-aiosignal
- devel/py-annotated-doc
- devel/py-annotated-types
- devel/py-anyio
- devel/py-asyncstdlib
- devel/py-attrs
- devel/py-babel
- devel/py-cffi
- devel/py-click
- devel/py-fire
- devel/py-frozenlist
- devel/py-msgpack
- devel/py-nest-asyncio
- devel/py-olefile
- devel/py-opentelemetry-api
- devel/py-packaging
- devel/py-pathspec
- devel/py-prompt-toolkit
- devel/py-propcache
- devel/py-pycparser
- devel/py-pydantic-core
- devel/py-pydantic2
- devel/py-python-dateutil
- devel/py-pytz
- devel/py-pyyaml
- devel/py-ruamel.yaml
- devel/py-ruamel.yaml.clib
- devel/py-six
- devel/py-sniffio
- devel/py-tabulate
- devel/py-tenacity
- devel/py-termcolor
- devel/py-typing-extensions
- devel/py-typing-inspection
- devel/py-tzdata
- devel/py-watchfiles
- devel/py-wcwidth
- devel/py-websockets
- devel/readline
- devel/sdl20
- devel/spirv-llvm-translator
- dns/libidn2
- dns/py-idna
- graphics/gdk-pixbuf2
- graphics/giflib
- graphics/graphite2
- graphics/jbigkit
- graphics/jpeg-turbo
- graphics/lcms2
- graphics/lerc
- graphics/libavif
- graphics/libdrm
- graphics/libglvnd
- graphics/libheif
- graphics/libimagequant
- graphics/libyuv
- graphics/mesa-libs
- graphics/openjpeg
- graphics/openjph
- graphics/png
- graphics/py-pillow
- graphics/py-pillow-heif
- graphics/spirv-tools
- graphics/tiff
- graphics/vulkan-loader
- graphics/wayland
- graphics/webp
- lang/gcc14
- lang/perl5.42
- lang/python312
- lang/python315
- lang/tcl86
- math/gmp
The first 100 are listed.
No port depends on this one.
Configuration
Options name: misc_hermes-agent
| Option | Default | Description |
|---|---|---|
| DOCS | off | Build and/or install documentation |
- USES
- python:3.11+,run shebangfix
- Service scripts
hermes_dashboard,hermes_gateway
Message after installing
Files
distinfo 2
| File | Size | SHA256 |
|---|---|---|
| hermes-agent-web-dist-0.21.5.tar.gz | 1.545955e+06 | 12acf5c53eaab4bd312fc118dbfaf9f490a2324a6728e6123b4f9b24768dbd83 |
| NousResearch-hermes-agent-0.21.5-v2026.9.24_GH0.tar.gz | 7.5257742e+07 | 15b15ce4e6ec8ea424a081823709d1e17f0943e7b42b59597d24ebb94cbd1742 |
Master sites 1
- LOCAL/olivier:webdist