Thanks for your interest in contributing! This guide will help you get started.
- Python 3.12+
- uv — fast Python package manager
git clone https://github.com/PlateerLab/synaptic-memory.git
cd synaptic-memory
uv sync --extra dev --extra sqlite --extra neo4j --extra qdrant --extra minio# All tests (requires external services: Neo4j, Qdrant, MinIO)
uv run pytest tests/ -v
# Skip external backends (recommended for most contributors)
uv run pytest tests/ --ignore=tests/test_backend_postgresql.py --ignore=tests/benchmark --ignore=tests/qa -vWe use Ruff for linting and formatting:
uv run ruff check --fix
uv run ruff formatBoth checks must pass before merging. CI runs ruff check and ruff format --check automatically.
- Ruff handles all formatting and linting — no additional tools needed.
- Type hints are required for all function signatures.
- Keep imports sorted (Ruff handles this via
isortrules).
- Create a feature branch from
main— do not push directly tomain. - All tests must pass before requesting review.
- Use conventional commit messages:
feat:new featurefix:bug fixdocs:documentation onlyrefactor:code restructuring without behavior changetest:adding or updating testschore:maintenance tasks
- Keep PRs focused — one feature or fix per PR.
- Add tests for new functionality.
src/synaptic/
├── graph.py # Main facade (SynapticGraph)
├── search.py # Hybrid search engine
├── agent_search.py # Intent-based agent search
├── resonance.py # Multi-axis scoring
├── hebbian.py # Co-activation learning
├── consolidation.py # Memory consolidation cascade
├── ontology.py # Type hierarchy & constraints
├── activity.py # Agent activity tracking
├── models.py # Core data models
└── backends/ # Storage backends (Memory, SQLite, PostgreSQL, Neo4j, Qdrant, MinIO)
Open an issue on GitHub — we're happy to help.