Skip to content

docs: Add multiuser documentation and reposition Workflows#9099

Open
lstein wants to merge 17 commits intomainfrom
lstein/docs/multiuser
Open

docs: Add multiuser documentation and reposition Workflows#9099
lstein wants to merge 17 commits intomainfrom
lstein/docs/multiuser

Conversation

@lstein
Copy link
Copy Markdown
Collaborator

@lstein lstein commented Apr 30, 2026

Summary

This PR migrates the multiuser documentation from docs-old into the new astro docs directory. It also moves the Workflows section into Features, which seems to be a more appropriate place for it than at the top level.

For convenience, this PR also updates the make docs Makefile target.

Related Issues / Discussions

QA Instructions

  1. make docs will fire up astro
  2. Browse the reorganized Features section.
  3. Check for broken images and links.

Merge Plan

Simple merge.

Checklist

  • The PR has a short but descriptive title, suitable for a changelog
  • Tests added / updated (if applicable)
  • ❗Changes to a redux slice have a corresponding migration
  • Documentation added / updated (if applicable)
  • Updated What's New copy (if doing a release after this PR)

@lstein lstein requested a review from joshistoast April 30, 2026 19:10
@github-actions github-actions Bot added Root docs PRs that change docs labels Apr 30, 2026
@lstein lstein added the v6.13.x label Apr 30, 2026
@lstein lstein moved this to 6.13.x Theme: MODELS in Invoke - Community Roadmap Apr 30, 2026
Copy link
Copy Markdown
Collaborator

@joshistoast joshistoast left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good overall add, but needs some updates.

Notes:

  • I added some quick suggestions for reordering to keep the non subgrouped docs links at the top of the respective parent group.

  • Lots of areas where the <Steps> component can be used for those instructional step-by-step ordered lists.

  • I think we should move the spec to the corresponding invoke dir as a feature readme, as opposed to being a docs page.

  • Found a couple broken links and left the fix suggestions.

  • The multi user docs leaves a lot of "not right now, but in the future for sure" promises, maybe it'd be better to just say "Not at this time, create an issue if this is important to you" verbiage?

  • There seemed to be an instance or two of inconsistency between existence of a feature. For example the user vs administrative docs seem to have different opinions on the existence of a user management webui. And there is also documentation now of a board having a desciption- which unless I'm mistaken doesn't exist.

  • I can have my LLM do another pass over this to see if I missed anything, but this was everything I found initially.

Comment thread docs/src/content/docs/features/Canvas/text-tool.mdx Outdated
Comment thread docs/src/content/docs/features/hotkeys.mdx Outdated
Comment thread docs/src/content/docs/features/Workflows/index.mdx
Comment thread docs/src/content/docs/features/Multi-User Mode/user-guide.mdx
Comment thread docs/src/content/docs/features/Multi-User Mode/user-guide.mdx Outdated
Comment thread docs/src/content/docs/features/Multi-User Mode/admin-guide.mdx Outdated
Comment thread docs/src/content/docs/features/Multi-User Mode/admin-guide.mdx Outdated
Comment thread docs/src/content/docs/features/Multi-User Mode/admin-guide.mdx Outdated
Comment thread docs/src/content/docs/features/Multi-User Mode/api-guide.mdx
Comment thread docs/src/content/docs/features/Multi-User Mode/user-guide.mdx
lstein and others added 3 commits April 30, 2026 17:16
@lstein
Copy link
Copy Markdown
Collaborator Author

lstein commented Apr 30, 2026

Thanks for the thorough review. There was a lot more cruft in the docs than I realized. I've implemented all the suggested changes and removed redundant and out-of-date content. Let me know if I missed anything.

Copy link
Copy Markdown
Collaborator

@joshistoast joshistoast left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR remains inconsistent with real behavior. Features that don't exist, incorrect endpoints, inaccurate and conflicting feature behaviors, etc.

Also we should document GET /api/v1/auth/status

**User Management:**

```python
GET /api/v1/users # List users (admin only)
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These all should begin with /api/v1/auth/users

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed. Thank you.

**Model Management (Write Operations):**

```python
POST /api/v1/models/install # Install model (admin only)
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are all /api/v2/models

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

**Model Management (Read Operations):**

