Skip to content

Development#

What do I need to know to help?#

If you are looking to help to with a code contribution, InvokeAI uses several different technologies under the hood: Python (Pydantic, FastAPI, diffusers) and Typescript (React, Redux Toolkit, ChakraUI, Mantine, Konva). Familiarity with StableDiffusion and image generation concepts is helpful, but not essential.

Get Started#

To get started, take a look at our new contributors checklist

Once you're setup, for more information, you can review the documentation specific to your area of interest:

If you don't feel ready to make a code contribution yet, no problem! You can also help out in other ways, such as documentation, translation or helping support other users and triage issues as they're reported in GitHub.

There are two paths to making a development contribution:

  1. Choosing an open issue to address. Open issues can be found in the Issues section of the InvokeAI repository. These are tagged by the issue type (bug, enhancement, etc.) along with the “good first issues” tag denoting if they are suitable for first time contributors.
    1. Additional items can be found on our roadmap. The roadmap is organized in terms of priority, and contains features of varying size and complexity. If there is an inflight item you’d like to help with, reach out to the contributor assigned to the item to see how you can help.
  2. Opening a new issue or feature to add. Please make sure you have searched through existing issues before creating new ones.

Regardless of what you choose, please post in the #dev-chat channel of the Discord before you start development in order to confirm that the issue or feature is aligned with the current direction of the project. We value our contributors time and effort and want to ensure that no one’s time is being misspent.

Best Practices:#

  • Keep your pull requests small. Smaller pull requests are more likely to be accepted and merged
  • Comments! Commenting your code helps reviewers easily understand your contribution
  • Use Python and Typescript’s typing systems, and consider using an editor with LSP support to streamline development
  • Make all communications public. This ensure knowledge is shared with the whole community

Where can I go for help?#

If you need help, you can ask questions in the #dev-chat channel of the Discord.

For frontend related work, @psychedelicious is the best person to reach out to.

For backend related work, please reach out to @blessedcoolant, @lstein, @StAlKeR7779 or @psychedelicious.

What does the Code of Conduct mean for me?#

Our Code of Conduct means that you are responsible for treating everyone on the project with respect and courtesy regardless of their identity. If you are the victim of any inappropriate behavior or comments as described in our Code of Conduct, we are here for you and will do the best to ensure that the abuser is reprimanded appropriately, per our code.