What you get
${vault:keyName}references in LLM, HTTP call, MCP and RAG configuration- AES-256-GCM envelope encryption with a per-tenant data key
- Per-agent grants: which agents may use which secret
- Secrets scrubbed from configuration exports and redacted in logs
How it works in EDDI
- Set the vault master key (
EDDI_VAULT_MASTER_KEY). The installer generates one for you. Without a key the vault is disabled. - Store a secret with
PUT /secretstore/secrets/{tenantId}/{keyName}or through the Manager. - Reference it in configuration as
${vault:keyName}. - EDDI resolves the reference at runtime. The plaintext is not stored in conversation memory.
- Narrow
allowedAgentsto the agents that need the secret. The check runs when an agent is deployed.
Configuration
Taken from the EDDI documentation. Placeholders such as your-agent-id are yours to replace.
curl -X PUT http://localhost:7070/secretstore/secrets/default/openai-key \
-H "Content-Type: application/json" \
-d '{"value":"sk-your-key","description":"OpenAI key"}'{
"tasks": [{
"actions": ["send_message"],
"id": "simpleChat",
"type": "openai",
"description": "Simple chat",
"parameters": {
"apiKey": "${vault:openai-key}",
"modelName": "your-model-id",
"systemMessage": "You are a helpful assistant",
"addToOutput": "true"
}
}]
}curl -X PUT "$EDDI/secretstore/secrets/default/openai-key/grant" \
-H 'Content-Type: application/json' \
-d '{"allowedAgents": ["0123456789abcdef01234567", "89abcdef0123456789abcdef"]}'Governance
- Grants are enforced at deploy time by default: an agent that references a secret it is not granted is not deployed.
- A vault reference that arrives through conversation data, such as user input or a model reply, is refused instead of being resolved.
- Plaintext is redacted from the request record, the approval preview and the request log line.
- The vault endpoints sit behind the
eddi-adminrole when authentication is on.
Good to know
- EDDI has no native HashiCorp Vault, AWS or Azure client. On Kubernetes, the External Secrets Operator can sync the
eddi-secretsKubernetes Secret (which holds the vault master key) from HashiCorp Vault, AWS Secrets Manager or Azure Key Vault. The individual secrets still live in the EDDI vault. - If the master key is lost, the encrypted secrets are unrecoverable. Back it up.
Related integrations
Configuration and behavior on this page follow the EDDI documentation, checked on 2026-10-14. Field names and defaults can change between releases, so confirm them in the docs for your version.