Security
How Simault protects secrets, and where it does not yet
A secrets service has to be honest about its own security. This page describes the controls that exist and the gaps we know about.
Simault is pre-release software and has had no independent security review. Review the limitations below before using it to protect anything important.
How it works
Encryption at rest
Secrets and public keys are encrypted in the application with AES-256 before they are written. MongoDB stores ciphertext only. A data key in the database is wrapped by a master key that you hold.
Agent authentication
Each application registers an RSA public key and signs its ID and the current time to get a token. The signature must be recent, and each signed request is accepted once.
Short lifetimes
Secrets, access tokens and registration tokens expire after one hour by default. Their age is checked on every use, not only when the database cleans up.
Revocation
Removing or re-registering an application deletes its tokens and its secret at once. Every secret request also checks that the application is still active.
Access policies
Policies restrict each application by action, resource and client network range. Once a policy applies to an application, anything it does not allow is denied.
Operational safeguards
Per-client rate limits, constant-time admin key checks, log redaction, and error responses that never include internal details.
Known limitations
- The master key is the root of trust. With the local key provider it is a file. Whoever holds it and has database access can decrypt everything.
- Cloud KMS is untested. Support for AWS, Google Cloud, Azure and KMIP is implemented but has not been run against a real KMS.
- One shared admin key guards the admin API, the MCP server, the admin A2A agent and the admin UI. There are no per-operator identities.
- MCP can reveal secrets to an AI client and is not restricted by access policies.
- Rate limits are counted per instance and per client address. Across several replicas the effective limit is higher. Add a limit at your edge for a strict global one.
- No built-in TLS. Run it behind an ingress or proxy that terminates TLS.
- Health and metrics endpoints are unauthenticated. Keep them off public networks.
- No audit trail beyond the application log.
The complete security policy, including configuration checks for production, is in SECURITY.MD.
Report a vulnerability
Please do not open a public issue for a security problem.
- Email hello@ayedata.com with the subject
[VULN] Simault - <short description>. - Include the steps to reproduce it, a proof of concept if you have one, and what you think the impact is.
- We aim to acknowledge reports within 48 hours and to give an assessment within five business days.