Privacy plugins for the Hermes agent
Assume the traitor is inside.
Six privacy plugins for the Hermes agent. Keys stay in the Secure Enclave or TPM, every run declares its route, and every refusal is written down.
Install
Requires hermes-agent ≥ 0.13 · Python ≥ 3.11
macOS 13+ · Secure Enclave or Linux with TPM 2.0
01 — Keys
Generated inside the Secure Enclave or TPM. Never exported, never printed, never synced.
02 — Routes
Tor, VPN, or clearnet — declared per run, switched with one command, never chosen for you.
03 — Proof
An encrypted audit log with a reason code for every refusal, readable only on this device.
Six plugins. One install line.
All six, in detailHow they compose — one outbound message
- Agent writes a message
- llm_guard scans for secrets
- e2e seals the body
- network opens the declared route
- Slack receives ciphertext
keyvault signs and decrypts underneath all four — the key itself stays in hardware. privacy_check reads the same chain afterwards and reports which links actually held.
What we do not do.
A privacy tool is defined by its refusals, not its features. Here are ours, in the order they matter.
- 01
We do not move your keys.
There is no export command, no backup blob, no recovery service — lose the device and you lose the identity.
- 02
We do not phone home.
No telemetry, no crash reports, no update ping. The binary makes no request you did not ask for.
- 03
We do not fail open.
When a guarantee cannot be met the run stops and prints a reason code. Degraded operation is never the default.
- 04
We do not trust the agent.
Policy is enforced below it, so a compromised or prompt-injected agent still cannot widen its own permissions.
- 05
We do not read your audit log.
It is encrypted to your device key and never leaves the machine that wrote it.
Where the trust ends.
Untrusted
- The agent
Policy — hermes-mordred
- mordred policy
Trusted — hardware
- Secure Enclave
- TPM 2.0
Four commands to a sealed run.
Setup provisions the hardware key and writes a local policy file. Nothing is registered anywhere.
hermes-mordred status
1 guarantee unmet · exit 1 · runs will fail closed until resolved
Every refusal carries a code like MRD-0142, so “it stopped” is always answerable.
Status — alpha
v0.1.0a17 is an alpha.
The CLI surface will break before 1.0, and every break is listed in the changelog. Read it before you upgrade a machine you depend on.
- LICENSE
- MIT
- TELEMETRY
- NONE
- PYTHON
- ≥ 3.11
- HERMES-AGENT
- ≥ 0.13
- MACOS
- 13+ / ENCLAVE
- LINUX
- TPM 2.0