⬇️ Scroll down for Setup Instructions - Currently available on Linux & Windows computers with more than 12GB of VRAM, hosted version coming soon.
Dough is a tool for crafting videos with AI. Our goal is to give you enough control over video generations that you can make beautiful creations of anything you imagine that feel uniquely your own.
To achieve this, we allow you to guide video generations with precision using a combination of images (via Steerable Motion) and examples videos (via Motion Director) with granular motion settings for each frame.
To start, with Dough, you generate hundreds of images in the right style and theme using the Inspiration Engine:
You can then assemble these frames into shots that you can granularly edit:
And then animate these with granular settings for each frame and Motion LoRAs:
As an example of it in action, here's 4 images steering, alongside a LoRA trained on a video:
While here are four abstract images animated by each of the different workflows available inside Dough:
We're obviously very biased think that it'll be possible to create extraordinarily beautiful things with this and we're excited to see what you make! Please share stuff you made in our Discord.
You can see a selection of artworks created with Dough here.
Pinokio is a web browser for launching and managing AI apps. We recommend you use it for installing Dough.
Instructions:
-
Download Pinokio Browser
-
Click into Discover, search "Dough" select the option by "Banodoco" and press the download button
-
Once it's downloaded, press the Install button. This will take a few minutes
-
Once it's installed, press the Run button and it should launch
Setting up on Runpod
-
We recommend setting up persistent storage for a quick setup and for your projects to persist. To get it going, click into “Storage”, select “New Network Volume”. 50GB should be more than enough to start.
-
Select a machine - any should work, but we recommend a 4090.
-
During setup, open the relevant ports for Dough like below:
![](https://private-user-images.githubusercontent.com/34690994/327804957-102bc6fe-0962-493f-b11a-9dfa22501bdd.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQzMzc0NDgsIm5iZiI6MTcyNDMzNzE0OCwicGF0aCI6Ii8zNDY5MDk5NC8zMjc4MDQ5NTctMTAyYmM2ZmUtMDk2Mi00OTNmLWIxMWEtOWRmYTIyNTAxYmRkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODIyVDE0MzIyOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWYwMGZkODU0ZTVhMTk2M2U3MWM1NmNjMDUxZjc1NWE4ZWQwZGE1MDJkYTdhMWRkNTNhZjY3ZmM5ZGZkMmJjNWImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.6MXjp6T_mNPd53rj1GwvlRsSBvTuz3NZaUarglko2Mw)
![](https://private-user-images.githubusercontent.com/34690994/327804989-1b9ff4d7-960e-496c-83ae-306c0dfa623d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQzMzc0NDgsIm5iZiI6MTcyNDMzNzE0OCwicGF0aCI6Ii8zNDY5MDk5NC8zMjc4MDQ5ODktMWI5ZmY0ZDctOTYwZS00OTZjLTgzYWUtMzA2YzBkZmE2MjNkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODIyVDE0MzIyOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQ2ODcyZDhmZDYwMzNlYzYwNzJmMzUzYjE0YmNiODA5MGRmNzViMmM2YTQ2MGJjYmM3MDBmYzdlY2VhNDg0ZmQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.TvLSBJcaPxaeGXkKZScIdqie2ip_TzXYTO3SBE-PlQE)
- When you’ve launched the pod, click into Jupyter Notebook:
![](https://private-user-images.githubusercontent.com/34690994/327805002-9a0b6b54-ae53-4571-8131-165c4bacc909.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQzMzc0NDgsIm5iZiI6MTcyNDMzNzE0OCwicGF0aCI6Ii8zNDY5MDk5NC8zMjc4MDUwMDItOWEwYjZiNTQtYWU1My00NTcxLTgxMzEtMTY1YzRiYWNjOTA5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODIyVDE0MzIyOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTI4MWVlMDFiMTkxZmMyODVjY2IxYzMxOTVmZTUyMDg3N2Q0MWY4N2MyNGNmNGViZjA0ZmU3YzNjM2UzMTU0M2EmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Hd-qkbqo9x0skdxQ_SYXYxC3qYtZiP1MBvKytXor89o)
![](https://private-user-images.githubusercontent.com/34690994/327805007-86b31523-7457-43b2-ad68-99e62689c32f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQzMzc0NDgsIm5iZiI6MTcyNDMzNzE0OCwicGF0aCI6Ii8zNDY5MDk5NC8zMjc4MDUwMDctODZiMzE1MjMtNzQ1Ny00M2IyLWFkNjgtOTllNjI2ODljMzJmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODIyVDE0MzIyOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJlOGU1ODk0ZTQ2N2NiMWFmNDhmYmM0ZTA1OGQ3YzQ0NGZkODE5YTdmMjBlYmU0NTY4OTIzMjI4YmVlNzllZGUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.SrDQbw58TSxq8UnEwO7gL4qiOKSBf_6cYTwhBDGqY40)
-
Follow the “Setup for Linux” below and come back here when you’ve gone through them.
-
Once you’re done that, grab the IP Address for your instance:
![](https://private-user-images.githubusercontent.com/34690994/327805019-35aed283-fa47-494e-924e-0263b84be2b2.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQzMzc0NDgsIm5iZiI6MTcyNDMzNzE0OCwicGF0aCI6Ii8zNDY5MDk5NC8zMjc4MDUwMTktMzVhZWQyODMtZmE0Ny00OTRlLTkyNGUtMDI2M2I4NGJlMmIyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODIyVDE0MzIyOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTg5MWNiMzE0YTdhZGJmNzg5NTZhMzY4MGQzYmE5MzFmM2U4ZDViMGMzZTQ3ZDFhODMwOWE4NjA3MmNmZjEzNDgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.A4v6zcluHp5M3DdZkPMJPkK24OgiU5UPP2vZvRRsPZI)
![](https://private-user-images.githubusercontent.com/34690994/327805025-2bdb9363-9138-49bd-a2b9-69961e744f7a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQzMzc0NDgsIm5iZiI6MTcyNDMzNzE0OCwicGF0aCI6Ii8zNDY5MDk5NC8zMjc4MDUwMjUtMmJkYjkzNjMtOTEzOC00OWJkLWEyYjktNjk5NjFlNzQ0ZjdhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODIyVDE0MzIyOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWM3Yzc0OTdiNjNiZjEzYmJjMzZlMTI0Mzc0ZmY1YTk5OTljYWE2OGJhYjA4MDZlZDEyYTg0ZTFlNjI3ZTI5MzYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.KJJZPWG47ISXTS4obGzDiW-kOKIdd6ENdktY1DCE8gI)
![](https://private-user-images.githubusercontent.com/34690994/327805033-a2a83ee6-149e-44aa-b00a-d36e42320bb4.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQzMzc0NDgsIm5iZiI6MTcyNDMzNzE0OCwicGF0aCI6Ii8zNDY5MDk5NC8zMjc4MDUwMzMtYTJhODNlZTYtMTQ5ZS00NGFhLWIwMGEtZDM2ZTQyMzIwYmI0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODIyVDE0MzIyOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQ2YzQ2YWRiNTA5NzA3NjVlZTgwZDAxMmY5ZDYyMjg5MDIwOGE4ZWVjNjA0ZDI5MmM4NmYxMmExZjcyZjhlYjUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.7RQNhS_3SYllHDLmPC_ISIdXqOgJ-KAwGI6YKKvn9tA)
Then form put these into this form with a : between them like this:
{Public ID}:{External Pair Value}
In the above example, that would make it:
213.173.108.4:14810
Then go to this URL, and it should be running!
Important: remember to terminate the instance once you’re done - you can restart it by following the instructions from step 3 above.
Manual installation instructions for Linux
This commands sets up the app. Run this only the first time, after that you can simply start the app using the next command.
curl -sSL https://raw.githubusercontent.com/banodoco/Dough/green-head/scripts/linux_setup.sh | bash
In terminal, run:
cd Dough
you can run the app using
source ./dough-env/bin/activate && ./scripts/entrypoint.sh
Manual installation instructions for Windows
Open the Start menu, type Windows PowerShell, right-click on Windows PowerShell, and then select Run as administrator.
Then run this command Set-ExecutionPolicy RemoteSigned
NOTE: Make sure you have Python3.10 installed and set as the default Python version
Install MS C++ Redistributable (if not already present) - https://aka.ms/vs/16/release/vc_redist.x64.exe
Make sure you're in the documents folder by running the following command:
cd ~\Documents
iwr -useb "https://raw.githubusercontent.com/banodoco/Dough/green-head/scripts/windows_setup.bat" -OutFile "script.bat"
Start-Process "cmd.exe" -ArgumentList "/c script.bat"
In Powershell, run:
cd Dough
. .\dough-env\Scripts\activate ; .\scripts\entrypoint.bat
Common problems (click to expand)
Issue during installation
- Make sure you are using python3.10
- If you are on Windows, make sure permissions of the Dough folder are not restricted (try to grant full access to everyone)
- Double-check that you are not inside any system-protected folders like system32
- Install the app in admin mode. Open the powershell in the admin mode and run "Set-ExecutionPolicy RemoteSigned". Then follow the installation instructions given in the readme
- If all of the above fail, try to run the following instructions one by one and report which one is throwing the error
call dough-env\Scripts\activate.bat python.exe -m pip install --upgrade pip pip install -r requirements.txt pip install websocket pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 pip install -r comfy_runner\requirements.txt pip install -r ComfyUI\requirements.txt
Unable to locate credentials
Make a copy of ".env.sample" and rename it to ".env"Issue during runtime
- If a particular node inside Comfy is throwing an error then delete that node and restart the app
- Make sure you are using python3.10 and the virtual environment is activated
- Try doing "git pull origin main" to get the latest code
Generations are in progress for a long time
- Check the terminal if any progress is being made (they can be very slow, especially in the case of upscaling)
- Cancel the generations directly from the sidebar if they are stuck
- If you don't see any logs in the terminal, make sure no other program is running at port 12345 on your machine as Dough uses that port
Some other error?
Drop in our Discord.
Interested in joining a community of people who are pushing open AI art models to their technical and artistic limits?
Drop in our Discord.