Thank you for your interest in contributing to Aegis Memory! This document provides guidelines and information for contributors.
Key principles we follow:
- Agent-native, multi-agent first - Features should make multi-agent systems more reliable
- Context engineering > raw storage - We're not just a vector store
- Monday-morning usable - Prioritize DX and easy adoption
- Boring to run - Production reliability over clever features
- Open and composable - No walled garden
# Clone the repo
git clone https://github.com/quantifylabs/aegis-memory.git
cd aegis-memory
# Create virtual environment
python -m venv venv
source venv/bin/activate # or `venv\Scripts\activate` on Windows
# Install dev dependencies
pip install -e ".[dev]"
# Start local services
docker-compose up -d
# Run tests
pytestWe use Ruff for linting and formatting:
# Check code
ruff check .
# Format code
ruff format .
# Type checking
mypy aegis_memory- Bug Reports: Include steps to reproduce, expected behavior, and actual behavior
- Feature Requests: Explain the use case and why it benefits multi-agent systems
- Questions: Use GitHub Discussions instead of Issues
-
Fork and branch: Create a branch from
mainwith a descriptive namefeat/add-langgraph-integrationfix/query-timeout-handlingdocs/improve-quickstart
-
Make changes: Follow the code style and add tests
-
Test locally:
pytest tests/ ruff check . -
Write a good PR description:
- What does this change?
- Why is it needed?
- How was it tested?
-
Link related issues: Use "Fixes #123" or "Relates to #456"
Follow Conventional Commits:
feat: add LangGraph memory integration
fix: handle timeout in cross-agent query
docs: add quickstart guide for CrewAI
test: add tests for ACE voting endpoint
chore: update dependencies
aegis-memory/
├── aegis_memory/ # Python SDK (pip installable)
│ ├── client.py # Main client
│ └── integrations/ # Framework integrations
├── server/ # FastAPI server
│ ├── models.py # SQLAlchemy models
│ ├── routes.py # API endpoints
│ ├── routes_ace.py # ACE pattern endpoints
│ └── ...
├── examples/ # Usage examples
├── tests/ # Test suite
└── docs/ # Documentation
- Memory Model: Core data model with scopes, namespaces, ACE fields
- Repositories: Database operations (
memory_repository.py,ace_repository.py) - Routes: API endpoints (
routes.pyfor core,routes_ace.pyfor ACE patterns) - SDK: Python client for easy integration
# All tests
pytest
# Specific test file
pytest tests/test_memory.py
# With coverage
pytest --cov=aegis_memory- Use
pytestandpytest-asyncio - Test both success and error cases
- Mock external services (OpenAI, etc.)
import pytest
from aegis_memory import AegisClient
@pytest.mark.asyncio
async def test_add_memory():
client = AegisClient(api_key="test", base_url="http://localhost:8000")
result = client.add("test content", agent_id="test-agent")
assert "id" in result- Keep README.md focused on quick start
- Detailed docs go in
docs/ - Code examples should be runnable
Put examples in examples/ with clear naming:
examples/
├── 01-quickstart/
├── 02-multi-agent-handoff/
├── 03-langchain-integration/
├── 04-crewai-integration/
└── 05-ace-patterns/
- Don't commit secrets - Use environment variables
- Report vulnerabilities - Email security@quantifylabs.ai, not public issues
- Review dependencies - Be cautious with new dependencies
- Automated checks: CI must pass (tests, linting)
- Code review: At least one maintainer approval
- Documentation: Update docs if behavior changes
- Changelog: Add entry for user-facing changes
Contributors are recognized in:
- Release notes
- Project README (for significant contributions)
- GitHub Discussions: General questions
- Email: hello@quantifylabs.ai
Thank you for contributing to Aegis Memory! 🛡️