Security
What m3m0s stores, how it protects it, and how to run it safely.
m3m0s stores whatever you send it, including session transcripts, and you configure it with provider API keys. Treat the server and its backups like any other system that holds that kind of text.
What protects your data
- API keys guard the HTTP API, the MCP bridge and the CLI. WebUI accounts have a username and a password, and a reset is a single-use 30-minute link.
- Secret redaction runs on ingestion, and again before text is sent to an extraction provider. It is best-effort: it cannot catch every format.
m3m0s maintenance redact-scanreports secrets that were stored before a redaction rule existed.--applyre-redacts the stored source blobs. It is a dry run by default.- Read-only MCP mode keeps agents from rewriting memory. It is a convenience, not a boundary: anything with the API key can call the HTTP API.
- Providers see what you send them. Text goes to the embedding, extraction and chat endpoints you configure, and nowhere else is configured by default.
Run it safely
- Put the server behind TLS and a trusted network boundary before exposing it. A private network or VPN is better than the open internet.
- Keep
.envand~/.m3m0s/hook.envout of version control, with mode600for the latter. - Treat backups and the data volume as sensitive.
- Use an embedding and extraction provider you trust with the text your agents see, or point
M3M0S_OPENAI_BASE_URLat a local endpoint.
Reporting a vulnerability
Do not open a public issue. Use GitHub private vulnerability reporting: open the repository’s Security tab and choose Report a vulnerability. Include the affected version, how you run m3m0s, and steps to reproduce with synthetic data only. See SECURITY.md for scope and supported versions.
Never post API keys, transcripts, real memory contents, database files or internal hostnames in public issues or logs. If a secret leaked, rotate it right away.