Thank you for your interest in contributing to AgentOps! We welcome contributions from the community and are excited to see what you'll build.
- Code of Conduct
- Getting Started
- Development Setup
- Making Changes
- Submitting Changes
- Code Style
- Testing
- Documentation
- Community
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to conduct@agentops.ai.
- Be respectful and inclusive in your language and actions
- Be collaborative and help others learn and grow
- Be constructive when giving feedback
- Focus on what's best for the community and project
There are many ways to contribute to AgentOps:
- 🐛 Bug Reports: Help us identify and fix issues
- ✨ Feature Requests: Suggest new features or improvements
- 📝 Documentation: Improve our docs, guides, and examples
- 💻 Code: Fix bugs, implement features, or improve performance
- 🎨 Design: Improve UI/UX, create graphics, or design assets
- 🧪 Testing: Help test new features and report issues
- 💬 Community: Help answer questions and support other users
- Check existing issues to see if your bug/feature is already being worked on
- Join our Discord to discuss your ideas with the community
- Read this guide to understand our development process
- Set up your development environment following the instructions below
Make sure you have the following installed:
- Node.js 18+ (Download)
- Python 3.12+ (Download)
- Docker & Docker Compose (Download)
- Bun (recommended) or npm (Install Bun)
- uv (recommended for Python) (Install uv)
- Git (Download)
- Fork the repository on GitHub
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/agentops.git cd agentops - Add the upstream remote:
git remote add upstream https://github.com/AgentOps-AI/agentops.git
-
Copy environment files:
cp .env.example .env cp api/.env.example api/.env cp dashboard/.env.example dashboard/.env.local
-
Set up external services (see External Services below)
-
Install dependencies:
# Root dependencies (linting, formatting) bun install # Python dev dependencies uv pip install -r requirements-dev.txt # API dependencies cd api && uv pip install -e . && cd .. # Dashboard dependencies cd dashboard && bun install && cd ..
-
Start development environment:
# Option 1: Use just commands (recommended) just api-run # Start API server just fe-run # Start frontend (in another terminal) # Option 2: Manual startup cd api && uv run python run.py & cd dashboard && bun dev &
For development, you'll need to set up these external services:
- Create a project at supabase.com
- Get your project URL and anon key from Settings → API
- Update
.envfiles with your credentials
- Sign up for ClickHouse Cloud (free tier available)
- Create a database and get connection details
- Update
.envfiles with your credentials
Configure direct PostgreSQL connection for the API:
- Use your Supabase PostgreSQL connection details
- Update
.envfiles withPOSTGRES_*variables
For caching (will fallback to SQLite for local development):
- Set up Redis instance (local or cloud)
- Update
.envfiles with Redis connection details
- Create a Stripe account
- Get test API keys from the dashboard
- Update
.envfiles with your credentials
Use descriptive branch names that follow this pattern:
feature/add-user-analytics- New featuresfix/dashboard-loading-issue- Bug fixesdocs/update-api-guide- Documentation updatesrefactor/optimize-queries- Code refactoringtest/add-integration-tests- Test additions
-
Create a new branch:
git checkout -b feature/your-feature-name
-
Make your changes following our code style guidelines
-
Test your changes:
# Run tests cd api && pytest && ruff format cd dashboard && bun test # Run linting bun run lint
-
Commit your changes:
git add . git commit -m "feat: add user analytics dashboard"
We use Conventional Commits for consistent commit messages:
<type>(<scope>): <description>
[optional body]
[optional footer(s)]
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, etc.)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
Examples:
feat(dashboard): add real-time trace visualization
fix(api): resolve authentication token expiration
docs(readme): update installation instructions
test(api): add integration tests for billing endpoints-
Update your branch with the latest changes:
git fetch upstream git rebase upstream/main
-
Push your changes:
git push origin your-branch-name
-
Create a Pull Request on GitHub with:
- Clear title describing the change
- Detailed description explaining what and why
- Screenshots for UI changes
- Testing instructions for reviewers
- Issue references (e.g., "Closes #123")
## Description
Brief description of changes made.
## Type of Change
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Documentation update
## Testing
- [ ] Tests pass locally
- [ ] Added/updated tests for changes
- [ ] Manual testing completed
## Screenshots (if applicable)
Add screenshots to help explain your changes.
## Checklist
- [ ] Code follows project style guidelines
- [ ] Self-review completed
- [ ] Code is commented where necessary
- [ ] Documentation updated
- [ ] No new warnings introduced- Automated checks must pass (linting, tests, build)
- Code review by maintainers and community members
- Address feedback and update your PR as needed
- Final approval and merge by maintainers
We use ESLint and Prettier for consistent formatting:
# Check linting
bun run lint:js
# Fix linting issues
bun run lint:js --fix
# Format code
bun run format:jsKey conventions:
- Use TypeScript for type safety
- Prefer const and let over var
- Use arrow functions for short functions
- Use async/await over promises when possible
- Follow React Hooks best practices
We use Ruff for linting and formatting:
# Check linting
bun run lint:py
# Format code (runs 'ruff format')
bun run format:pyKey conventions:
- Follow PEP 8 style guide
- Use type hints for function parameters and returns
- Prefer f-strings for string formatting
- Use dataclasses or Pydantic models for structured data
- Follow FastAPI best practices
- Write clear, self-documenting code
- Add comments for complex logic
- Use meaningful variable and function names
- Keep functions small and focused
- Follow existing patterns in the codebase
Docker is required to run tests since they create PostgreSQL & ClickHouse instances.
# API tests (requires Docker)
cd api && pytest
# Frontend tests
cd dashboard && bun test
# Integration tests (requires Docker)
cd api && pytest tests/integration/
# End-to-end tests
cd dashboard && bun run test:e2e- Use pytest for test framework
- Use fixtures for test data setup
- Test happy paths and error cases
- Mock external services in unit tests
def test_create_user_success(client, db_session):
"""Test successful user creation."""
user_data = {"email": "test@example.com", "name": "Test User"}
response = client.post("/users", json=user_data)
assert response.status_code == 201
assert response.json()["email"] == user_data["email"]- Use Jest and React Testing Library
- Test user interactions and component behavior
- Mock API calls and external dependencies
test('displays user dashboard correctly', async () => {
render(<Dashboard user={mockUser} />);
expect(screen.getByText('Welcome, Test User')).toBeInTheDocument();
expect(screen.getByRole('button', { name: 'View Analytics' })).toBeInTheDocument();
});- Aim for 80%+ code coverage
- Focus on critical paths and business logic
- Include edge cases and error scenarios
- Code Comments: Explain complex logic and decisions
- API Documentation: Auto-generated from code annotations
- User Guides: Step-by-step instructions for users
- Developer Docs: Technical implementation details
- Be clear and concise
- Use examples to illustrate concepts
- Keep docs up-to-date with code changes
- Include screenshots for UI features
- Test instructions to ensure they work
docs/
├── api/ # API reference
├── guides/ # User guides
├── development/ # Developer documentation
├── deployment/ # Deployment guides
└── examples/ # Code examples
- GitHub Issues: For bugs and feature requests
- GitHub Discussions: For questions and general discussion
- Discord: For real-time chat and community support
- Email: support@agentops.ai for private matters
- Answer questions in issues and discussions
- Review pull requests from other contributors
- Share examples and use cases
- Write tutorials and blog posts
We recognize contributors in several ways:
- Contributors list in README
- Release notes mention significant contributions
- Swag and rewards for major contributions
- Maintainer status for consistent, high-quality contributions
We use labels to categorize and prioritize issues:
good first issue: Great for new contributorshelp wanted: Community contributions welcomebug: Something isn't workingenhancement: New feature or improvementdocumentation: Documentation needsquestion: Further information requestedpriority: high: Urgent issuespriority: low: Nice-to-have improvements
Check out our public roadmap to see what we're working on and where you can help.
- Performance optimization for large-scale deployments
- Enhanced visualization features
- Integration ecosystem expansion
- Developer experience improvements
- Documentation and examples
- Look for issues labeled
good first issue - Join our Discord to introduce yourself
- Set up your development environment
- Start with documentation or small bug fixes
- Ask questions - we're here to help!
- Open an issue to discuss your idea first
- Get feedback from maintainers and community
- Create a design document for complex features
- Break the work into smaller, reviewable PRs
- Keep the community updated on your progress
- Simple fixes: Usually within 1-2 days
- New features: May take 3-7 days for thorough review
- Complex changes: Could take 1-2 weeks with multiple review rounds
We aim to provide initial feedback quickly and will let you know if we need more time.
Absolutely! We welcome contributions in many forms:
- Documentation improvements
- Design and UX feedback
- Testing and bug reports
- Community support and advocacy
- Content creation (blogs, tutorials, videos)
Thank you for taking the time to contribute to AgentOps! Every contribution, no matter how small, helps make the project better for everyone.
If you have any questions or need help getting started, don't hesitate to reach out. We're excited to see what you'll build with us!
Happy coding! 🚀