All notable changes to this project will be documented in this file. Format follows Keep a Changelog.
- Wiki preview system (built-in HTTP browser + Mermaid rendering)
- Production environment end-to-end validation
All 6 must-complete tasks for 1.0 are done. 17/17 Storage Connectors implemented. MCP Server operational. 303 unit tests passing. Zero production panics.
- MCP Server (
memoryos-mcpcrate): rmcp v0.3, 7 tools, Gateway proxy pattern, stdio transport (PR #48) - 9 Storage Connectors: GCS, Azure Blob, SMB, NFS, OneDrive, Google Drive, Dropbox, Baidu Pan, Aliyun Drive (PR #51)
- Config Validation:
AppConfig::validate()with comprehensive checks for all config sections, 24 unit tests (PR #42) - 69 new unit tests across 7 modules (234 β 303 total), covering gateway middleware, core error, memory types, health, history, ports LLM, metrics (PR #47)
- Real Embedding Integration:
with_embedding_config()method, wired into gateway and worker (PR #46) - LLM Summary Pipeline:
consolidate_memory()callssummarize_messages_internal()for real LLM summarization (PR #45) - Rate limiting middleware wired into gateway HTTP pipeline
- Dockerfile.gateway and Dockerfile.worker for proper container deployment
- config.docker.toml for Docker Compose with correct service URLs
- K8s health probes:
/health/live(liveness) and/health/ready(readiness) endpoints (PR #58) - Release Checklist:
docs/RELEASE_CHECKLIST.mdfor tracking audit progress (PR #57)
- Replaced all production
unwrap()withexpect()or graceful error handling across 4 crates (PR #43) - Eliminated 6
.expect()panic points in gatewaystate.rsandmain.rsβ all returnResult(PR #57) /health/statusnow returns real Redis/Qdrant dependency health instead of worker monitor info (PR #57)- Docker Compose now uses
depends_on: condition: service_healthyfor reliable startup ordering - Gateway dead code (
RateLimiter) now wired into middleware stack - Version numbers aligned across VERSION, Cargo.toml, and documentation
- RBAC and Tenant persistence migrated from SQLx to JSON file-based (removed sqlx dependency) (PR #55)
- Removed 20 audit issues: dead code, unused deps, doc version mismatches, etc. (PR #56)
- Removed
.bakfile residue from repository (PR #58)
docker-compose.yml: monitoring services (Prometheus/Grafana) moved tomonitoringprofiledocker-compose.yml: worker moved tofullprofile (optional)config.toml: removed hardcoded example API keys, auth defaults to disabledconfig.docker.toml: fixed${ENV}syntax toapi_key_envpatternconfig.production.toml: rewritten to match current config schemaDockerfile: added HEALTHCHECK + curl + English comments (PR #57)- CI: documented all 5 ignored CVEs with justification (PR #57)
- README badge: "Early Development" β "Release Candidate" (PR #57)
- API.md: endpoint table updated to 49 endpoints (PR #58)
- ARCHITECTURE.md: defense system marked as reserved for v1.1 (PR #58)
- Removed hardcoded API keys from config.toml (was
memoryos-secret-key-12345) - Config files default to
auth.enabled = falsewith prominent startup warning
- Config: Run
cargo run --bin memoryos-gatewayβ startup validation will report any missing/invalid config fields - Docker: Use
docker compose up(core services) ordocker compose --profile full up(with worker) - API Keys: Generate new keys with
openssl rand -hex 32, updateconfig.toml - MCP: Add
memoryos-mcpto Claude Desktop / Cursor config for AI agent integration
- MCP Server design and architecture documentation
- Storage Connector framework (8/17 initial implementations: Local, Git, S3, WebDAV, OSS, COS, OBS, SFTP)
- Updated ARCHITECTURE.md, DESIGN.md, ROADMAP.md with MCP Server design
- README.md updated to Phase 16
- RBAC: Role-based access control (SuperAdmin/Admin/User/ReadOnly) with 6 permissions
- Multi-tenant: TenantManager with enable/disable/quota, data isolation via Qdrant tenant_id filter + Redis key prefix
- Admin Service (
memoryos-admin): independent management service on port 9090 - SQLite persistence for RBAC users and tenant data
- Constant-time token comparison (
subtle::ConstantTimeEq) - Admin CORS restricted to localhost:3000 +
ADMIN_CORS_ORIGINSenv var - RateLimiter memory leak fix (evicts stale IPs when >1000 entries)
- Nested routes moved under auth middleware
- Fail-closed RBAC (unknown users get 403)
- Prometheus Observability:
/metricsendpoint, HTTP request/duration/router/FAQ/LLM counters - LLM FAQ Classifier: auto-classification with prompt builder + response parser
- Tag search via Qdrant native payload filter
- Memory history wired into gateway
- Graph LLM extraction endpoints
- Audit/GDPR storage backends (file-based persistence)
- Redis upgraded 0.24 β 0.32
- Auth warning when
auth.enabled = false
- Criterion performance benchmarks (optimization, graph, security)
- AES-256-GCM encryption (upgraded from XOR)
- Audit log persistence (JSONL)
- GDPR record persistence (JSON)
- Security API (
/v1/security/*)
- FAQ Router Tier 0 direct hit
- Wiki S3/Confluence export
- Knowledge Graph (GraphRAG): entity/relation extraction, graph query API
- Multimodal storage (Qdrant) + HTTP endpoints
- Memory version control + tags + export/import
- 3-Tier Memory Architecture (STM β MTM β LTM)
- 10 LLM Adapters (OpenAI/Claude/Gemini/Ollama/Deepseek/OpenRouter/Azure/Groq/Cohere/Mistral)
- Security Shield (PII sanitization, 17 prompt injection patterns)
- 6 optimization modules (Bloom Filter, LRU Cache, Batch, Heat Buffer, Similarity Filter, Incremental Summary)
- Graceful degradation
- Fixed Admin API authentication bypass (CVSS 9.8 β 0.0)
- Fixed API Key insecure storage (CVSS 8.1 β 0.0)
- Fixed STM memory leak (CVSS 7.5 β 0.0)
- Initial project skeleton
- Config: Run
cargo run --bin memoryos-gatewayβ startup validation will report any missing/invalid config fields - Docker: Use
docker compose up(core services) ordocker compose --profile full up(with worker) - API Keys: Generate new keys with
openssl rand -hex 32, updateconfig.toml - MCP: Add
memoryos-mcpto Claude Desktop / Cursor config for AI agent integration
- MCP Server design and architecture documentation
- Storage Connector framework (8/17 initial implementations: Local, Git, S3, WebDAV, OSS, COS, OBS, SFTP)
- RBAC: Role-based access control (SuperAdmin/Admin/User/ReadOnly) with 6 permissions
- Multi-tenant: TenantManager with enable/disable/quota, data isolation via Qdrant tenant_id filter + Redis key prefix
- Admin Service (
memoryos-admin): independent management service on port 9090 - SQLite persistence for RBAC users and tenant data
- Constant-time token comparison (
subtle::ConstantTimeEq) - Admin CORS restricted to localhost:3000 +
ADMIN_CORS_ORIGINSenv var - RateLimiter memory leak fix (evicts stale IPs when >1000 entries)
- Nested routes moved under auth middleware
- Fail-closed RBAC (unknown users get 403)
- Prometheus Observability:
/metricsendpoint, HTTP request/duration/router/FAQ/LLM counters - LLM FAQ Classifier: auto-classification with prompt builder + response parser
- Tag search via Qdrant native payload filter
- Memory history wired into gateway
- Graph LLM extraction endpoints
- Audit/GDPR storage backends (file-based persistence)
- Redis upgraded 0.24 β 0.32
- Auth warning when
auth.enabled = false
- Criterion performance benchmarks (optimization, graph, security)
- AES-256-GCM encryption (upgraded from XOR)
- Audit log persistence (JSONL)
- GDPR record persistence (JSON)
- Security API (
/v1/security/*)
- FAQ Router Tier 0 direct hit
- Wiki S3/Confluence export
- Knowledge Graph (GraphRAG): entity/relation extraction, graph query API
- Multimodal storage (Qdrant) + HTTP endpoints
- Memory version control + tags + export/import
- 3-Tier Memory Architecture (STM β MTM β LTM)
- 10 LLM Adapters (OpenAI/Claude/Gemini/Ollama/Deepseek/OpenRouter/Azure/Groq/Cohere/Mistral)
- Security Shield (PII sanitization, 17 prompt injection patterns)
- 6 optimization modules (Bloom Filter, LRU Cache, Batch, Heat Buffer, Similarity Filter, Incremental Summary)
- Graceful degradation
- Fixed Admin API authentication bypass (CVSS 9.8 β 0.0)
- Fixed API Key insecure storage (CVSS 8.1 β 0.0)
- Fixed STM memory leak (CVSS 7.5 β 0.0)
- Initial project skeleton