Why Contribute?
Memori is the memory fabric for enterprise AI, and your contributions help:- ✅ Improve memory quality and accuracy
- ✅ Add support for new LLM providers and databases
- ✅ Fix bugs and improve performance
- ✅ Enhance documentation
- ✅ Build a better developer experience
Ways to Contribute
Code Contributions
Bug Fixes
Fix issues reported in GitHub Issues or discovered during your own usage.
New Features
Add support for new LLM providers, database adapters, or framework integrations.
Performance
Optimize memory recall, embeddings, or database queries.
Tests
Improve test coverage or add integration tests.
Non-Code Contributions
Documentation
Improve guides, add examples, or fix typos.
Examples
Create cookbook recipes or integration examples.
Bug Reports
Report issues with detailed reproduction steps.
Feature Requests
Suggest new features or improvements.
Project Overview
Memori is a Python SDK for adding memory to LLM applications. Here’s how it’s structured:Repository Structure
Technology Stack
- Python 3.10+ - Modern Python with type hints
- uv - Fast dependency management
- pytest - Testing framework
- Ruff - Linting and formatting
- sentence-transformers - Embeddings generation
- faiss - Vector similarity search
- Docker - Development and integration testing environment
Supported Integrations
LLM Providers
Memori currently supports:- OpenAI - Chat Completions & Responses API
- Anthropic - Claude models
- Google - Gemini models
- AWS Bedrock - Multiple providers
- Grok (xAI) - Grok models
Frameworks
- Agno - Agent framework integration
- LangChain - LangChain integration
Database Adapters
- PostgreSQL (psycopg2, psycopg3)
- MySQL / MariaDB (pymysql)
- MongoDB (pymongo)
- SQLite (stdlib)
- Oracle (cx_Oracle, python-oracledb)
- CockroachDB (PostgreSQL-compatible)
- Neon, Supabase (PostgreSQL-compatible)
- OceanBase
- Django ORM
- SQLAlchemy
- DB-API 2.0 compatible connections
Development Philosophy
We follow these principles:KISS (Keep It Simple, Stupid)
Lean, simple code is preferred over complex solutions. If there’s a simpler way, use it.YAGNI (You Aren’t Gonna Need It)
Don’t add functionality until it’s actually needed. Focus on the current requirements.Self-Documenting Code
Code should be clear enough to understand without comments. Use:- Descriptive variable and function names
- Type hints
- Docstrings for public APIs only
Type Safety
All public APIs must have type hints:Code Standards
We use Ruff for linting and formatting:- Line length: 88 characters (Black-compatible)
- Python version: 3.10+ syntax
- Style: PEP 8 compliant
- Import order: Managed by Ruff
Running Code Quality Checks
Testing Requirements
All code changes must include tests:Unit Tests
Fast tests that use mocks, no external dependencies:Integration Tests
Tests that require real databases and LLM API keys:Coverage Requirements
We maintain high test coverage:Pull Request Process
Create a feature branch
feature/- New featuresfix/- Bug fixesdocs/- Documentation updatesperf/- Performance improvements
Set up development environment
See Development Setup for detailed instructions.
Make your changes
- Write code following our standards
- Add/update tests
- Update documentation if needed
- Update CHANGELOG.md under “Unreleased” section
Commit your changes
feat:- New featurefix:- Bug fixdocs:- Documentationperf:- Performance improvementrefactor:- Code refactoringtest:- Add/update tests
Push and create PR
- Clear description of changes
- Link to related issues
- Screenshots/examples if applicable
Contribution Guidelines
Do’s ✅
- Follow PEP 8 and our code standards
- Write tests for all new code
- Keep commits atomic and well-described
- Update documentation for new features
- Add entries to CHANGELOG.md
- Use type hints for all public APIs
- Run pre-commit hooks before pushing
Don’ts ❌
- Don’t submit PRs with failing tests
- Don’t mix multiple unrelated changes in one PR
- Don’t add dependencies without discussion
- Don’t break backward compatibility without consensus
- Don’t submit generated code without review
- Don’t ignore linting/formatting errors
First-Time Contributors
New to open source? Here are some good first issues:Documentation
Fix typos, improve clarity, add examples
Tests
Add test coverage for existing code
Examples
Create new cookbook recipes
Bug Fixes
Look for issues labeled
good first issueCommunication
Join the conversation:- Discord: discord.gg/abD4eGym6v - Chat with the community
- GitHub Issues: github.com/MemoriLabs/Memori/issues - Report bugs, request features
- GitHub Discussions: Share ideas and ask questions
- Email: [email protected] - Direct contact with the team
Recognition
Contributors are recognized in:- The project’s README
- Release notes
- GitHub’s contributor graph
- Our hearts ❤️
Code of Conduct
We’re committed to providing a welcoming and inclusive environment. Please:- Be respectful and constructive
- Welcome newcomers
- Focus on what’s best for the community
- Show empathy toward others
License
By contributing to Memori, you agree that your contributions will be licensed under the Apache 2.0 License.Next Steps
Development Setup
Set up your development environment
Guidelines
Detailed contribution guidelines
GitHub Issues
Find issues to work on
Discord
Join the community
Thank you for contributing to Memori! Together, we’re building the future of AI memory. 🧠✨