Become a Contributor
Last updated
Last updated
So you're looking to contribute to Dify - that's awesome, we can't wait to see what you do. As a startup with limited headcount and funding, we have grand ambitions to design the most intuitive workflow for building and managing LLM applications. Any help from the community counts, truly.
We need to be nimble and ship fast given where we are, but we also want to make sure that contributors like you get as smooth an experience at contributing as possible. We've assembled this contribution guide for that purpose, aiming at getting you familiarized with the codebase & how we work with contributors, so you could quickly jump to the fun part.
This guide, like Dify itself, is a constant work in progress. We highly appreciate your understanding if at times it lags behind the actual project, and welcome any feedback for us to improve.
In terms of licensing, please take a minute to read our short . The community also adheres to the .
an existing issue, or a new one. We categorize issues into 2 types:
If you're opening a new feature request, we'd like you to explain what the proposed feature achieves, and include as much context as possible. has made a solid that helps you draft out your needs. Feel free to give it a try.
If you want to pick one up from the existing issues, simply drop a comment below it saying so.
A team member working in the related direction will be looped in. If all looks good, they will give the go-ahead for you to start coding. We ask that you hold off working on the feature until then, so none of your work goes to waste should we propose changes.
Depending on whichever area the proposed feature falls under, you might talk to different team members. Here's rundown of the areas each our team members are working on at the moment:
Architecting Agents
RAG pipeline design
Building workflow orchestrations
Making our frontend a breeze to use
Developer experience, points of contact for anything
Overall product direction and architecture
How we prioritize:
High-Priority Features as being labeled by a team member
High Priority
Medium Priority
Non-core features and minor enhancements
Low Priority
Valuable but not immediate
Future-Feature
Start coding right away.
How we prioritize:
Bugs in core functions (cannot login, applications not working, security loopholes)
Critical
Non-critical bugs, performance boosts
Medium Priority
Minor fixes (typos, confusing but working UI)
Low Priority
Here are the steps to set up Dify for development:
Clone the forked repository from your terminal:
Dify requires the following dependencies to build, make sure they're installed on your system:
To help you quickly navigate where your contribution fits, a brief, annotated outline of Dify's backend & frontend is as follows:
&
&
Popular feature requests from our
version 8.x.x or
version 3.11.x
Dify is composed of a backend and a frontend. Navigate to the backend directory by cd api/
, then follow the to install it. In a separate terminal, navigate to the frontend directory by cd web/
, then follow the to install.
Check the for a list of common issues and steps to troubleshoot.
To validate your set up, head over to (the default, or your self-configured URL and port) in your browser. You should now see Dify up and running.
If you are adding a model provider, is for you.
If you are adding tools used in Agent Assistants and Workflows, is for you.
Note : If you want to contribute to a new tool, please make sure you've left your contact information on the tool's 'YAML' file, and submitted a corresponding docs PR in the repository.
Dify’s backend is written in Python using . It uses for ORM and for task queueing. Authorization logic goes via Flask-login.
The website is bootstrapped on boilerplate in Typescript and uses for styling. is used for internationalization.
At last, time to open a pull request (PR) to our repo. For major features, we first merge them into the deploy/dev
branch for testing, before they go into the main
branch. If you run into issues like merge conflicts or don't know how to open a pull request, check out .
And that's it! Once your PR is merged, you will be featured as a contributor in our .
If you ever get stuck or got a burning question while contributing, simply shoot your queries our way via the related GitHub issue, or hop onto our for a quick chat.