```python
GET /api/v1/models/ # List models (all users)
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/api/v2/models

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed


#### Change Password

**Endpoint:** `POST /api/v1/auth/change-password`
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This does not exist

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed docs.


#### List Users

**Endpoint:** `GET /api/v1/users`
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
**Endpoint:** `GET /api/v1/users`
**Endpoint:** `GET /api/v1/auth/users`

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

4. Cancel stuck or problematic tasks
</Steps>

**User Statistics:**
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can't find this feature

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, never got implemented, like a number of other nice to have features. Removed.

- Full model management (add, delete, configure models)
- Create and manage user accounts
- View and manage all users' generation queues
- View and manage all users' boards, images, and workflows (including system-owned legacy content)
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- View and manage all users' boards, images, and workflows (including system-owned legacy content)
- View and manage all users' boards, images, and workflows

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.


**Response:**

```json
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Returns a plain array, no pagination

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shape needs to be:

[
  {
    "user_id": "string",
    "email": "string",
    "display_name": "string",
    "is_admin": false,
    "is_active": true,
    "created_at": "2026-05-07T21:12:09.008Z",
    "updated_at": "2026-05-07T21:12:09.008Z",
    "last_login_at": "2026-05-07T21:12:09.008Z"
  }
]

Returns a plain array without items

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this

"display_name": "John Doe",
"is_admin": false,
"is_active": true,
"created_at": "2024-01-15T10:00:00Z",
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add updated_at field below here

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.


**Firewall Rules:**

It is best to restrict access to trusted networks and remote IP addresses, or use a VPN to connect to your home network. Rate limit connections to InvokeAI's authentication endpoint `http://your.host:9090/login`.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Login endpoint is /api/v1/auth/login

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

Copy link
Copy Markdown
Collaborator

@joshistoast joshistoast left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Found a few more things, clarified another thing. We're getting closer.


**Response:**

```json
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shape needs to be:

[
  {
    "user_id": "string",
    "email": "string",
    "display_name": "string",
    "is_admin": false,
    "is_active": true,
    "created_at": "2026-05-07T21:12:09.008Z",
    "updated_at": "2026-05-07T21:12:09.008Z",
    "last_login_at": "2026-05-07T21:12:09.008Z"
  }
]

Returns a plain array without items

Comment on lines +99 to +102
# Session configuration (multi-user mode only)
jwt_secret_key: "your-secret-key-here" # Auto-generated if not specified
jwt_token_expiry_hours: 24 # Default session timeout
jwt_remember_me_days: 7 # "Remember me" duration
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# Session configuration (multi-user mode only)
jwt_secret_key: "your-secret-key-here" # Auto-generated if not specified
jwt_token_expiry_hours: 24 # Default session timeout
jwt_remember_me_days: 7 # "Remember me" duration
# Optional password policy
strict_password_checking: true # Enforce uppercase/lowercase/number requirements

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These seem to still be present

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

4. Restart InvokeAI

**Alternative:** Remove `jwt_secret_key` from config to trigger setup wizard (will create new admin).
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
**Alternative:** Remove `jwt_secret_key` from config to trigger setup wizard (will create new admin).
**Alternative:** There is no supported config-based shortcut to rerun the setup wizard once an administrator already exists. If the admin password is lost, reset it directly in the database or by using the user-management tooling.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed, and gave the correct recipe for reentering setup mode.

Comment on lines +539 to +543
# Before (single-user)
GET /api/v1/boards/ # Returns all boards

# After (multi-user)
GET /api/v1/boards/ # Returns only current user's boards
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# Before (single-user)
GET /api/v1/boards/ # Returns all boards
# After (multi-user)
GET /api/v1/boards/ # Returns only current user's boards
# Before (single-user)
GET /api/v1/boards/?all=true # Returns all boards
# After (multi-user)
GET /api/v1/boards/?all=true # Returns boards the current user can access, including their own boards plus shared/public boards; admins can see all boards

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

Comment thread docs/src/content/docs/features/Multi-User Mode/api-guide.mdx Outdated
**Generate Image:**

```bash
curl -X POST http://localhost:9090/api/v1/sessions/ \
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This endpoint does not exist

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Something was hallucinating. Wouldn't it be nice to have a simple image generation endpoint?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be

Comment on lines +1196 to +1198
cors_origins:
- "http://localhost:3000"
- "https://myapp.example.com"
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
cors_origins:
- "http://localhost:3000"
- "https://myapp.example.com"
allow_origins:
- "http://localhost:3000"
- "https://myapp.example.com"
allow_credentials: true
allow_methods:
- "*"
allow_headers:
- "*"

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

Comment thread docs/src/content/docs/features/Multi-User Mode/user-guide.mdx
@lstein lstein requested a review from joshistoast May 9, 2026 14:27
@lstein lstein force-pushed the lstein/docs/multiuser branch from ffee730 to 0863f51 Compare May 9, 2026 22:24
Copy link
Copy Markdown
Collaborator

