Thank you for considering contributing to TurboMemory! We're building a Claude-style long-term memory system that runs on a laptop, and we need your help.
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/TurboMemory.git - Create a branch:
git checkout -b feature/my-feature - Install dev dependencies:
pip install -e ".[dev]" - Make your changes
- Run tests:
pytest tests/ -v - Run linters:
black . && ruff check . - Push and open a Pull Request
Look for issues labeled good first issue. These are beginner-friendly tasks perfect for your first contribution.
| Area | Description |
|---|---|
| Benchmarks | Compare TurboMemory vs Mem0, Zep, LangMem on memory usage, latency, accuracy |
| Framework Integrations | LangChain, LangGraph, CrewAI, AutoGen, LlamaIndex, Haystack |
| Documentation | Tutorials, API docs, architecture diagrams |
| Testing | More unit tests, integration tests, property-based tests |
| Web Dashboard | Streamlit/Gradio UI for browsing topics and quality scores |
| Performance | Optimize quantization, reduce memory footprint, speed up retrieval |
# Run all tests
pytest tests/ -v
# Run with coverage
pytest tests/ -v --cov=turbomemory --cov-report=html
# Run specific test file
pytest tests/test_turbomemory.py -v# Run default benchmark suite
python -m turbomemory.benchmark
# Run specific benchmarks
python -c "
from turbomemory.benchmark import MemoryBenchmark, BenchmarkConfig
config = BenchmarkConfig(
num_vectors=10000,
bit_depths=[4, 6, 8],
num_queries=100
)
bench = MemoryBenchmark(config)
results = bench.run_all()
bench.print_summary()
"We use Black for formatting and Ruff for linting:
# Format code
black turbomemory/ tests/ cli.py consolidator.py daemon.py
# Check for issues
ruff check turbomemory/ tests/ cli.py consolidator.py daemon.pymypy turbomemory/- One feature per PR — keep PRs focused and small
- Include tests — new features should have corresponding tests
- Update docs — update README or docstrings if behavior changes
- Follow conventions — match existing code style (Black + Ruff)
- Reference issues — link to any related issues
## Summary
- What does this PR do?
- Why is it needed?
## Changes
- [ ] Code changes
- [ ] Tests added/updated
- [ ] Documentation updated
- [ ] Changelog updated
## Testing
- How did you test this change?
- What edge cases did you consider?TurboMemory has a plugin system for extending functionality. See turbomemory/plugins/ for the interface.
from turbomemory.plugins import QualityScorer
class MyCustomScorer(QualityScorer):
def score(self, chunk) -> float:
# Your custom scoring logic
passUse our bug report template.
Include:
- TurboMemory version
- Python version
- OS
- Minimal reproduction case
- Expected vs actual behavior
Use our feature request template.
- Discussions: Share ideas, ask questions
- Issues: Report bugs, request features
- Pull Requests: Contribute code
Please read our Code of Conduct before participating.
By contributing, you agree that your contributions will be licensed under the MIT License.