Thanks for wanting to help. MemPalace is open source and we welcome contributions of all sizes — from typo fixes to new features.
# Fork the repo on GitHub first, then clone your fork
git clone https://github.com/<your-username>/mempalace.git
cd mempalace
git remote add upstream https://github.com/MemPalace/mempalace.git
pip install -e ".[dev]" # installs with dev dependencies (pytest, build, twine)pytest tests/ -vAll tests must pass before submitting a PR. Tests should run without API keys or network access.
# Quick test (20 questions, ~30 seconds)
python benchmarks/longmemeval_bench.py /path/to/longmemeval_s_cleaned.json --limit 20
# Full benchmark (500 questions, ~5 minutes)
python benchmarks/longmemeval_bench.py /path/to/longmemeval_s_cleaned.jsonSee benchmarks/README.md for data download instructions and reproduction guide.
mempalace/ ← core package (see mempalace/README.md for module guide)
benchmarks/ ← reproducible benchmark runners
hooks/ ← Claude Code auto-save hooks
examples/ ← usage examples
tests/ ← test suite
assets/ ← logo + brand
- Fork the repo and create a feature branch:
git checkout -b feat/my-thing - Write your code
- Add or update tests if applicable
- Run
pytest tests/ -v— everything must pass - Commit with a clear message following conventional commits:
feat: add Notion export formatfix: handle empty transcript filesdocs: update MCP tool descriptionsbench: add LoCoMo turn-level metrics
- Push to your fork and open a PR against
develop
- Formatting: Ruff with 100-char line limit (configured in
pyproject.toml) - Naming:
snake_casefor functions/variables,PascalCasefor classes - Docstrings: on all modules and public functions
- Type hints: where they improve readability
- Dependencies: minimize. ChromaDB + PyYAML only. Don't add new deps without discussion.
Check the Issues tab. Great starting points:
- New chat formats: Add import support for Cursor, Copilot, or other AI tool exports
- Room detection: Improve pattern matching in
room_detector_local.py - Tests: Increase coverage — especially for
knowledge_graph.pyandpalace_graph.py - Entity detection: Better name disambiguation in
entity_detector.py - Docs: Improve examples, add tutorials
If you're planning a significant change, open an issue first to discuss the approach. Key principles:
- Verbatim first: Never summarize user content. Store exact words.
- Local first: Everything runs on the user's machine. No cloud dependencies.
- Zero API by default: Core features must work without any API key.
- Palace structure is scoping, not magic: Wings, halls, and rooms act as metadata filters in the underlying vector store. They keep retrieval predictable when a palace holds many unrelated projects or people. Respect the hierarchy — but don't present it as a novel retrieval mechanism.
- Discord: Join us
- Issues: Bug reports and feature requests welcome
- Discussions: For questions and ideas
MIT — your contributions will be released under the same license.