Skip to content

Dev Environment#

To make changes to Invoke's backend, frontend, or documentation, you'll need to set up a dev environment.

If you just want to use Invoke, you should use the installer.

Why do I need the frontend toolchain?

The repo doesn't contain a build of the frontend. You'll be responsible for rebuilding it every time you pull in new changes, or run it in dev mode (which incurs a substantial performance penalty).

Warning

Invoke uses a SQLite database. When you run the application as a dev install, you accept responsibility for your database. This means making regular backups (especially before pulling) and/or fixing it yourself in the event that a PR introduces a schema change.

If you don't need to persist your db, you can use an ephemeral in-memory database by setting use_memory_db: true in your invokeai.yaml file. You'll also want to set scan_models_on_startup: true so that your models are registered on startup.

Setup#

  1. Run through the requirements.
  2. Fork and clone the InvokeAI repo.
  3. Create an directory for user data (images, models, db, etc). This is typically at ~/invokeai, but if you already have a non-dev install, you may want to create a separate directory for the dev install.
  4. Create a python virtual environment inside the directory you just created:
python3 -m venv .venv --prompt InvokeAI-Dev
  1. Activate the venv (you'll need to do this every time you want to run the app):
source .venv/bin/activate
  1. Install the repo as an editable install:
pip install -e ".[dev,test,xformers]" --use-pep517 --extra-index-url https://download.pytorch.org/whl/cu121

Refer to the manual installation] instructions for more determining the correct install options. xformers is optional, but dev and test are not.

  1. Install the frontend dev toolchain:

  2. nodejs (recommend v20 LTS)

  3. pnpm (must be v8 - not v9!)

  4. Do a production build of the frontend:

pnpm build
  1. Start the application:
python scripts/invokeai-web.py
  1. Access the UI at localhost:9090.

Updating the UI#

You'll need to run pnpm build every time you pull in new changes. Another option is to skip the build and instead run the app in dev mode:

pnpm dev

This starts a dev server at localhost:5173, which you will use instead of localhost:9090.

The dev mode is substantially slower than the production build but may be more convenient if you just need to test things out.

Documentation#

The documentation is built with mkdocs. To preview it locally, you need a additional set of packages installed.

# after activating the venv
pip install -e ".[docs]"

Then, you can start a live docs dev server, which will auto-refresh when you edit the docs:

mkdocs serve

On macOS and Linux, there is a make target for this:

make docs