👋 Welcome! We're excited that you're interested in contributing to Julep. This guide will help you get started.
- Fork the repository
- Create a new branch for your changes
- Make your changes and test them
- Submit a pull request
Found a bug? Have a feature request? Submit an issue with:
- Steps to reproduce
- Expected behavior
- Actual behavior
- Screenshots (if applicable)
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature-name
- Make your changes
- Write/update tests
- Push to your fork
- Open a pull request
💡 Tip: Make sure your code follows our style guide and passes all tests.
Service | Description |
---|---|
agents-api |
Core API service |
typespec |
API specifications |
blob-store |
File storage service |
cli |
Command-line interface |
embedding-service |
Text embedding management |
llm-proxy |
Language model proxy |
gateway |
API gateway & routing |
monitoring |
System metrics & monitoring |
integrations-service
: External integrationsmemory-store
: Persistent storagescheduler
: Task schedulingdeploy
: Deployment configsdocumentation
: Project docsscripts
: Utility scriptscookbooks
: Usage examples
- FastAPI: Web framework for building APIs
- TypeSpec: API specification language
- Timescale: Database system
- SeadweedFS: Blob storage system
- Grafana: Monitoring and observability platform
- Prometheus: Monitoring and observability platform
- LiteLLM: LLM framework
- Temporal: Workflow engine
- Docker: Containerization
To understand the relationships between the components, please refer to the System Architecture section.
To get a comprehensive understanding of Julep, we recommend exploring the codebase in the following order:
-
Project Overview
- Read
README.md
in the root directory - Explore
docs/
for detailed documentation
- Read
-
System Architecture
- Examine
docker-compose.yml
in the root directory - Review
deploy/
directory for different deployment configurations
- Examine
-
API Specifications
- Learn about TypeSpec: https://typespec.io/docs/
- Explore
typespec/
directory:- Start with
common/
folder - Review
main.tsp
- Examine each module sequentially
- Start with
-
Core API Implementation
- Learn about FastAPI: https://fastapi.tiangolo.com/
- Explore
agents-api/
directory:- Review
README.md
for an overview - Examine
routers/
for API endpoints - Look into
models/
for data models
- Review
-
Database and Storage
- Learn about Cozo: https://docs.cozodb.org/en/latest/tutorial.html
- Review
agents-api/README.md
for database schema - Explore
agents-api/models/
for database queries
-
Workflow Management
- Learn about Temporal: https://docs.temporal.io/develop/python
- Explore
agents-api/activities/
for individual workflow steps - Review
agents-api/workflows/task_execution/
for main workflow logic
-
Testing
- Examine
agents-api/tests/
for test cases
- Examine
-
Additional Services
- Explore other service directories (
integrations-service/
,embedding-service/
, etc.) to understand their specific roles and implementations
- Explore other service directories (
-
Set Up Development Environment
- Clone the repository
- Install Docker and Docker Compose
- Set up necessary API keys and environment variables
-
Choose an Area to Contribute
- Check the issue tracker for open issues
- Look for "good first issue" labels for newcomers
-
Make Changes
- Create a new branch for your changes
- Write clean, well-documented code
- Ensure your changes adhere to the project's coding standards
-
Test Your Changes
- Run existing tests
- Add new tests for new functionality
- Ensure all tests pass before submitting your changes
-
Submit a Pull Request
- Provide a clear description of your changes
- Reference any related issues
- Be prepared to respond to feedback and make adjustments
-
Code Review
- Address any comments or suggestions from reviewers
- Make necessary changes and push updates to your branch
-
Merge
- Once approved, your changes will be merged into the main branch
Improvements to documentation are always appreciated! If you see areas that could be clarified or expanded, feel free to make the changes and submit a pull request.
We'd love to hear your feedback and ideas for the project! Feel free to submit an issue or contact the maintainers directly to share your thoughts. Your input is very valuable in shaping the future direction of the project.
Remember, contributions aren't limited to code. Documentation improvements, bug reports, and feature suggestions are also valuable contributions to the project.