Mordred · privacy enforcement for Hermes
SIX PLUGINSPrivacy, enforced below the agent.
Mordred installs six Hermes plugins for strict provider and endpoint checks, process-scoped Tor or VPN routing, native-key custody, bound Slack and Discord E2E, install policy, and guided configuration. These controls operate at Hermes integration points below the agent, applying privacy rules without relying on prompt-level instructions.
Assume the traitor is inside. Strict-mode refusals · no usage data sent to us · local audit with optional encryption · read the threat model →
MORDRED PRIVACY BOUNDARY
Policy runs below the agent
HERMES AGENT
requests an outbound action
POLICY ENFORCEMENT
strict refuses · lenient warnsMESSAGE BODIES
ENC:v3 before gateway
REMOTE INFERENCE
unapproved provider / endpoint
NETWORK PATH
tor · process-scoped
IDENTITY KEY
Enclave / Keychain / TPM
Audit logs start as local plain text and are encrypted after you set up an encryption key
LOCALBOUND E2E · PROVIDERS CHECKED · PROCESS ROUTES MANAGED
01 — Protect your keys
Protect Hermes secrets with keys managed by your device. Mordred uses Secure Enclave when available or login Keychain on macOS and TPM 2.0 on Linux, with passphrase-protected backups for recovery.
02 — Control network routes
Choose how integrated Hermes requests reach the network: directly, over Tor, or through a VPN. Strict mode can stop a request when Mordred cannot verify the protected route you selected.
03 — Protect local data
Review a local audit trail of the actions Mordred allows, warns about, or blocks. On macOS, you can also encrypt supported Hermes configuration, memory, and workspace data while it is stored.
Six plugins. One install line.
All six, in detailWhere the six plugins integrate
- wizard writes config + policy snapshot
- privacy_check gates installs + records decisions
- llm_guard checks provider + endpoint in strict mode
- network manages the selected process route
- e2e + keyvault protects bound gateways + local keys
These are distinct configuration, install, inference, transport, gateway, and key-management hooks. A request does not necessarily traverse every row, and direct sockets or unwrapped executables remain outside the cooperative boundary.
What we do not do.
A privacy tool is defined by its refusals, not its features. Here are ours, in the order they matter.
The full threat modelpolicy.strict.cloud_not_allowlisted
request refused before the provider call
When strict evidence fails
Lenient mode may warn or fall back; direct sockets and unwrapped processes remain outside these hooks.
- 01
Strict mode does not call missing evidence safe.
An unknown provider, unsafe endpoint, broken protected route, or missing required sibling is a refusal under strict policy.
- 02
Linux does not fall back to a software key.
If the TPM helper is absent or unusable, Linux keyvault operations fail instead of silently weakening key custody.
- 03
Bound E2E conversations do not send plaintext.
Once a Slack or Discord context requires ENC:v3, a missing key or context blocks the message instead of delegating to the plaintext sender.
- 04
Armed memory encryption does not write plaintext.
If the memory seal is on but the runtime key or supported Hermes seam is unavailable, memory reads and writes refuse until the operator repairs or disables the target.
- 05
We do not collect Mordred telemetry.
The package sends the maintainers no usage or diagnostic data. Providers and services you deliberately configure keep their own terms and logs.
Trust boundary
Where the trust ends.
Mordred treats agent instructions, retrieved content, remote services, and network traffic as untrusted. It applies policy where registered Hermes hooks can inspect an operation, then relies on your local environment and device key storage as the trusted foundation.
Untrusted
- Agent + inputs Prompts, tools, and retrieved content
- Remote services Model providers, Slack, Discord, and the network
- Outside the hooks Direct sockets and unwrapped processes
Policy — hermes-mordred
- Provider requests Check provider identity and endpoint
- Network routes Manage and verify the selected connection
- Protected data Validate E2E context and local encryption keys
Trusted — local base
- Local environment Your OS, user account, and Hermes installation
- Reviewed configuration Local settings and registered Mordred plugins
- Device key storage Secure Enclave, Keychain, or TPM 2.0
Four commands to a configured install.
Setup is re-runnable: it writes config.yaml and the derived policy, prepares the available platform helper, initializes keyvault, and skips completed work.
What setup does
- 01 Writes Mordred plugin settings to ~/.hermes/
config.yaml and derives mordred/policy.json. - 02 Offers clearnet, Tor, or VPN routing; clearnet remains the default unless you choose another path.
- 03 Prepares the available platform helper and initializes keyvault without auto-resetting existing state.
- 04 Runs supported macOS at-rest steps and finishes with the read-only status dashboard.
hermes-mordred status
current state · no changes made
The status command shows what is configured and available without changing anything. Check each row to see what is active and what still needs setup.
Status — alpha
v0.1.0a20 is an alpha.
The CLI surface will break before 1.0, and every break is documented in the GitHub release notes. Read them before you upgrade a machine you depend on.
- LICENSE
- MIT
- USAGE DATA
- NOT SENT
- PYTHON
- ≥ 3.11
- HERMES-AGENT
- ≥ 0.13
- MACOS
- ENCLAVE PREFERRED / AT-REST TARGETS
- LINUX
- TPM 2.0 REQUIRED FOR KEYVAULT