Thanks for your interest in contributing! This guide will help you get started.
git clone https://github.com/afx-team/hebb-mind.git
cd hebb-mind
python -m venv .venv
source .venv/bin/activate # or .venv\Scripts\activate on Windows
pip install -e ".[dev]"# All tests
pytest tests/ -v
# With coverage
pytest tests/ -v --cov=hebb
# Single file
pytest tests/test_storage.py -vWe use Ruff for linting and formatting:
# Lint
ruff check src/
# Auto-fix
ruff check src/ --fix
# Type check
mypy src/hebb/src/hebb/
config/ Settings + config loading
models/ Pydantic data models
storage/ Storage backends (SQLite, PostgreSQL)
embedding/ Text embedding providers
retrieval/ Memory search + scoring
graph/ Tag knowledge graph
agents/ LLM-powered memory agents
scheduler/ Background jobs
server/ FastAPI REST API
cli/ CLI commands
- Implement the
MemoryStoreandPartitionStoreprotocols fromstorage/base.py - Add a migration file for your database schema
- Register the backend in
storage/factory.py - Add optional dependencies to
pyproject.toml
- Fork and branch — Create a feature branch from
main - Test — Add tests for new functionality. Run
pytestbefore submitting - Lint — Ensure
ruff check src/passes with no errors - Commit messages — Use clear, descriptive commit messages
- PR description — Explain what your change does and why
- Use GitHub Issues
- Include steps to reproduce, expected behavior, and actual behavior
- Include your Python version, OS, and Hebb Mind version
Please do not file public issues for security vulnerabilities — see SECURITY.md for the private disclosure process.
Releases are cut from main and published to PyPI by .github/workflows/publish.yml. To ship a new version:
- Bump
versioninpyproject.tomlandsrc/hebb/__init__.py(keep them in sync). - Move entries from
## [Unreleased]to a new## [X.Y.Z]section inCHANGELOG.mdand update the link references at the bottom. - Open a PR with the version bump + changelog; merge once CI is green.
- The push to
maintriggerspublish.yml, which re-runs the test matrix, builds the package, uploads to PyPI via Trusted Publisher, and creates thevX.Y.Zgit tag. - After publish, draft a GitHub Release for the new tag using the changelog entry as the body.
By contributing, you agree that your contributions will be licensed under the MIT License.