Thanks for your interest in contributing to Thoth.
git clone https://github.com/YOUR_USERNAME/project-thoth.git
cd project-thoth
git remote add upstream https://github.com/acertainKnight/project-thoth.git
uv venv && uv sync
cp .env.example .env # fill in your API keys
export OBSIDIAN_VAULT_PATH="/path/to/test/vault"
make dev
pytest tests/Use a test vault for development, not your real research vault.
- Check for existing issues before starting work
- For anything non-trivial, open an issue to discuss the approach first
- Fork, branch from
main, make your changes - Run
pytest tests/anduv run ruff check .before pushing - Open a PR with a clear description of what changed and why
- Formatting: Ruff (PEP 8, 88 char line length, single quotes)
- Type hints: Required for public functions (Python 3.12+ syntax)
- Docstrings: Google-style for public APIs
- File size: Keep files under 500 lines; split if they get bigger
- Tests: Add tests for new features; put them in
tests/mirroring thesrc/structure
uv run ruff check . # lint
uv run ruff format . # auto-format
uv run ruff check --fix . # auto-fixFollow Conventional Commits:
feat(mcp): add citation network analysis tool
fix(pipeline): handle malformed PDF metadata gracefully
test(citations): add fuzzy matching edge cases
docs(setup): update Docker instructions for ARM
src/thoth/services/— business logicsrc/thoth/mcp/tools/— MCP tool implementationssrc/thoth/server/routers/— FastAPI endpointssrc/thoth/discovery/plugins/— source pluginstests/unit/— unit teststests/integration/— integration tests
By contributing, you agree that your contributions will be licensed under the Apache 2.0 License.