Home

Awesome

Agent Scheduler

Introducing AgentScheduler, an A1111/Vladmandic Stable Diffusion Web UI extension to power up your image generation workflow!

Table of Content


Compatibility

This version of AgentScheduler is compatible with latest versions of:

Older versions may not working properly.

Installation

Using Vlad's WebUI Fork

The extension is already included in Vlad fork's builtin extensions.

Using the built-in extension list

  1. Open the Extensions tab
  2. Open the "Install From URL" sub-tab
  3. Paste the repo url: https://github.com/ArtVentureX/sd-webui-agent-scheduler.git
  4. Click "Install"

Install

Manual clone

git clone "https://github.com/ArtVentureX/sd-webui-agent-scheduler.git" extensions/agent-scheduler

(The second argument specifies the name of the folder, you can choose whatever you like).

Basic Features

Extension Walkthrough 1

1️⃣ Input your usual Prompts & Settings. Enqueue to send your current prompts, settings, controlnets to AgentScheduler.

Extension Walkthrough 2

2️⃣ AgentScheduler Extension Tab.

3️⃣ See all queued tasks, current image being generated and tasks' associated information. Drag and drop the handle in the begining of each row to reaggrange the generation order.

4️⃣ Pause to stop queue auto generation. Resume to start.

5️⃣ Press ▶️ to prioritize selected task, or to start a single task when queue is paused. Delete tasks that you no longer want.

 Extension Walkthrough 3

6️⃣ Show queue history.

7️⃣ Filter task status or search by text.

8️⃣ Bookmark task to easier filtering.

9️⃣ Double click the task id to rename and quickly update basic parameters. Click ↩️ to Requeue old task.

🔟 Click on each task to view the generation results.

https://github.com/ArtVentureX/sd-webui-agent-scheduler/assets/133728487/50c74922-b85f-493c-9be8-b8e78f0cd061

Hidden Features:

Queue all checkpoints at the same time

Right click the Enqueue button and select Queue with all checkpoints to quickly queue the current setting with all available checkpoints.

image

Queue with a subset of checkpoints

image

image

With the custom checkpoint select enabled (see Extension Settings section below), you can select a folder (or subfolder) to queue task with all checkpoints inside. Eg: Select anime will queue anime\AOM3A1B_oragemixs, anime\counterfeit\Counterfeit-V2.5_fp16 and anime\counterfeit\Counterfeit-V2.5_pruned.

Edit queued task

Double click a queued task to edit. You can name a task by changing task_id or update some basic parameters: prompt, negative prompt, sampler, checkpoint, steps, cfg scale.

image

Extension Settings

Go to Settings > Agent Scheduler to access extension settings.

Settings

Disable Queue Auto-Processing: Check this option to disable queue auto-processing on start-up. You can also temporarily pause or resume the queue from the Extension tab.

Queue Button Placement: Change the placement of the queue button on the UI.

Hide the Checkpoint Dropdown: The Extension provides a custom checkpoint dropdown.

Custom Checkpoint

By default, queued tasks use the currently loaded checkpoint. However, changing the system checkpoint requires some time to load the checkpoint into memory, and you also cannot change the checkpoint during image generation. You can use this dropdown to quickly queue a task with a custom checkpoint.

Auto Delete Queue History: Select a timeframe to keep your queue history. Tasks that are older than the configured value will be automatically deleted. Please note that bookmarked tasks will not be deleted.

API Access

All the functionality of this extension can be accessed through HTTP APIs. You can access the API documentation via http://127.0.0.1:7860/docs. Remember to include --api in your startup arguments.

API docs

Queue Task

The two apis /agent-scheduler/v1/queue/txt2img and /agent-scheduler/v1/queue/img2img support all the parameters of the original webui apis. These apis response the task id, which can be used to perform updates later.

{
  "task_id": "string"
}

Download Results

Use api /agent-scheduler/v1/results/{id} to get the generated images. The api supports two response format:

