Skip to content

Commit 7e55361

Browse files
authored
Merge pull request #10 from invoke-ai/integration/upstream-main-2026-07-16
Integration/upstream main 2026 07 16
2 parents c9517b9 + 4315169 commit 7e55361

195 files changed

Lines changed: 27766 additions & 1732 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/CODEOWNERS

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
/docs/
66

77
# nodes
8-
/invokeai/app/ @blessedcoolant @lstein @dunkeroni @JPPhoto
8+
/invokeai/app/ @blessedcoolant @lstein @dunkeroni @JPPhoto @pfannkuchensack
99

1010
# installation and configuration
1111
/pyproject.toml @lstein @blessedcoolant
@@ -17,7 +17,7 @@
1717
/invokeai/version @lstein @blessedcoolant
1818

1919
# web ui
20-
/invokeai/frontend @blessedcoolant @lstein @dunkeroni
20+
/invokeai/frontend @blessedcoolant @lstein @dunkeroni @jpphoto @pfannkuchensack
2121

2222
# generation, model management, postprocessing
2323
/invokeai/backend @lstein @blessedcoolant @dunkeroni @JPPhoto @Pfannkuchensack
@@ -27,4 +27,4 @@
2727
/invokeai/frontend/install @lstein
2828
/invokeai/frontend/merge @lstein @blessedcoolant
2929
/invokeai/frontend/training @lstein @blessedcoolant
30-
/invokeai/frontend/web @blessedcoolant @lstein @dunkeroni @Pfannkuchensack
30+
/invokeai/frontend/web @blessedcoolant @lstein @dunkeroni @Pfannkuchensack @jpphoto

README.md

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,11 @@
66

77
[![discord badge]][discord link] [![latest release badge]][latest release link] [![github stars badge]][github stars link] [![github forks badge]][github forks link] [![CI checks on main badge]][CI checks on main link] [![latest commit to main badge]][latest commit to main link] [![github open issues badge]][github open issues link] [![github open prs badge]][github open prs link] [![translation status badge]][translation status link]
88

