Thank you for your interest in contributing! This guide covers everything you need to get started.
# Clone the repository
git clone https://github.com/HKUDS/LightRAG.git
cd LightRAG
# Install in development mode (requires uv)
uv sync
source .venv/bin/activate # Linux/macOS
# .venv\Scripts\activate # Windows
# Install with optional extras as needed
uv sync --extra api # FastAPI server
uv sync --extra test # Test dependencies
uv sync --extra offline-storage # Storage backends
uv sync --extra offline-llm # Additional LLM providers
# Set up pre-commit hooks (run once)
pip install pre-commit
pre-commit install
This project uses Ruff for formatting and linting, enforced via pre-commit.
Running pre-commit run --all-files will automatically fix most style issues:
# Fix all files
pre-commit run --all-files
# Fix only staged files (faster during development)
pre-commit run
| Hook | What it does |
|---|---|
trailing-whitespace |
Removes trailing whitespace |
end-of-file-fixer |
Ensures files end with a newline |
requirements-txt-fixer |
Keeps requirements.txt entries sorted |
ruff-format |
Formats Python code (Black-compatible) |
ruff |
Fixes Python lint errors |
The same checks run automatically on every pull request. If the CI check fails, run pre-commit run --all-files locally, commit the fixes, and push again.
# Run offline tests (no external services required)
python -m pytest tests
# Run integration tests (requires configured external services)
python -m pytest tests --run-integration
# Run a specific test file
python -m pytest tests/chunker/test_chunking.py
# Keep test artifacts for debugging
python -m pytest tests --keep-artifacts
Set LIGHTRAG_RUN_INTEGRATION=true as an environment variable as an alternative to --run-integration.
Fork the repository and create a branch from main:
git checkout -b fix/your-descriptive-branch-name
Make your changes and ensure:
pre-commit run --all-filespython -m pytest testsCommit with a clear message describing why the change was made:
git commit -m "fix: handle permission-only encrypted PDFs without password"
Push and open a pull request against main. Fill out the pull request template completely.
Respond to review feedback — a maintainer will review your PR and may request changes.
pre-commit run --all-files)Please use the Bug Report issue template. Include:
Please use the Feature Request issue template. Describe:
For usage questions, check the Discussions tab or open a Question issue.