Thank you for your interest in contributing to DeltaLLM! This document provides guidelines for contributing to the project.
- Python 3.11+
- Node.js 20+
- PostgreSQL 15+
- Redis 7+ (optional but recommended)
- uv for Python dependency management
-
Fork and clone the repository
git clone https://github.com/YOUR_USERNAME/deltallm.git cd deltallm -
Install Python dependencies
uv sync --dev
-
Install UI dependencies
cd ui npm ci cd ..
-
Set up environment variables
export DATABASE_URL="postgresql://postgres:postgres@localhost:5432/deltallm" export DELTALLM_CONFIG_PATH=./config.yaml export DELTALLM_MASTER_KEY="$(python3 -c 'import secrets; print(\"sk-\" + secrets.token_hex(20) + \"A1\")')" export DELTALLM_SALT_KEY="$(openssl rand -hex 32)" export OPENAI_API_KEY="sk-your-openai-key"
-
Create config and initialize the database
cp config.example.yaml config.yaml uv run prisma generate --schema=./prisma/schema.prisma uv run prisma db push --schema=./prisma/schema.prisma
-
Start the development servers
Backend:
uv run uvicorn src.main:app --host 0.0.0.0 --port 8000 --reload
UI (in another terminal):
cd ui npm run dev
See Local Development in the README for more details.
-
Create a branch for your changes
git checkout -b feature/your-feature-name
-
Make your changes and ensure they follow our code style
-
Run tests to make sure nothing is broken
uv run pytest
-
Run the linter to check code style
uv run ruff check . -
Commit your changes with a clear commit message
-
Push to your fork and submit a pull request
- Describe what your PR does and why it's needed
- Reference any related issues using
Fixes #123orCloses #123 - Ensure tests pass before submitting
- Keep changes focused — one feature or fix per PR
- Update documentation if your changes affect usage
- We use Ruff for Python linting
- Follow PEP 8 style guidelines
- Write docstrings for public functions and classes
- Keep functions focused and modular
- Write tests for new features
- Ensure existing tests pass
- Use
pytestfor running tests
# Run all tests
uv run pytest
# Run with verbose output
uv run pytest -v
# Run specific test file
uv run pytest tests/test_specific.pyWhen reporting bugs, please include:
- Clear description of the issue
- Steps to reproduce the problem
- Expected vs actual behavior
- Environment details (OS, Python version, etc.)
- Relevant logs or error messages
- Check the documentation
- Open a discussion for questions
- Join our community conversations
By contributing to DeltaLLM, you agree that your contributions will be licensed under the MIT License.
Thank you for helping make DeltaLLM better! 🚀