Thanks for your interest in contributing to Hindsight!
-
Fork and clone the repository
git clone git@github.com:vectorize-io/hindsight.git cd hindsight -
Set up your environment:
cp .env.example .env
Edit the .env to add LLM API key and config as required
-
Install dependencies:
# Python dependencies uv sync --directory hindsight-api/ # Node dependencies (uses npm workspaces) npm install
./scripts/dev/start-api.sh./scripts/dev/start-control-plane.sh./scripts/dev/start-docs.shcd hindsight-api
uv run pytest tests/We use Ruff for Python linting and formatting, and ESLint/Prettier for TypeScript.
Set up git hooks to automatically lint and format code before each commit:
./scripts/setup-hooks.shThis configures git to use the hooks in .githooks/, which run all scripts in scripts/hooks/ on commit. The lint hook runs in parallel:
- Python:
ruff check --fix,ruff format,ty check - TypeScript:
eslint --fix,prettier
# Run all lints (same as pre-commit)
./scripts/hooks/lint.sh
# Or run individually for Python:
cd hindsight-api
uv run ruff check --fix . # Lint and auto-fix
uv run ruff format . # Format code
uv run ty check hindsight_api # Type check- Use Python type hints
- Follow existing code patterns
- Keep functions focused and well-named
- Create a feature branch from
main - Make your changes
- Run tests to ensure nothing breaks
- Submit a PR with a clear description of changes
The project uses scripts/release.sh for creating releases. This script automates the entire release workflow:
- Bumps version in all components (API, clients, CLI, control plane, Helm)
- Regenerates OpenAPI spec and client SDKs (Python, TypeScript, Rust)
- Updates documentation versioning
- Creates a commit and git tag
- Pushes to GitHub (triggers CI/CD to publish packages)
./scripts/release.sh <version>Example:
./scripts/release.sh 0.5.0- During development, version bumps in
__init__.pydo NOT require client regeneration - Clients are only regenerated during releases
- Do not manually run
./scripts/generate-clients.shunless testing generation changes - Client version comments will reflect the API version from the latest release
Open an issue on GitHub with:
- Clear description of the problem
- Steps to reproduce
- Expected vs actual behavior
- Environment details (OS, Python version)
Open a discussion on GitHub or reach out to the maintainers.