Some checks failed
Contributor Attribution Check / check-attribution (pull_request) Has been cancelled
History Check / check-common-ancestor (pull_request) Has been cancelled
Lint (ruff + ty) / ruff + ty diff (pull_request) Has been cancelled
Lint (ruff + ty) / ruff enforcement (blocking) (pull_request) Has been cancelled
Lint (ruff + ty) / Windows footguns (blocking) (pull_request) Has been cancelled
Nix / nix (macos-latest) (pull_request) Has been cancelled
Nix / nix (ubuntu-latest) (pull_request) Has been cancelled
Supply Chain Audit / changes (pull_request) Has been cancelled
Supply Chain Audit / Scan PR for critical supply chain risks (pull_request) Has been cancelled
Supply Chain Audit / Check PyPI dependency upper bounds (pull_request) Has been cancelled
Tests / test (1) (pull_request) Has been cancelled
Tests / test (2) (pull_request) Has been cancelled
Tests / test (3) (pull_request) Has been cancelled
Tests / test (4) (pull_request) Has been cancelled
Tests / e2e (pull_request) Has been cancelled
Tests / test (5) (pull_request) Has been cancelled
Tests / test (6) (pull_request) Has been cancelled
Tests / save-durations (pull_request) Has been cancelled
Typecheck / typecheck (apps/bootstrap-installer) (pull_request) Has been cancelled
Typecheck / typecheck (apps/desktop) (pull_request) Has been cancelled
Typecheck / typecheck (apps/shared) (pull_request) Has been cancelled
Typecheck / typecheck (ui-tui) (pull_request) Has been cancelled
Typecheck / typecheck (web) (pull_request) Has been cancelled
prestart now returns 1 when config.yaml is absent instead of only warning. Without this, daemon(8) -r respawns the immediately-exiting gateway in a tight crash loop; aborting the start surfaces a clear error to the operator instead. Also drop a stray double blank line before the README Install fence. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1.6 KiB
1.6 KiB
Hermes Agent — FreeBSD
This is a clean-room FreeBSD compatibility layer for Hermes Agent, built from the MIT-licensed upstream. No LGPL code, no Autolycus dependency.
What's patched
Three targeted changes for FreeBSD native support:
| File | Change |
|---|---|
hermes_cli/setup.py |
FreeBSD in platform detection, pkg for espeak-ng, rc.d service support |
hermes_cli/uninstall.py |
/usr/local/bin symlink removal on FreeBSD |
scripts/install-freebsd.sh |
Native FreeBSD installer (POSIX sh, pkg, uv) |
Clipboard (xclip) and voice (ffplay) work on FreeBSD without code changes — xclip and ffmpeg are available via pkg.
Service (rc.d)
After installing, run Hermes as a persistent system service under daemon(8):
# One-time setup
sudo pw groupadd hermes
sudo pw useradd hermes -g hermes -d /var/db/hermes -s /usr/sbin/nologin
sudo cp packaging/freebsd/hermes_daemon.in /usr/local/etc/rc.d/hermes_daemon
sudo chmod 555 /usr/local/etc/rc.d/hermes_daemon
# Configure Hermes before first start
sudo mkdir -p /var/db/hermes
sudo chown hermes:hermes /var/db/hermes
sudo -u hermes HERMES_HOME=/var/db/hermes hermes setup
sudo -u hermes HERMES_HOME=/var/db/hermes hermes model
# Enable and start
sudo sysrc hermes_daemon_enable=YES
sudo service hermes_daemon start
sudo service hermes_daemon status
The service stores config in /var/db/hermes (persistent) instead of
~/.hermes (tmpfs on live USB). Logs go to /var/log/hermes/gateway.log.
Install
sh scripts/install-freebsd.sh
License
MIT — same as upstream NousResearch Hermes Agent. No LGPL encumbrance.