Skip to main content

Development Contributions

We strive to make contributions easy, collaborative, and enjoyable. Follow the steps below to ensure a smooth contribution process.

Submitting Your Contribution through PR

To contribute, follow these steps:
  1. Fork & Clone the repository: Mem0 on GitHub
  2. Create a Feature Branch: Use a dedicated branch for your changes, e.g., feature/my-new-feature
  3. Implement Changes: If adding a feature or fixing a bug, ensure to:
    • Write necessary tests
    • Add documentation, docstrings, and runnable examples
  4. Code Quality Checks:
    • Run linting to catch style issues
    • Ensure all tests pass
  5. Submit a Pull Request
For detailed guidance on pull requests, refer to GitHub’s documentation.

Dependency Management

We use hatch as our package manager. Install it by following the official instructions. Do NOT use pip or conda for dependency management. Instead, follow these steps in order:
# 1. Install base dependencies
make install

# 2. Activate virtual environment (this will install dependencies)
hatch shell  # For default environment
hatch -e dev_py_3_11 shell  # For dev_py_3_11 (differences are mentioned in pyproject.toml)

# 3. Install all optional dependencies
make install_all

Development Standards

Pre-commit Hooks

Ensure pre-commit is installed before contributing:
pre-commit install

Linting with ruff

Run the linter and fix any reported issues before submitting your PR:
make lint

Code Formatting

To maintain a consistent code style, format your code:
make format

Testing with pytest

Run tests to verify functionality before submitting your PR:
make test
Note: Some dependencies have been removed from the main dependencies to reduce package size. Run make install_all to install necessary dependencies before running tests.

Release Process

Currently, releases are handled manually. We aim for frequent releases, typically when new features or bug fixes are introduced.
Thank you for contributing to Mem0!
I