Thank you for your interest in contributing to Wavefront! We welcome contributions from the community and are excited to work with you.
This guide will help you get started with contributing to the Wavefront project. Please read it carefully before making your first contribution.
This project adheres to a Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to vishnu@rootflo.ai.
Before you begin, ensure you have:
- Python 3.10 or higher (check with
python --version) - Git installed and configured
- uv package manager (recommended) or pip/poetry
- API keys for LLM providers (for testing):
- OpenAI API key (optional, for OpenAI tests)
- Anthropic API key (optional, for Claude tests)
- Google API key (optional, for Gemini tests)
- Fork the repository on GitHub
- Clone your fork:
git clone https://github.com/your-username/wavefront.git cd wavefront - Add upstream remote:
git remote add upstream https://github.com/rootflo/wavefront.git
We recommend using uv for dependency management:
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
# Navigate to flo_ai directory
cd flo_ai
# Sync dependencies (installs all dependencies including dev dependencies)
uv sync
# Activate the virtual environment
source .venv/bin/activate # On macOS/Linux
# or
.venv\Scripts\activate # On WindowsAlternatively, using pip:
# Navigate to flo_ai directory
cd flo_ai
# Install in development mode
pip install -e .
# Install development dependencies
pip install -e ".[dev]"For contributing to wavefront:
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
# Navigate to flo_ai directory
cd wavefront
# Sync dependencies (installs all dependencies including dev dependencies)
uv sync --all-packages
# Activate the virtual environment
source .venv/bin/activate # On macOS/Linux
# or
.venv\Scripts\activate # On WindowsSet up your API keys for testing (create a .env file or export them). Please find the documentation on environment variables here.
For local development, you can use the following instructions in quick start mentioned here.
Always create a new branch for your work:
# Update your local main branch
git checkout main
git pull upstream main
# Create a new branch
git checkout -b feature/your-feature-name
# or
git checkout -b fix/your-bug-fix
# or
git checkout -b docs/your-documentation-updateBranch naming conventions:
feature/- New featuresfix/- Bug fixesdocs/- Documentation updatesrefactor/- Code refactoringtest/- Test additions or updateschore/- Maintenance tasks
- Write clean, maintainable code
- Follow the code style guidelines (see below)
- Add tests for new features
- Update documentation as needed
- Keep commits focused and atomic
# Run all tests
pytest
# Run specific test file
pytest tests/unit-tests/test_your_file.py
# Run with coverage
pytest --cov=flo_ai --cov-report=html
# Run integration tests (requires API keys)
pytest tests/integration-tests/ -m integrationUse Conventional Commits format:
git commit -m "feat: add new feature description"
git commit -m "fix: resolve bug in agent builder"
git commit -m "docs: update contributing guide"Commit types:
feat:- New featurefix:- Bug fixdocs:- Documentation changesstyle:- Code style changes (formatting, etc.)refactor:- Code refactoringtest:- Test additions or updateschore:- Maintenance tasksperf:- Performance improvementsci:- CI/CD changes
Regularly sync with upstream:
git fetch upstream
git rebase upstream/main# Push to your fork
git push origin feature/your-feature-name
# Then create a Pull Request on GitHub# Run all tests
cd wavefront
# Run all unit tests
pytest tests/unit-tests/
# Run specific test file
pytest tests/unit-tests/test_agent_builder.py
# Run with verbose output
pytest -v
# Run with coverage
pytest --cov=flo_ai --cov-report=term-missing
# Run only integration tests (requires API keys)
pytest tests/integration-tests/ -m integration
# Skip integration tests
pytest -m "not integration"- All tests must pass before submitting a PR
- New features should include tests
- Bug fixes should include regression tests
- Integration tests are optional but encouraged for LLM integrations
We follow Conventional Commits specification:
<type>(<scope>): <subject>
<body>
<footer>
Examples:
feat(arium): add parallel router support
Add support for executing independent agents in parallel
to improve workflow performance.
Closes #123
fix(builder): resolve memory leak in agent builder
Fix memory leak that occurred when building multiple agents
in a single session.
Fixes #456
docs(readme): update installation instructions
Update installation instructions to include uv package manager
as the recommended option.
Types:
feat- New featurefix- Bug fixdocs- Documentationstyle- Formatting, missing semicolons, etc.refactor- Code refactoringtest- Adding or updating testschore- Maintenance tasksperf- Performance improvements
- ✅ Tests pass - All tests should pass locally
- ✅ Code formatted - Run pre-commit hooks or format manually
- ✅ Documentation updated - Update relevant documentation
- ✅ Branch is up-to-date - Rebase on latest main branch
- ✅ No merge conflicts - Resolve any conflicts
When creating a PR, ensure:
- Clear description of changes
- Reference to related issues (if any)
- Tests added/updated
- Documentation updated
- Code follows style guidelines
- All tests pass
- No breaking changes (or clearly documented)
## Description
Brief description of changes
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update
## Testing
Describe how you tested your changes
## Checklist
- [ ] Code follows style guidelines
- [ ] Tests added/updated
- [ ] Documentation updated
- [ ] All tests pass
## Related Issues
Closes #123- Automated Checks - CI will run tests and linting
- Code Review - Maintainers will review your PR
- Feedback - Address any feedback or requested changes
- Approval - Once approved, your PR will be merged
Tips for faster reviews:
- Keep PRs focused and small
- Respond to feedback promptly
- Be open to suggestions
- Test thoroughly before submitting
We welcome various types of contributions:
- Check if the bug has already been reported
- Use the bug report template
- Include:
- Clear description
- Steps to reproduce
- Expected vs actual behavior
- Environment details
- Error messages/logs
- Check if the feature has been requested
- Use the feature request template
- Include:
- Clear description
- Use case and motivation
- Proposed implementation (if you have ideas)
- Alternatives considered
- New Features - Implement features from the roadmap or your own ideas
- Bug Fixes - Fix reported bugs
- Performance Improvements - Optimize existing code
- Refactoring - Improve code structure without changing functionality
- Tests - Add or improve test coverage
- Tutorials - Write tutorials for common use cases
- Examples - Add example code
- API Documentation - Improve API documentation
- Translation - Translate documentation (if applicable)
- UI/UX Improvements - Improve Studio interface
- Icons/Graphics - Design icons or graphics
- Documentation Design - Improve documentation layout
- Answer Questions - Help others in discussions
- Review PRs - Review and test others' contributions
- Share Use Cases - Share how you're using Flo AI
- GitHub Discussions - For questions and discussions
- GitHub Issues - For bug reports and feature requests
- Email - vishnu@rootflo.ai for direct contact
- Documentation - https://flo-ai.rootflo.ai
- README - Check the main README.md and flo_ai/README.md
- Roadmap - See ROADMAP.md for planned features
- Examples - Check
flo_ai/examples/for code examples
- Search - Check if your question has been answered
- Read Documentation - Review relevant documentation
- Check Examples - Look at example code
- Reproduce - Try to reproduce the issue yourself
Contributors will be recognized in:
- README.md - Contributor list (for significant contributions)
- Release Notes - Credit for contributions in releases
- Documentation - Attribution for documentation contributions
Thank you for taking the time to contribute to Wavefront! Your contributions help make this project better for everyone.