First off, thank you for considering contributing to Engram.
First-time contributors are very welcome. If this is your first open-source contribution, you are in the right place.
This project is committed to a respectful, constructive, low-drama collaboration style.
- Be kind, direct, and specific.
- Assume good intent.
- Critique code, not people.
Please read the Code of Conduct. By participating, you agree to follow it.
- Open or pick an issue to work on.
- Leave a short comment so work is not duplicated.
- Fork the repo and create a branch.
- Make a focused change.
- Open a pull request using the template.
Small docs improvements are a great first PR.
- Clone the repository:
git clone https://github.com/shugav/engram.git
cd engram- Create and activate a virtual environment:
python3 -m venv .venv
source .venv/bin/activate- Install dependencies:
pip install -r requirements.txt- Configure environment:
cp .env.example .env
# Edit .env with your OpenAI API keypython -m engram # stdio mode (default)
python -m engram --transport sse # SSE mode
python -m engram --transport sse --port 9000 # SSE custom portsrc/engram/
├── server.py # MCP tools and server entry point
├── db.py # SQLite schema and data access
├── search.py # Three-layer search engine (BM25 + vector + graph)
├── embeddings.py # OpenAI embedding client
├── chunker.py # Text chunking with overlap
└── types.py # Pydantic data models
- Bug reports: include clear steps to reproduce and expected behavior.
- Feature requests: include use case, motivation, and alternatives.
- Code contributions: keep changes scoped and easy to review.
- Documentation: improve clarity, examples, and onboarding.
- Keep each PR focused on one logical change.
- Link the related issue when possible.
- Update docs when behavior changes.
- Add or update tests when practical.
- Use clear commit messages and PR descriptions.
Maintainers aim to provide feedback that is:
- Respectful and actionable
- Focused on correctness and maintainability
- Supportive for new contributors
If feedback is unclear, ask follow-up questions. That is encouraged.
- Open an issue using the templates.
- Include context, logs, and what you already tried.
- If you are unsure where to start, mention that you want a "good first issue."
By contributing, you agree that your contributions are licensed under the MIT License.