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
    
  5. Activate the venv (you'll need to do this every time you want to run the app):

    ```sh
    source .venv/bin/activate
    ```
    
  6. 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.

  7. Install the frontend dev toolchain:

  8. nodejs (recommend v20 LTS)

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

  10. Do a production build of the frontend:

    cd PATH_TO_INVOKEAI_REPO/invokeai/frontend/web
    pnpm i
    pnpm build
    
  11. Start the application:

    cd PATH_TO_INVOKEAI_REPO
    python scripts/invokeai-web.py
    
  12. 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