Practical community plugins for Hermes Agent.
- hermes-ssh gives Hermes named, multi-host SSH operations with a machine registry, reusable connections, background sessions, and audit history.
- hermes-sfw routes dependency changes through Socket Firewall Free instead of trusting raw package-manager installs.
Want the lazy route? Give your agent this repository and point it at AGENTS.md.
| plugin | use it when | package |
|---|---|---|
| hermes-ssh | Hermes needs to operate one or more registered machines over SSH | hermes-ssh |
| hermes-sfw | Hermes installs or updates npm, Python, or Rust dependencies | hermes-sfw |
They are independent. Install either one or both.
Install only the section you need. The Python package must go into the same environment that runs hermes.
python -m pip install hermes-ssh
hermes plugins enable hermes-ssh --no-allow-tool-override
python -m pip show hermes-sshnpm i -g sfw
sfw --version
python -m pip install hermes-sfw
hermes plugins enable hermes-sfw --no-allow-tool-override
python -m pip show hermes-sfwRun /reset or restart Hermes, then confirm the selected plugin is enabled:
hermes plugins list --enabled --plainIf pip show succeeds but Hermes cannot see the plugin, you installed it beside Hermes rather than inside Hermes.
Use the Python interpreter from the hermes executable's shebang, or let an agent follow AGENTS.md. Do not keep reinstalling into random Python environments until one happens to work.
Paste this into a coding or terminal-capable agent:
Install the Hermes plugin I ask for from https://github.com/TheEpTic/hermes-plugins.
Read AGENTS.md first. Identify the exact Python environment used by the `hermes` executable, install the matching PyPI distribution into that environment, enable it with `hermes plugins enable <name> --no-allow-tool-override`, restart or reset Hermes if possible, and verify it appears in `hermes plugins list --enabled --plain`.
Do not use `hermes plugins install TheEpTic/hermes-plugins`; this is a monorepo with two independent PyPI packages. Do not guess SSH credentials, register root accounts, connect to a host, or run a dependency operation merely to prove installation. Report the commands used, detected paths, installed version, and verification result.
For machine-readable instructions, agents can also read llms.txt.
Register a machine explicitly, preferably with a dedicated non-root account:
ssh_machines action=add name=web1 host=192.0.2.10 user=deploy key=~/.ssh/id_ed25519
ssh_machines action=test name=web1
ssh_terminal machine=web1 command="uptime"
Or from chat:
/ssh web1 uptime
sfw action=status
sfw action=run command="npm install express" workdir="/path/to/project"
sfw action=run command="uv pip install requests" workdir="/path/to/project"
sfw action=run command="cargo fetch" workdir="/path/to/project"
hermes-sfw is a guard, not a sandbox. Allowed package managers can still execute lifecycle scripts and build backends.
| symptom | likely cause | fix |
|---|---|---|
plugin missing from hermes plugins list |
package installed into the wrong Python environment | use the interpreter that launches hermes |
| plugin listed but tools are absent | plugin is discovered but disabled | run hermes plugins enable <name> --no-allow-tool-override, then /reset |
sfw reports not installed |
Socket Firewall Free is not on Hermes's PATH |
run npm i -g sfw, then verify sfw --version from the same service environment |
| SSH says permission denied | wrong user, key, or server authorization | verify the same connection with OpenSSH outside Hermes |
| SSH host key changed | the saved host key no longer matches | investigate the host before changing known_hosts |
hermes-ssh executes commands with the credentials available to Hermes. Keep the machine registry tight, prefer dedicated non-root accounts, and use least privilege.
hermes-sfw only accepts a restricted dependency-operation grammar and sends accepted operations through Socket Firewall Free. It does not make package lifecycle code harmless.
See SECURITY.md before exposing either plugin to untrusted prompts or repositories.
git clone https://github.com/TheEpTic/hermes-plugins.git
cd hermes-plugins
cd hermes-ssh
uv sync --extra dev --locked
uv run pytest
cd ../hermes-sfw
uv sync --extra dev --locked
uv run pytestCI runs tests, Black, and strict mypy across Python 3.11 to 3.13. Releases are built from package-scoped tags and published to PyPI through GitHub OIDC.
MIT. See LICENSE.