Locked by default when hosted.
Auth
Set MEMFLEX_API_KEY → every route but /health requires X-API-Key (or Authorization: Bearer), constant-time compared. Empty = open local mode. Console forwards MEMFLEX_API_KEY automatically.
Hardening checklist
Security headers on (nosniff, DENY framing, no-referrer) · CORS via CORS_ORIGINS allowlist (default * is local-dev only) · generic upstream 502s (no key/config leakage) · secrets in env/secret-store only — never images or git · DELETE /reflexes/{id} for erasure requests · nightly reflex.db snapshots.
Known limits (honest)
No per-tenant isolation yet (single-tenant key auth today; namespacing is roadmap) · no built-in rate limiting (use Caddy/nginx) · verification re-asks go to your configured LLM (audit /activity).
Disclosure
Found something? Open a private security advisory on GitHub (or the contact on memflex.dev at launch). See SECURITY.md in the repo.