Awesome
Agent Scheduler
Introducing AgentScheduler, an A1111/Vladmandic Stable Diffusion Web UI extension to power up your image generation workflow!
Table of Content
- Compatibility
- Installation
- Functionality
- Settings
- API Access
- Troubleshooting
- Road Map
- Contributing
- License
- Disclaimer
Compatibility
This version of AgentScheduler is compatible with latest versions of:
- A1111: commit baf6946
- Vladmandic: commit 9726b4d
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
- Open the Extensions tab
- Open the "Install From URL" sub-tab
- Paste the repo url: https://github.com/ArtVentureX/sd-webui-agent-scheduler.git
- Click "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
1️⃣ Input your usual Prompts & Settings. Enqueue to send your current prompts, settings, controlnets to AgentScheduler.
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.
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.
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.
Queue with a subset of checkpoints
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
.
Extension Settings
Go to Settings > Agent Scheduler
to access extension 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.
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.
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:
- json with base64 encoded
{
"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..."
}
]
}
- zip file with querystring
zip=true
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.
- To update the extension, go to
Extension
tab and clickCheck for Updates
, then clickApply and restart UI
. - To update the WebUI it self, you run the command
git pull origin master
in the same folder as webui.bat (or webui.sh).
Steps to try to find the cause of issues:
- Check the for errors in the WebUI output console.
- Press F12 in the browser then go to the console tab and reload the page, find any error message here.
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
- Connect multiple SD webui nodes to run task.
- Sync with GenAI Management Platform ArtVenture
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.
Current Features
ArtVenture offers the following key features:
- Seamless Access: available on desktop and mobile
- Multiplayer & Collaborative UX. Strong collaboration features, such as real-time commenting and feedback, version control, and image/file/project sharing.
- Powerful semantic search capabilities.
- Building on shoulders of Giants, leveraging A1111/Vladnmandic and other pioneers, provide collaboration process from Idea (Sketch/Thoughts/Business Request) to Final Results(Images/Copywriting Post/TaskCompleted) in 1 platform
- Automation tooling for certain repeated tasks
- Secure and transparent, leveraging hasing and metadata to track the origin and history of models, loras, images to allow for tracability and ease of collaboration.
- Personalize UX for both beginner and experienced users to quickly remix existing SD images by editing prompts and negative prompts, selecting new training models and output quality as desired.
Target Audience
ArtVenture is designed for the following target audiences:
- Casual Creators
- Small Design Teams or Freelancers
- Design Agencies & Studios
🎉 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!