Contributing to Bindu
April 23, 2026 ยท View on GitHub
Thank you for your interest in contributing to Bindu! We're building the Internet of Agents, and your contributions help make that vision a reality. ๐ป
Table of Contents
- Code of Conduct
- Getting Started
- Development Setup
- How to Contribute
- Pull Request Process
- Coding Standards
- Testing Guidelines
- Documentation
- Community
Code of Conduct
By participating in this project, you agree to maintain a respectful and inclusive environment:
- Be respectful and constructive in all interactions
- Welcome newcomers and help them get started
- Focus on what's best for the community and project
- Accept constructive criticism gracefully
- Show empathy towards other community members
Report any unacceptable behavior to raahul@getbindu.com.
Getting Started
Prerequisites
- Python 3.12+ (specifically 3.12.9 recommended)
- uv package manager (recommended) or pip
- Git for version control
- Basic understanding of async Python and FastAPI
- Familiarity with agent frameworks (AG2, Agno, CrewAI, LangChain, etc.) is helpful
Areas to Contribute
We welcome contributions in several areas:
- Core Framework: Improve the Bindu wrapper and protocol implementation
- Protocol Support: Enhance A2A and X402 compliance
- Agent Integrations: Add support for new agent frameworks
- Documentation: Improve guides, examples, and API docs
- Testing: Increase test coverage (target: 80%+)
- Examples: Create demos and use cases
- Bug Fixes: Fix reported issues
- Performance: Optimize code and reduce latency
Development Setup
1. Fork and Clone
# Fork the repository on GitHub, then clone your fork
git clone https://github.com/YOUR_USERNAME/Bindu.git
cd Bindu
# Add upstream remote
git remote add upstream https://github.com/getbindu/Bindu.git
2. Set Up Environment
# Create virtual environment with Python 3.12.9
uv venv --python 3.12.9
# Activate virtual environment
source .venv/bin/activate # On macOS/Linux
# or
.venv\Scripts\activate # On Windows
# Install dependencies (including dev dependencies)
uv sync --dev
3. Install Pre-commit Hooks
# Install pre-commit hooks for code quality
uv run pre-commit install
# Run hooks on all files to verify setup
uv run pre-commit run --all-files
4. Verify Installation
# Run tests to ensure everything works
uv run pytest -n auto --cov=bindu --cov-report=term-missing
# Check that coverage is above 60%
uv run coverage report --skip-covered --fail-under=60
How to Contribute
Finding Issues to Work On
- Check GitHub Issues for open tasks
- Look for issues labeled
good first issueorhelp wanted - Join our Discord to discuss ideas
- Attend weekly community meetups (schedule on Discord)
Before You Start
- Check existing issues/PRs to avoid duplicate work
- Comment on the issue to let others know you're working on it
- For major changes, open an issue first to discuss your approach
- Create a branch from
mainwith a descriptive name
# Create a feature branch
git checkout -b feature/your-feature-name
# Or for bug fixes
git checkout -b fix/issue-description
Pull Request Process
1. Make Your Changes
- Follow the coding standards
- Write tests for new functionality
- Update documentation as needed
- Keep commits focused and atomic
- Write clear commit messages
2. Test Your Changes
# Run all tests
uv run pytest -n auto
# Run tests with coverage
uv run pytest -n auto --cov=bindu --cov-report=term-missing
# Ensure coverage stays above 60%
uv run coverage report --fail-under=60
# Run pre-commit checks
uv run pre-commit run --all-files
3. Update Documentation
- Update docstrings for new/modified functions
- Add examples if introducing new features
- Update
README.mdif needed - Add entry to
CHANGELOG.md(if applicable)
4. Commit Your Changes
# Stage your changes
git add .
# Commit with a descriptive message
git commit -m "feat: add support for new agent framework"
# Or for bug fixes
git commit -m "fix: resolve DID resolution timeout issue"
Commit Message Format:
feat:New featurefix:Bug fixdocs:Documentation changestest:Adding or updating testsrefactor:Code refactoringperf:Performance improvementschore:Maintenance tasks
5. Push and Create PR
# Push to your fork
git push origin feature/your-feature-name
Then create a Pull Request on GitHub:
- Go to your fork on GitHub
- Click "Compare & pull request"
- Fill out the PR template with:
- Clear description of changes
- Related issue numbers (e.g., "Fixes #123")
- Testing performed
- Screenshots (if UI changes)
- Submit the PR
6. PR Review Process
- Maintainers will review within 48 hours
- Address any requested changes
- Keep the PR updated with
mainbranch - Once approved, a maintainer will merge
# Keep your branch updated
git fetch upstream
git rebase upstream/main
git push --force-with-lease origin feature/your-feature-name
Coding Standards
General Principles
- DRY (Don't Repeat Yourself): Avoid code duplication
- Type Safety: Use type hints throughout
- Best Practices: Follow Python and async programming best practices
- Minimal Code: Don't write unnecessary code
Code Style
- Formatter: Code is automatically formatted with pre-commit hooks
- Linting: Follow PEP 8 guidelines
- Type Hints: Use type annotations for all functions
Async Best Practices
- Use
async/awaitfor I/O operations - Avoid blocking calls in async functions
- Use
asyncio.gather()for concurrent operations - Properly handle async context managers
Testing Guidelines
Test Coverage Requirements
- Maintain minimum 70% coverage (target: 80%+)
- All new features must include tests
- Bug fixes should include regression tests
Writing Tests
import pytest
from bindu.core import bindufy
@pytest.mark.asyncio
async def test_agent_initialization():
"""Test that agent initializes correctly."""
config = {"author": "test@example.com", "name": "test_agent"}
agent = await bindufy(my_agent, config, handler)
assert agent.did is not None
assert agent.name == "test_agent"
def test_did_format():
"""Test DID format generation."""
did = generate_did("user@example.com", "my_agent", "uuid-123")
assert did.startswith("did:bindu:")
assert "my_agent" in did
Running Tests
# Run all tests
pytest
# Run specific test file
pytest tests/test_core.py
# Run with coverage
pytest --cov=bindu --cov-report=html
# Run in parallel
pytest -n auto
# Run with verbose output
pytest -v
Documentation Updates
- Update
README.mdfor user-facing changes - Add examples to
examples/directory - Update API documentation in
docs/ - Keep
MAINTAINERS.mdcurrent
Community
Communication Channels
- GitHub Issues: Bug reports and feature requests
- GitHub Discussions: Questions and ideas
- Discord: Real-time chat - Join here
- Weekly Meetups: Online community meetup every week
- Schedule announced on Discord and GitHub Discussions
- Open to all contributors
- Recordings shared for async participation
Getting Help
- Check existing documentation and examples
- Search closed issues for similar problems
- Ask on Discord for quick questions
- Open a GitHub Discussion for broader topics
- Attend weekly community meetups
Recognition
We value all contributions! Contributors are:
- Listed in release notes
- Mentioned in project documentation
- Invited to community events
- Considered for maintainer roles (see MAINTAINERS.md)
First-Time Contributors
New to open source? We're here to help!
- Start with issues labeled
good first issue - Read through existing code and tests
- Ask questions on Discord - no question is too small
- Pair with a maintainer on your first PR
- Check out our examples directory
License
By contributing to Bindu, you agree that your contributions will be licensed under the Apache License 2.0.
Questions?
If you have questions about contributing:
- Discord: Join our community
- Email: raahul@getbindu.com
- GitHub Discussions: Start a discussion
Thank you for contributing to Bindu and helping build the Internet of Agents! ๐ป๐โจ