@joshistoast joshistoast left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Almost there, found a few more discrepancies, and some were even from my own suggestions (left suggested fixes for those). Clarified what happens to boards on multiuser switching edge cases, a typo here or there, and highlighted some api response docs


**Response:**

```json
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this

Comment on lines +805 to +809
```json
{
"success": true
}
```
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On success it returns a 204 No Content not a json with status. If there's an error the response is 422 with json:

{
  "detail": [
    {
      "loc": [
        "string",
        0
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

<Steps>
1. Enter your email address (this will be your login name)
2. Create a display name (this will be the name other users see)
3. Choose a strong password. The following criteria are required with `strict_password_checking_enabled: true`.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
3. Choose a strong password. The following criteria are required with `strict_password_checking_enabled: true`.
3. Choose a strong password. The following criteria are required with `strict_password_checking: true`.

My bad on my last suggestion lol

5. Click **Create Administrator Account**
</Steps>

With `strict_password_checking_enabled` disabled, you'll be warned if you choose a
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
With `strict_password_checking_enabled` disabled, you'll be warned if you choose a
With `strict_password_checking` disabled, you'll be warned if you choose a

My bad on my earlier suggestion

- `shared` -- read/write to the owner and administrator, read-only to everyone else
- `public` -- read/write by everyone

#### List One Boards
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
#### List One Boards
#### Get One Board

Comment on lines +101 to +105
JWT secrets are generated automatically and stored in the
database. You can hard-code a secret as shown above for
development/testing purposes. Session lifetimes default to 24 hours by
default, or 7 days when the user selects "Remember me", unless
manually overridden in `invokeai.yaml` as shown above.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
JWT secrets are generated automatically and stored in the
database. You can hard-code a secret as shown above for
development/testing purposes. Session lifetimes default to 24 hours by
default, or 7 days when the user selects "Remember me", unless
manually overridden in `invokeai.yaml` as shown above.
JWT secrets are generated automatically and stored in the database. Session lifetimes default to 24 hours, or 7 days when the user selects "Remember me". See Secret Key Management below if you need to rotate the JWT secret.

This is technically more correct, since there's no manual override 'above'. My bad.


### Going From Multi-User to Single-User Mode

If an InvokeAI instance was in multiuser mode and then restarted in single user mode (by setting `multiuser: false` in the configuration file), all users' boards will be consolidated in one place. Any images that were in "Uncategorized" will be merged together into a single Uncategorized board. If, at a later date, the server is restarted in multi-user mode, the boards and images will be separated and restored to their owners.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
If an InvokeAI instance was in multiuser mode and then restarted in single user mode (by setting `multiuser: false` in the configuration file), all users' boards will be consolidated in one place. Any images that were in "Uncategorized" will be merged together into a single Uncategorized board. If, at a later date, the server is restarted in multi-user mode, the boards and images will be separated and restored to their owners.
If an InvokeAI instance was in multiuser mode and then restarted in single user mode (by setting `multiuser: false` in the configuration file), all users' boards will be consolidated in one place. Any images that were in "Uncategorized" will be merged together into a single Uncategorized board. If, at a later date, the server is restarted in multi-user mode, the boards and images will be assigned to the internal 'system' user. Admins can access this legacy content, and will not be restored to original owners.

Comment on lines +1009 to +1012
def is_multiuser_enabled(base_url):
"""Check if multi-user mode is enabled (authentication required)."""
response = requests.get(f"{base_url}/api/v1/boards/")
return response.status_code == 401 # 401 = auth required
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
def is_multiuser_enabled(base_url):
"""Check if multi-user mode is enabled (authentication required)."""
response = requests.get(f"{base_url}/api/v1/boards/")
return response.status_code == 401 # 401 = auth required
def is_multiuser_enabled(base_url):
response = requests.get(f"{base_url}/api/v1/auth/status")
response.raise_for_status()
return response.json()["multiuser_enabled"]

This is exposed in the auth status like so


### Adding and Modifying Users

If you are logged in as Administrator, you can add additional users. Click on the small "person silhouette" icon at the bottom left of the main Invoke screen and select "User Management:"
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
If you are logged in as Administrator, you can add additional users. Click on the small "person silhouette" icon at the bottom left of the main Invoke screen and select "User Management:"
If you are logged in as Administrator, you can add additional users. Click on the small "person silhouette" icon at the bottom left of the main Invoke screen and select "User Management"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs PRs that change docs Root v6.13.x

Projects

Status: 6.13.x Theme: MODELS

Development

Successfully merging this pull request may close these issues.

2 participants