Thanks for your interest in contributing! smelt is maintained by Redrock Software.
git clone https://github.com/go-redrock-software/smelt.git
cd smelt
pip install -e ".[all,dev]"Run all checks before submitting a PR:
ruff check . # lint
ruff format --check . # format check
mypy src/smelt # type check (strict mode)
pytest # tests- Python 3.11+, async throughout
- All logging to stderr (stdout is MCP JSON-RPC)
- CPU-heavy work wrapped in
asyncio.to_thread() - Every backend is optional — smelt must work with any single backend installed
- No
assertfor runtime checks — use proper exceptions fromsmelt.types
- Create
src/smelt/backends/your_backend.pyimplementingBaseConverter - Register it in
src/smelt/registry.py - Add an install extra in
pyproject.toml - Add tests in
tests/backends/ - Follow the patterns in SPEC_02_BACKENDS.md
- Create
src/smelt/formatters/your_format.pyimplementingBaseFormatter - Register it in
src/smelt/registry.py - Add tests in
tests/formatters/ - Follow the patterns in SPEC_03_FORMATTERS.md
- One feature or fix per PR
- Include tests for new functionality
- All CI checks must pass
- Keep commits focused — squash if needed
Open an issue at github.com/go-redrock-software/smelt/issues with:
- What you expected vs what happened
- Steps to reproduce
- Python version and installed backends (use the
list_backendsMCP tool, orpip list | grep smelt)