All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Code Consolidation & Optimization - Major internal refactoring for better maintainability
- Extracted similarity functions into dedicated
cortexgraph.core.similaritymodule - Consolidated search validation into
cortexgraph.core.search_commonmodule - Created
cortexgraph.core.text_utilsfor shared text utilities - Created
cortexgraph.agents.storage_utilsfor agent storage access - Refactored
search_unified.pyinto smaller, testable functions (_search_stm(),_search_ltm(),_deduplicate_results()) - Reduced
clustering.pyfrom ~290 to ~110 lines
- Extracted similarity functions into dedicated
- Batch Storage Operations - Performance improvements for bulk operations
JSONLStorage.create_relations_batch()- Create multiple relations atomicallyJSONLStorage.delete_memories_batch()- Delete multiple memories atomically- Consolidation now uses batch operations for faster execution
- No breaking API changes - all existing imports continue to work
- New module exports available via
cortexgraph.coreandcortexgraph.agents
- SQLite Storage Backend: Alternative to JSONL for better performance with large datasets.
- Configurable via
CORTEXGRAPH_STORAGE_BACKEND=sqlite. - Full feature parity with JSONL storage (CRUD, search, relations).
- Configurable via
- Markdown Export Utility: Tool to export memories to Markdown files with YAML frontmatter.
- Useful for backups, migration, or using memories in other tools like Obsidian.
- Automatic LTM index management - Major UX improvement for promoted memories
LTMIndex.add_document()- Incrementally add single documents to indexpromote_memorynow automatically updates LTM index after successful promotionsearch_unifiednow auto-rebuilds stale or missing indexes (transparent to user)- No more manual
cortexgraph-index-ltmneeded - index stays fresh automatically - Newly promoted memories are immediately searchable
- Stale indexes (>1 hour old) are auto-rebuilt on first search
- README refactored to eliminate repetition
- Removed duplicate "Comprehensive Repository Overview" section (260 lines)
- Consolidated decay algorithm explanations from 3 separate sections into 1
- Removed duplicate project structure section
- Improved flow: What → Why → Core Algorithm → Key Innovations → Quick Start
- Decay formula now explained once in "Core Algorithm", referenced elsewhere
- LTM (Long-Term Memory) implementation status
- Confirmed LTM is fully implemented (not stubbed)
- ltm_index.py: Complete with build_index, load_index, save_index, search methods
- promote_memory tool: Fully functional
- search_unified tool: Fully functional (searches both STM + LTM)
- Known issue: #58 (hardcoded 'STM/' folder instead of respecting LTM_PROMOTED_FOLDER config)
🛡️ Stable Baseline Release - Expanded Test Coverage & Repository Cleanup
This release significantly expands test coverage across critical system modules and establishes a clean baseline for future development.
- Comprehensive security test suite (4 new test modules, 100+ tests):
test_security_paths.py- Path traversal and validation teststest_security_permissions.py- File permission and access control teststest_security_secrets.py- Secret detection and sanitization teststest_security_validators.py- Input validation and security checks
- Expanded test coverage for critical modules:
test_decay.py- Power-law, exponential, and two-component decay models (415+ tests)test_ltm_index.py- LTM indexing, search, and vault integration (797+ tests)test_search_unified.py- Unified search across STM and LTM (1159+ tests)test_storage.py- JSONL storage, compaction, and concurrency (921+ tests)
- Configuration tests for LTM index age settings
- Performance optimization infrastructure and monitoring
- Background processing capabilities
- Repository cleanup: Removed all stale feature branches (25+ branches deleted)
- PR management: Closed outdated draft PRs, established clean main branch
- Enhanced test infrastructure with improved fixtures and helpers
- Improved type hints and optional dependency handling for ML models
- Resolved lint formatting issues across codebase
- Fixed Windows path separator handling in tests
- Corrected type annotations for mypy compliance
- Test coverage significantly improved - Comprehensive coverage of core modules
- Platform compatibility - Tests verified on macOS, Linux (Ubuntu), and Windows
- Stable baseline established - Clean state for rollback if needed
- No breaking API changes
- All existing functionality preserved
⚙️ Maintenance & CI Hardening; SBOM; Type Checking
This release focuses on build quality, supply-chain visibility, and developer experience.
- Security workflow now generates a CycloneDX SBOM (JSON artifact) for every push/PR
- Security Scanning and SBOM badges in README
- Pre-commit hooks for Ruff (lint + format) and mypy (src-only)
- CI: Re-enabled mypy in tests workflow; type errors resolved across codebase
- CI: Bandit runs made non-blocking; results displayed in Security Summary
- CI: Guard workflow blocks built site artifacts (index.html, assets/, search/) on main
- CI: GitHub Actions updated (actions/checkout v5, codecov-action v5, setup-uv v7)
- Docs: CONTRIBUTING adds pre-commit instructions; SECURITY documents SBOM
- Security workflow SBOM flags corrected to use cyclonedx-py with
--output-formatand--output-file - Ruff formatting and import order across modules; exception chaining (B904) applied
- No breaking API changes
- Versioning adjusted to pre-1.0 scheme (0.4.0)
🎉 Production Release: Mnemex v1.0.0
This is the first production-ready release of Mnemex (formerly STM Research/STM Server), a temporal memory management system for AI assistants with human-like memory dynamics.
- Renamed from STM Research/STM Server to Mnemex
- Updated all references, paths, and documentation
- Changed storage paths from
~/.stm/to~/.config/cortexgraph/(XDG-compliant) - Updated command names from
stm-*tocortexgraph-* - Updated environment variables from
STM_*toCORTEXGRAPH_* - Repository moved to https://github.com/simplemindedbot/cortexgraph
- UV Tool Install Support
- One-command installation:
uv tool install git+https://github.com/simplemindedbot/cortexgraph.git - Simplified MCP configuration:
{"command": "cortexgraph"}(no more complex paths) - All configuration moved to
~/.config/cortexgraph/.env(not MCP config) - Automatic installation of all 7 CLI commands
- One-command installation:
- Algorithmic Memory Consolidation (
consolidate_memoriestool)- Smart content merging with duplicate detection
- Preview mode to see proposed merges before applying
- Apply mode to execute consolidation
- Auto-detection of high-cohesion clusters
- Metadata merging: tags, entities, timestamps, strength
- Relation tracking via
consolidated_fromlinks - Strength bonuses based on cluster cohesion (capped at 2.0)
- 100% test coverage (15 tests)
- Emphasized Local-First Design
- All data stored locally (no cloud services, no tracking)
- Human-readable JSONL format for short-term memory
- Markdown files (Obsidian-compatible) for long-term memory
- Git-friendly formats for version control
- Complete user control and transparency
- Migration tool (
cortexgraph-migrate) to upgrade from old STM Server installations - Comprehensive contributing guide with platform-specific instructions
- Windows/Linux tester recruitment documentation
- Future roadmap documentation
- Privacy and local storage documentation sections
- ELI5 guide updates with simplified installation steps
- All AI assistant instruction files (CLAUDE.md, AGENTS.md, GEMINI.md)
- Storage paths: Migrated to XDG-compliant
~/.config/cortexgraph/ - Command names: All CLI tools renamed from
stm-*tocortexgraph-* - Configuration: Simplified MCP setup, all settings in
.envfile - Installation: UV tool install as recommended method
- Documentation: Complete overhaul across all files
.env.exampleupdated with correct decay model parameters- LTM index path configuration
- Python path requirements in documentation
- Server initialization using
mcp.run()instead of deprecatedmcp.run_forever()
- Complete documentation suite with consistent branding
- README.md: Quick start, installation, configuration
- CLAUDE.md: AI assistant instructions
- CONTRIBUTING.md: Development guide
- ELI5.md: Beginner-friendly explanation
- docs/deployment.md: Production deployment
- docs/architecture.md: System design
- docs/api.md: Tool reference
- docs/graph_features.md: Knowledge graph guide
11 MCP Tools Implemented:
save_memory- Save memory with entities, tags, optional embeddingssearch_memory- Search with temporal filtering and semantic similaritysearch_unified- Unified search across STM and LTMtouch_memory- Reinforce memory (update last_used, use_count, strength)gc- Garbage collect low-scoring memoriespromote_memory- Promote high-value memories to long-term storagecluster_memories- Find similar memories for consolidationconsolidate_memories- Algorithmic merge with preview/apply modesread_graph- Return entire knowledge graph with memories and relationsopen_memories- Retrieve specific memories by ID with relationscreate_relation- Create explicit links between memories
7 CLI Commands:
cortexgraph- MCP servercortexgraph-migrate- Migration from old installationscortexgraph-search- Unified search across STM and LTMcortexgraph-maintenance- Storage stats and compactioncortexgraph-index-ltm- Index Obsidian vaultcortexgraph-backup- Git backup operationscortexgraph-vault- Markdown file operations
- Temporal Decay: Power-law (default), exponential, and two-component models
- Reinforcement Learning: Memories strengthen with repeated access
- Smart Prompting: Natural memory operations without explicit commands
- Knowledge Graph: Entities, relations, and memory nodes
- Two-Layer Architecture: STM (JSONL) + LTM (Markdown/Obsidian)
MIT License - Full user control and transparency
- ELI5.md - Simple, beginner-friendly guide explaining what this project does and how to use it.
- Decay models: power-law (default), exponential, and two-component with configurable parameters.
- Unified search surfaced as an MCP tool (
search_unified) alongside the CLI (stm-search). - Maintenance CLI (
stm-maintenance) to show JSONL storage stats and compact files. - Tests for decay models, LTM index parsing/search, and unified search merging.
- Deployment docs for decay model configuration and tuning tips.
- Tuning cheat sheet and model selection guidance in README and scoring docs.
- JSONL-only storage: removed SQLite and migration tooling.
- Server logs now include the active decay model and key parameters on startup.
- Standardized on Ruff for linting and formatting.
- SQLite database implementation and migration modules.
- JSONL storage, LTM index, Git integration, and smart prompting docs.