Privacy-preserving plugin bundle for the Hermes agent (NousResearch/hermes-agent)
Project description
mordred-hermes
Privacy-preserving plugin bundle for the Hermes agent.
Five plugins exposed via the hermes_agent.plugins entry-point group:
mordred_privacy_check— skill metadata enforcement, audit loggingmordred_wizard—hermes mordred …CLI surfacemordred_llm_guard— strict-mode local LLM enforcementmordred_network— Tor / VPN / Clearnet path managementmordred_keyvault— Secure Enclave-backed key management (macOS, optional)
Status
Active alpha (0.1.0a0). The five entry-point plugins are implemented beyond
the original Phase 0 scaffold; the default unit suite is intended to stay
hermetic, while hardware- and network-mutating checks remain opt-in.
See docs/dev/ for SPEC, PLAN, TODO, PATHS, MIGRATION, UPSTREAM, CI, and docs/user/ for QUICKSTART and USAGE.
Validation
Default local checks:
UV_CACHE_DIR=/tmp/uv-cache uv run ruff check src tests
HERMES_HOME=/private/tmp/hermes-mordred-test-home UV_CACHE_DIR=/tmp/uv-cache uv run pytest -q
Manual live-device validation was reported successful on 2026-05-25 for the hardware/network-gated suites that are excluded from default PR CI:
MORDRED_KEYVAULT_LIVE=1 pytest -m integration tests/integration/test_keyvault_macos.py -v
MORDRED_LIVE_VPN_TEST=1 MORDRED_MULLVAD_ACCOUNT=... pytest -m integration tests/integration/test_vpn.py -v
The Tor path is covered separately by the hermetic Docker-based
integration-tor CI job.
Install (development)
# From this repo's root
uv pip install --python ~/.hermes/hermes-agent/venv/bin/python3 -e .
Verify discovery (Hermes 0.11.0):
~/.hermes/hermes-agent/venv/bin/python3 -c "
from hermes_cli.plugins import PluginManager
mgr = PluginManager(); mgr.discover_and_load(force=True)
print(sorted(k for k, p in mgr._plugins.items() if p.manifest.source == 'entrypoint'))
"
# → ['mordred_keyvault', 'mordred_llm_guard', 'mordred_network', 'mordred_privacy_check', 'mordred_wizard']
Note: hermes plugins list does not display entry-point plugins in Hermes 0.11.0 — it only scans <repo>/plugins/ and ~/.hermes/plugins/ directories. The loader (PluginManager.discover_and_load) does discover them and call register(). Phase 1.3 will ship hermes mordred plugins list as a wrapper that surfaces entry-point plugins in the CLI.
To enable, edit ~/.hermes/config.yaml:
plugins:
enabled:
- mordred_privacy_check
- mordred_wizard
- mordred_llm_guard
- mordred_network
- mordred_keyvault
For Phase 4 (mordred_keyvault) on macOS Apple Silicon:
uv pip install --python ~/.hermes/hermes-agent/venv/bin/python3 -e ".[macos]"
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mordred_hermes-0.1.0a0.tar.gz.
File metadata
- Download URL: mordred_hermes-0.1.0a0.tar.gz
- Upload date:
- Size: 772.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ef7f426f64c12960aadb3f5b0a7841a9b7e3df222c2a5d7ad9391a3f4811f4c
|
|
| MD5 |
a4dcc68563b1a473ea0198fd442a29c3
|
|
| BLAKE2b-256 |
0a3d1db904f991dd3695cb68e303770b67bc491aeb966d1ec5e368cf779eb15b
|
Provenance
The following attestation bundles were made for mordred_hermes-0.1.0a0.tar.gz:
Publisher:
release.yml on InternetMaximalism/mordred-hermes
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mordred_hermes-0.1.0a0.tar.gz -
Subject digest:
2ef7f426f64c12960aadb3f5b0a7841a9b7e3df222c2a5d7ad9391a3f4811f4c - Sigstore transparency entry: 2115804094
- Sigstore integration time:
-
Permalink:
InternetMaximalism/mordred-hermes@f1e322fc91048b13a4f94c9dd92f6682850b834d -
Branch / Tag:
refs/heads/main - Owner: https://github.com/InternetMaximalism
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@f1e322fc91048b13a4f94c9dd92f6682850b834d -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file mordred_hermes-0.1.0a0-py3-none-any.whl.
File metadata
- Download URL: mordred_hermes-0.1.0a0-py3-none-any.whl
- Upload date:
- Size: 506.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc2f4f3bb9b1300529911c4b31ac7de8e307fff91cc34fc162055e6676c96c04
|
|
| MD5 |
3cc597bdd0e883d2b451b0b42d873e25
|
|
| BLAKE2b-256 |
048603659d3b49d9759cdc8319db4e4be1524b61da26e0ef6d41cb0ca989a6db
|
Provenance
The following attestation bundles were made for mordred_hermes-0.1.0a0-py3-none-any.whl:
Publisher:
release.yml on InternetMaximalism/mordred-hermes
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mordred_hermes-0.1.0a0-py3-none-any.whl -
Subject digest:
fc2f4f3bb9b1300529911c4b31ac7de8e307fff91cc34fc162055e6676c96c04 - Sigstore transparency entry: 2115804165
- Sigstore integration time:
-
Permalink:
InternetMaximalism/mordred-hermes@f1e322fc91048b13a4f94c9dd92f6682850b834d -
Branch / Tag:
refs/heads/main - Owner: https://github.com/InternetMaximalism
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@f1e322fc91048b13a4f94c9dd92f6682850b834d -
Trigger Event:
workflow_dispatch
-
Statement type: