- CushyStudio Actions are interactive generative "apps" with dedicated UIs.
- They make it super easy and fun to explore all generative art has to offer.
- CushyStudio allows you to run, create, and share Actions
|
|
|
Ensure you have:
Install CushyStudio by running these commands in a terminal
git clone https://github.com/rvion/CushyStudio
cd CushyStudio
npm install
npm start
When you start CushyStudio
... TODO
TODO: place video here
- Automatically download images in your local outputs folder
- Automatically upload files
- โ Quickly switch between various ComfyUI setups
- โณ Parallelize work across multiple instances
Edit the list of ComfyUI setups in CONFIG.json
2023-10-18_21-28-13.mp4
๐๏ธ CushyStudio is directly compatible with ComfyUI workflow json format and images. Add them to the action folder to quickly use them inside CushyStudio.
2023-10-19_00-39-13.mp4
- โ Embedded Civitai browser
- โ Civitai custom ComfyUI Nodes support
- โ Dedicated Civitai input widgets to augment your own actions
Layers, effects, masks, blending modes, ...and more. Always one click away
๐ In case you have a problem, check the logs and report what you see
- Define your own UI
- Build one or many prompts with custom logic in TypeScript
- Type-safe experience pushed to the MAXIMUM
- Every single value/enum is typed
- A built-in standard library made to quickly build your dream workflow
- Use lambda to get completion only for the node that produces the value needed
๐๏ธ CushyStudio comes packed with features to allow you to create your own AI-powered image and video creation tools.
In Cushy, tools are called Actions
.
Creating actions is easy because ๐๏ธ CushyStudio
-
On startup, ensure CushyStudio is connected to some ComfyUI server
- A whole TypeScript Action SDK will be generated in the
schema/
folder - All your custom nodes, models, and images will be converted to
enums
,classes
,helpers
, etc, allowing you to create actions with maximum type safety and completion.
- A whole TypeScript Action SDK will be generated in the
-
Create a folder in the
actions/
subfolder at the root -
Create any
myaction.ts
file inside this folder -
Open the whole CushyStudio repository in Visual Studio Code
- ๐ Open the whole CushyStudio installed repository
- NOT just the action folder, NOR the action file itself, but:
-
Initialize your action from some basic code or generated code from existing workflows
action('demo1-basic', { author: 'rvion', // A. define the UI ui: (form) => ({ positive: form.str({ label: 'Positive', default: 'flower' }), }), // B. defined the execution logic run: async (action, form) => { // build a ComfyUI graph const graph = action.nodes const ckpt = graph.CheckpointLoaderSimple({ ckpt_name: 'albedobaseXL_v02.safetensors' }) const seed = action.randomSeed() const sampler = graph.KSampler({ seed: seed, steps: 20, cfg: 14, sampler_name: 'euler', scheduler: 'normal', denoise: 0.8, model: ckpt, positive: graph.CLIPTextEncode({ text: form.positive, clip: ckpt }), negative: graph.CLIPTextEncode({ text: '', clip: ckpt }), latent_image: graph.EmptyLatentImage({ width: 512, height: 512, batch_size: 1 }), }) graph.SaveImage({ images: graph.VAEDecode({ samples: sampler, vae: ckpt }), filename_prefix: 'ComfyUI', }) // run the graph you built await action.PROMPT() }, })
-
See how actions look like by dropping any ComfyUI
workflow
orimage
into the action and looking at theconverted.ts
An Action is a file containing
- An UI definition (widgets, form, styles, default values, tabs, etc...) (a bit like Gradio in Python)
- A piece of code that runs your action
- ...And more
Publishing your action is easy!
-
Create a GitHub repository. (https://github.com/new)
-
Commit your actions files (follow instructions given by Git Hub on the new repository page).
-
Open an issue asking to add your
action pack
to themarketplace
.
SHOW EXAMPLE
cd actions/rvion
git init
Initialized empty Git repository in /Users/loco/dev/CushyStudio/actions/rvion/.git/
git add .
git commit -m "first commit"
[master (root-commit) 602fab1] first commit
4 files changed, 146 insertions(+)
create mode 100644 mask-face.ts
create mode 100644 rembg.ts
create mode 100644 replace-part.ts
create mode 100644 test.ts
git remote add origin [email protected]:rvion/cushy-example-actions.git
Then open an issue asking there