Thanks for taking the time to contribute. This document explains how to set up the project, the workflow we use, and what we look for in pull requests.
- Rust (stable) — install via rustup
- Python 3.12+ — for the Python bindings and demos
- uv — Python package and project manager
git clone https://github.com/gradium-ai/gradbot.git
cd gradbot
# Build the Rust workspace
cargo build
# Run the Python tests
cd gradbot_py
uv sync
uv run pytestTo work on a demo:
cd demos/simple_chat
uv sync
uv run uvicorn main:app --reloadThe Python demos depend on the gradbot wheel built from the Rust code. After modifying Rust:
make build DEMO=simple_chat # rebuild + reinstall into one demo's venv
make build-all # rebuild + reinstall into every demo's venv- Open a branch off
mainfor each piece of work. - Keep commits small and focused. Each commit should leave the tree in a working state.
- Write commit messages that explain the why, not just the what. The first line is a short summary; add a paragraph below if context helps.
- Run
cargo fmt,cargo clippy, andcargo testbefore pushing.
- One logical change per PR.
- Include a short description of what the PR does and why.
- If the PR changes user-facing behavior, update the relevant README or example.
- If you're adding a new demo, follow the structure of existing demos (
main.py+static/index.html+pyproject.toml).
Open a GitHub issue with a minimal reproduction. For voice/audio bugs, include the OS, browser, and which demo you were running.
By contributing, you agree that your contributions will be dual-licensed under the MIT and Apache-2.0 licenses, matching the project as a whole.