{
  "success": true,
  "data": [
    {
      "image": "data:image/png;base64,iVBORw0KGgoAAAAN...",
      "infotext": "1girl\nNegative prompt: EasyNegative, badhandv4..."
    },
    {
      "image": "data:image/png;base64,iVBORw0KGgoAAAAN...",
      "infotext": "1girl\nNegative prompt: EasyNegative, badhandv4..."
    }
  ]
}

API Callback

Queue task with param callback_url to register an API callback. Eg:

{
  "prompt": "1girl",
  "negative_prompt": "easynegative",
  "callback_url": "http://somehost:port/task_completed"
}

The callback endpoint must support POST method with body in multipart/form-data encoding. Body format:

{
  "task_id": "abc123",
  "status": "done",
  "files": [list of image files],
}

Example code of the endpoint handle with FastApi:

from fastapi import FastAPI, UploadFile, File, Form

@app.post("/task_completed")
async def handle_task_completed(
    task_id: Annotated[str, Form()],
    status: Annotated[str, Form()],
    files: Optional[List[UploadFile]] = File(None),
):
    print(f"Received {len(files)} files for task {task_id} with status {status}")
    for file in files:
        print(f"* {file.filename} {file.content_type} {file.size}")
        # ... do something with the file contents ...

# Received 1 files for task 3cf8b150-f260-4489-b6e8-d86ed8a564ca with status done
# * 00008-3322209480.png image/png 416400

Troubleshooting

Make sure that you are running the latest version of the extension and an updated version of the WebUI.

Steps to try to find the cause of issues:

Common errors:

AttributeError: module 'modules.script_callbacks' has no attribute 'on_before_reload'

If you see this error message in the output console, try update the WebUI to the latest version.

Update: The extension is updated to print this warning message instead: YOUR SD WEBUI IS OUTDATED AND AGENT SCHEDULER WILL NOT WORKING PROPERLY. You can still able to use the extension but it will not working correctly after a reload.

ReferenceError: submit_enqueue is not defined

If you click the Enqueue button and nothing happen, and you find above error message in the browser F12 console, follow the steps in this comment.

Update: This issue is now fixed.

TypeError: issubclass() arg 1 must be a class Please update the extension, there's a chance it's already fixed.

TypeError: Object of type X is not JSON serializable Please update the extension, it should be fixed already. If not, please fire an issue report with the list of installed extensions.

For other errors, feel free to fire a new Github issue.

Road Map

To list possible feature upgrades for this extension

Contributing

We welcome contributions to the Agent Scheduler Extension project! Please feel free to submit issues, bug reports, and feature requests through the GitHub repository.

Please give us a ⭐ if you find this extension helpful!

License

This project is licensed under the Apache License 2.0.

Disclaimer

The author(s) of this project are not responsible for any damages or legal issues arising from the use of this software. Users are solely responsible for ensuring that they comply with any applicable laws and regulations when using this software and assume all risks associated with its use. The author(s) are not responsible for any copyright violations or legal issues arising from the use of input or output content.


CRAFTED BY THE PEOPLE BUILDING ARTVENTURE, ATHERLABS & SIPHER ODYSSEY

About ArtVenture (coming soon™️)

ArtVenture offers powerful collaboration features for Generative AI Image workflows. It is designed to help designers and creative professionals of all levels collaborate more efficiently, unleash their creativity, and have full transparency and tracking over the creation process.

ArtVenture Teaser

ArtVenture Teaser 2

Current Features

ArtVenture offers the following key features:

Target Audience

ArtVenture is designed for the following target audiences:

🎉 Stay Tuned for Updates

We hope you find this extension to be useful. We will be adding new features and improvements over time as we enhance this extension to support our creative workflows.

To stay up-to-date with the latest news and updates, be sure to follow us on GitHub and Twitter (coming soon™️). We welcome your feedback and suggestions, and are excited to hear how AgentScheduler can help you streamline your workflow and unleash your creativity!