9+
[![Sponsor Invoke](https://img.shields.io/badge/Sponsor-Invoke-ea4aaa?logo=githubsponsors&logoColor=white)][sponsor link]
10+
911
</div>
1012

13+
1114
Invoke is a leading creative engine built to empower professionals and enthusiasts alike. Generate and create stunning visual media using the latest AI-driven technologies. Invoke offers an industry leading web-based UI, and serves as the foundation for multiple commercial products.
1215

1316
- Free to use under a commercially-friendly license
@@ -16,12 +19,6 @@ Invoke is a leading creative engine built to empower professionals and enthusias
1619

1720
![Highlighted Features - Canvas and Workflows](https://github.com/invoke-ai/InvokeAI/assets/31807370/708f7a82-084f-4860-bfbe-e2588c53548d)
1821

19-
---
20-
> ## 📣 Are you a new or returning InvokeAI user?
21-
> Take our first annual [User's Survey](https://forms.gle/rCE5KuQ7Wfrd1UnS7)
22-
23-
---
24-
2522
# Documentation
2623

2724
| **Quick Links** |
@@ -109,6 +106,16 @@ Invoke's open-source development is powered by our sponsors. If Invoke is valuab
109106

110107
[![Sponsor Invoke](https://img.shields.io/badge/Sponsor-Invoke-ea4aaa?logo=githubsponsors&logoColor=white)][sponsor link]
111108

109+
We very much thank the following sponsors:
110+
111+
### Backers ($15/mo)
112+
113+
* [apokolypsse](https://github.com/apokolypsse)
114+
115+
### Power Users ($50/mo)
116+
117+
* [mickr777](https://github.com/mickr777)
118+
112119
## Thanks
113120

114121
Invoke is a combined effort of [passionate and talented people from across the world][contributors]. We thank them for their time, hard work and effort.

docs/src/content.config.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@ export const collections = {
1616
owner: 'invoke-ai',
1717
repo: 'InvokeAI',
1818
pagefind: false,
19+
// Authenticate GitHub API requests so the release changelog loader uses
20+
// the 5000 req/hr authenticated rate limit instead of the 60 req/hr
21+
// unauthenticated limit (shared per CI runner IP), which causes
22+
// intermittent "403 - rate limit exceeded" build failures. The token is
23+
// optional, so local builds without it fall back to unauthenticated.
24+
token: process.env.GITHUB_TOKEN,
1925
}
2026
]),
2127
})

docs/src/content/docs/contributing/call-saved-workflow.md

Lines changed: 813 additions & 0 deletions
Large diffs are not rendered by default.

docs/src/content/docs/development/Setup/dev-environment.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: Development Environment
3-
lastUpdated: 2026-02-19
3+
lastUpdated: 2026-07-01
44
---
55

66
import { LinkCard, Steps, Tabs, TabItem, FileTree, LinkButton } from '@astrojs/starlight/components'
@@ -34,7 +34,7 @@ import SystemRequirementsLink from '@components/SystemRequirmentsLink.astro'
3434
Next, clone your fork to your local machine. You can use either HTTPS or SSH, depending on your git configuration.
3535

3636
3. This repository uses Git LFS to manage large files. To ensure all assets are downloaded:
37-
- Install git-lfs [Download here](https://git-lfs.com/)
37+
- Install git-lfs -> [Download here](https://git-lfs.com/)
3838
- Enable automatic LFS fetching for this repository:
3939
```shell
4040
git config lfs.fetchinclude "*"

docs/src/content/docs/features/Multi-User Mode/admin-guide.mdx

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,34 @@ Then restart the InvokeAI server backend from the command line or using the laun
4242
If at any time you wish to revert to single-user mode, simply comment out the `multiuser` line, or change "true" to "false". Then restart the server. Because of the way that browsers cache pages, users with open InvokeAI sessions may need to force-refresh their browsers.
4343
:::
4444

45+
### Queue Scheduling
46+
47+
The image generation queue is processed by a single worker, so jobs run one at a time. The `session_queue_mode` option controls the order in which pending jobs are selected:
48+
49+
| Mode | Behavior |
50+
|------|----------|
51+
| `round_robin` (default) | Interleaves jobs across users — each user is served one job before any user is served a second. A single user enqueuing a large batch can no longer monopolize the queue. |
52+
| `FIFO` | Strict first-come, first-serve. Jobs run in the order they were enqueued (respecting priority), so a large batch drains completely before the next user's jobs start. |
53+
54+
Set it in `invokeai.yaml`:
55+
56+
```yaml
57+
multiuser: true
58+
session_queue_mode: round_robin # or FIFO
59+
```
60+
61+
Or via the `INVOKEAI_SESSION_QUEUE_MODE` environment variable:
62+
63+
```bash
64+
INVOKEAI_SESSION_QUEUE_MODE=FIFO
65+
```
66+
67+
:::note
68+
`session_queue_mode` only applies in multiuser mode. In single-user mode the queue is always FIFO regardless of this setting, since all jobs belong to the same account.
69+
:::
70+
71+
Round-robin fairness is determined from when each user's jobs were last started. Retained terminal queue history (see [`max_queue_history`](#configuration-reference)) does not slow dequeue scheduling — each dequeue's cost scales with the number of users who currently have pending jobs, not with the size of the history.
72+
4573
### First Administrator Account
4674

4775
When InvokeAI starts for the first time in multi-user mode, you'll see the **Administrator Setup** dialog.
@@ -594,7 +622,7 @@ hashing_algorithm: blake3_multi
594622

595623
### How many users can InvokeAI support?
596624

597-
The backend will support dozens of concurrent users. However, because the image generation queue is single-threaded, image generation tasks are processed on a first-come, first-serve basis. This means that a user may have to wait for all the other users' image generation jobs to complete before their generation job starts to execute.
625+
The backend will support dozens of concurrent users. However, because the image generation queue is single-threaded, only one job runs at a time. By default jobs are scheduled **round-robin** across users, so each user is served one job per turn and no single user can monopolize the queue with a large batch. You can switch to strict first-come, first-serve ordering with `session_queue_mode: FIFO` — see [Queue Scheduling](#queue-scheduling).
598626

599627
A future version of InvokeAI may support concurrent execution on systems with multiple GPUs/graphics cards.
600628

docs/src/content/docs/features/Multi-User Mode/user-guide.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,9 +130,9 @@ You cannot:
130130
- Cancel other users' generation jobs
131131

132132
:::tip[The generation queue]
133-
When two or more users are accessing InvokeAI at the same time, their image generation jobs will be placed on the session queue on a first-come, first-serve basis. This means that you will have to wait for other users' image rendering jobs to complete before yours will start.
133+
When two or more users are accessing InvokeAI at the same time, their image generation jobs share a single session queue. By default the server schedules jobs **round-robin** across users: each user gets one turn before anyone gets a second turn. This means a user who enqueues a large batch can no longer monopolize the queue — your jobs are interleaved with theirs rather than waiting for their entire batch to drain first. (An administrator can switch the server back to strict first-come, first-serve ordering; see the admin guide.)
134134

135-
While other users' jobs are running you will see the shared image generation progress bar, and the queue badge will show a single number — the count of your own jobs that are pending or in progress. It does not show other users' counts.
135+
While other users' jobs are running you will see the shared image generation progress bar, and the queue badge shows **`your jobs / all jobs`** — for example `2/5` means 2 of the 5 pending-or-in-progress jobs are yours. (In single-user mode the badge shows just a single total.)
136136

137137
Open the Queue tab to see where your job sits in relation to the other queued tasks.
138138
:::

docs/src/content/docs/index.mdx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ hero:
1414
link: https://github.com/invoke-ai/InvokeAI
1515
icon: github
1616
variant: minimal
17+
- text: Become a Sponsor
18+
link: https://github.com/sponsors/invoke-ai
19+
icon: heart
20+
variant: minimal
1721
---
1822

1923
import { Image } from 'astro:assets'
@@ -118,8 +122,8 @@ Ready to unleash your creativity? Invoke is available for Windows, macOS, and Li
118122

119123
---
120124

121-
:::note[About the Hosted Version]
122-
The Invoke hosted platform has been shut down as the founding team joined Adobe. However, Invoke lives on as a thriving open-source project maintained by the community.
125+
:::note[About the former officially-hosted version]
126+
The Invoke.ai hosted platform has been shut down as the founding team joined Adobe. However, Invoke lives on as a thriving open-source project maintained by the community.
123127

124128
The open-source version offers the same powerful features you may have used in the hosted service, with the added benefit of complete control and privacy through self-hosting.
125129

docs/src/generated/settings.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -590,6 +590,20 @@
590590
"type": "<class 'int'>",
591591
"validation": {}
592592
},
593+
{
594+
"category": "GENERATION",
595+
"default": "round_robin",
596+
"description": "Session queue mode. Use 'FIFO' for traditional first-in-first-out, or 'round_robin' to serve each user's jobs in turn. In single-user mode, FIFO is always used regardless of this setting.",
597+
"env_var": "INVOKEAI_SESSION_QUEUE_MODE",
598+
"literal_values": [
599+
"FIFO",
600+
"round_robin"
601+
],
602+
"name": "session_queue_mode",
603+
"required": false,
604+
"type": "typing.Literal['FIFO', 'round_robin']",
605+
"validation": {}
606+
},
593607
{
594608
"category": "GENERATION",
595609
"default": false,

docs/src/lib/components/DownloadOptions.astro

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
import { LinkCard, Icon, LinkButton } from '@astrojs/starlight/components';
2+
import { CardGrid, LinkCard, Icon, LinkButton } from '@astrojs/starlight/components';
33
import { type StarlightIcon } from '@astrojs/starlight/types';
44
import { withBase } from '../base-path';
55
@@ -49,6 +49,24 @@ const manualDownloadOptions = {
4949
href: withBase('/configuration/docker/', import.meta.env.BASE_URL),
5050
},
5151
};
52+
53+
const hostedOptions = {
54+
aibadgr: {
55+
headline: 'Run on AI Badgr',
56+
description: 'Run on the AI Badgr hosted GPU service',
57+
href: 'https://aibadgr.com/gpu/launch?template=invokeai',
58+
},
59+
runpod: {
60+
headline: 'Run on RunPod',
61+
description: 'Run on the RunPod hosted GPU service',
62+
href: 'https://www.runpod.io/blog/invoke-ai-stable-diffusion-runpod-nfz18',
63+
},
64+
railway: {
65+
headline: 'Run on Railway',
66+
description: 'Run on the Railway hosted GPU service',
67+
href: 'https://railway.com/deploy/invokeai',
68+
},
69+
};
5270
---
5371

5472
<div class="download-options">
@@ -92,6 +110,20 @@ const manualDownloadOptions = {
92110
))
93111
}
94112
</div>
113+
114+
<!-- Hosted Options -->
115+
<div class="download-options__hosted">
116+
<h3>Hosted Options</h3>
117+
<p>For users who want to run Invoke on a hosted GPU service instead of their own hardware.</p>
118+
119+
<CardGrid>
120+
{
121+
Object.entries(hostedOptions).map(([key, { headline, href, description }]) => (
122+
<LinkCard title={headline} {href} {description} />
123+
))
124+
}
125+
</CardGrid>
126+
</div>
95127
</div>
96128

97129
<style is:global>
@@ -134,6 +166,23 @@ const manualDownloadOptions = {
134166
}
135167
}
136168

169+
.download-options__hosted {
170+
margin: 0;
171+
border-radius: var(--radius);
172+
background: var(--sl-color-black);
173+
border: 1px solid var(--sl-color-gray-5);
174+
padding: 1.5rem;
175+
176+
h3 {
177+
margin-top: 0;
178+
}
179+
180+
> p {
181+
margin-top: 0.5rem;
182+
color: var(--sl-color-gray-2);
183+
}
184+
}
185+
137186
.download-options--launcher {
138187
display: grid;
139188
gap: 1.5rem;

0 commit comments

Comments
 (0)