Thank you for contributing! Here's how to get started.
git clone https://github.com/yourusername/synthron
cd synthron
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[dev]"
cp .env.example .env
# Add at least GEMINI_API_KEY and GROQ_API_KEYpytest tests/ -v
pytest tests/ --cov=synthron --cov-report=term-missingruff check synthron/ tests/
black synthron/ tests/
mypy synthron/These run automatically in CI on every PR.
- Create
synthron/tools/my_tool.pyinheriting fromBaseTool - Add to
DEFAULT_TOOLSinsynthron/tools/__init__.py - Add tests in
tests/test_tools.py - Document in
docs/tools.md
from synthron.tools.base_tool import BaseTool, ToolResult
class MyTool(BaseTool):
name = "my_tool"
description = "Does X given Y input"
async def execute(self, input_data: str) -> ToolResult:
output = do_something(input_data)
return ToolResult(success=True, output=str(output))- Create
synthron/providers/my_provider.pyinheriting fromBaseProvider - Add to
_load_provider()insmart_router.py - Add
DAILY_LIMITSentry - Add to
AGENT_ROUTINGwhere appropriate - Add env var to
.env.example
- Fork the repo
- Create a branch:
git checkout -b feat/my-feature - Write tests for your changes
- Ensure CI passes:
pytest && ruff check && black --check - Open a PR with a clear description
Use GitHub Issues. Include:
- Python version
- Error traceback
- Minimal reproduction case
- Which provider(s) you're using
By contributing, you agree your contributions will be licensed under MIT.