Thanks for contributing. This guide is intentionally short so you can start fast.
- Check existing issues and discussions.
- Fork the repo and create a branch.
- Run the local setup.
- Make a focused change.
- Run checks and open a PR.
git clone https://github.com/YOUR_USERNAME/EverMemOS.git
cd EverMemOS
# install dependencies
uv sync --group dev
# configure environment
cp env.template .env
# start infrastructure (optional for docs-only changes)
docker compose up -dRun these checks from repo root:
PYTHONPATH=src uv run pytest tests/
uv run black --check src tests demo
uv run isort --check-only src tests demoOptional helper targets:
make lint
make test- Python style follows PEP 8.
- Use type hints for new/changed code.
- Use
async/awaitfor I/O paths. - Formatting is Black with line length
88. - Use absolute imports from project modules.
- Avoid wildcard imports (
from x import *). - For time conversion logic, prefer
common_utils.datetime_utils.
Suggested branch names:
feature/<short-name>fix/<short-name>docs/<short-name>refactor/<short-name>
Commit style:
- Commit messages are validated by a
commit-msghook using Conventional Commits. - Required format:
<type>(<scope>)?: <description>or<type>!: <description>. - Allowed types:
feat,fix,docs,style,refactor,perf,test,build,ci,chore,revert.
Examples:
feat(api): add memory search paginationfix(core): handle empty tenant idrefactor(di)!: simplify lifecycle bootstrap
Please include:
- What changed and why.
- Linked issue (if available).
- How you tested it.
- Screenshots for UI changes (if applicable).
Keep PRs focused. Smaller PRs review faster.
- Bug report: https://github.com/EverMind-AI/EverMemOS/issues/new?template=bug_report.md
- Feature request: https://github.com/EverMind-AI/EverMemOS/issues/new?template=feature_request.md
Do not report security vulnerabilities in public issues.
- See: Security Policy
- Report via email:
evermind@shanda.com
By contributing, you agree your contributions are licensed under the Apache License 2.0 in this repository.