├── README.md
├── download-lcm-lora.json
├── download-svd-xt.json
├── download-svd.json
├── download-turbo.json
├── icon.png
├── install.json
├── install_mac.json
├── install_without_models.json
├── pinokio.js
├── screenshot.png
├── session.json
├── start.json
├── start_cpu.json
└── update.json
/README.md:
--------------------------------------------------------------------------------
1 | # ComfyUI Launcher
2 |
3 | A 1-click launcher for https://github.com/comfyanonymous/ComfyUI powered by https://pinokio.computer
4 |
5 | 
6 |
--------------------------------------------------------------------------------
/download-lcm-lora.json:
--------------------------------------------------------------------------------
1 | {
2 | "run": [{
3 | "method": "fs.download",
4 | "params": {
5 | "uri": "https://huggingface.co/latent-consistency/lcm-lora-sdxl/resolve/main/pytorch_lora_weights.safetensors?download=true",
6 | "dir": "ComfyUI/models/loras"
7 | }
8 | }, {
9 | "method": "input",
10 | "params": {
11 | "title": "Download Complete",
12 | "description": "Go back to the dashboard and launch the app!"
13 | }
14 | }, {
15 | "method": "browser.open",
16 | "params": {
17 | "uri": "/?selected=ComfyUI"
18 | }
19 | }]
20 | }
21 |
--------------------------------------------------------------------------------
/download-svd-xt.json:
--------------------------------------------------------------------------------
1 | {
2 | "run": [{
3 | "method": "fs.download",
4 | "params": {
5 | "uri": "https://huggingface.co/stabilityai/stable-video-diffusion-img2vid-xt/resolve/main/svd_xt.safetensors?download=true",
6 | "dir": "ComfyUI/models/checkpoints"
7 | }
8 | }, {
9 | "method": "input",
10 | "params": {
11 | "title": "Download Complete",
12 | "description": "Go back to the dashboard and launch the app!"
13 | }
14 | }, {
15 | "method": "browser.open",
16 | "params": {
17 | "uri": "/?selected=ComfyUI"
18 | }
19 | }]
20 | }
21 |
--------------------------------------------------------------------------------
/download-svd.json:
--------------------------------------------------------------------------------
1 | {
2 | "run": [{
3 | "method": "fs.download",
4 | "params": {
5 | "uri": "https://huggingface.co/stabilityai/stable-video-diffusion-img2vid/resolve/main/svd.safetensors?download=true",
6 | "dir": "ComfyUI/models/checkpoints"
7 | }
8 | }, {
9 | "method": "input",
10 | "params": {
11 | "title": "Download Complete",
12 | "description": "Go back to the dashboard and launch the app!"
13 | }
14 | }, {
15 | "method": "browser.open",
16 | "params": {
17 | "uri": "/?selected=ComfyUI"
18 | }
19 | }]
20 | }
21 |
--------------------------------------------------------------------------------
/download-turbo.json:
--------------------------------------------------------------------------------
1 | {
2 | "run": [{
3 | "method": "fs.download",
4 | "params": {
5 | "uri": "https://huggingface.co/stabilityai/sdxl-turbo/resolve/main/sd_xl_turbo_1.0_fp16.safetensors?download=true",
6 | "dir": "ComfyUI/models/checkpoints"
7 | }
8 | }, {
9 | "method": "input",
10 | "params": {
11 | "title": "Download Complete",
12 | "description": "Go back to the dashboard and launch the app!"
13 | }
14 | }, {
15 | "method": "browser.open",
16 | "params": {
17 | "uri": "/?selected=ComfyUI"
18 | }
19 | }]
20 | }
21 |
--------------------------------------------------------------------------------
/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocktailpeanut/comfyui.pinokio/05dcd21be737b01f572b73b4c801091c9ce881f4/icon.png
--------------------------------------------------------------------------------
/install.json:
--------------------------------------------------------------------------------
1 | {
2 | "requires": [{
3 | "type": "conda",
4 | "name": "ffmpeg",
5 | "args": "-c conda-forge"
6 | }],
7 | "run": [{
8 | "method": "shell.run",
9 | "params": {
10 | "message": "git clone https://github.com/comfyanonymous/ComfyUI.git"
11 | }
12 | }, {
13 | "method": "shell.run",
14 | "params": {
15 | "message": "git clone https://github.com/ltdrdata/ComfyUI-Manager",
16 | "path": "ComfyUI/custom_nodes"
17 | }
18 | }, {
19 | "method": "shell.run",
20 | "params": {
21 | "venv": "env",
22 | "path": "ComfyUI",
23 | "message": [
24 | "{{pip.install.torch}}",
25 | "pip install -r requirements.txt"
26 | ]
27 | }
28 | }, {
29 | "method": "fs.download",
30 | "params": {
31 | "url": "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors",
32 | "path": "ComfyUI/models/checkpoints/sd_xl_base_1.0.safetensors"
33 | }
34 | }, {
35 | "method": "fs.download",
36 | "params": {
37 | "url": "https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/resolve/main/sd_xl_refiner_1.0.safetensors",
38 | "path": "ComfyUI/models/checkpoints/sd_xl_refiner_1.0.safetensors"
39 | }
40 | }, {
41 | "method": "shell.run",
42 | "params": {
43 | "message": "mkdir workflows"
44 | }
45 | }, {
46 | "method": "shell.run",
47 | "params": {
48 | "message": [
49 | "git clone https://github.com/comfyanonymous/ComfyUI_examples",
50 | "git clone https://github.com/cocktailpeanut/comfymp4"
51 | ],
52 | "path": "workflows"
53 | }
54 | }, {
55 | "method": "input",
56 | "params": {
57 | "title": "Install Success",
58 | "description": "Go back to the dashboard and launch the app!"
59 | }
60 | }, {
61 | "method": "browser.open",
62 | "params": {
63 | "uri": "/?selected=ComfyUI"
64 | }
65 | }]
66 | }
67 |
--------------------------------------------------------------------------------
/install_mac.json:
--------------------------------------------------------------------------------
1 | {
2 | "requires": [{
3 | "type": "conda",
4 | "name": "ffmpeg",
5 | "args": "-c conda-forge"
6 | }],
7 | "run": [{
8 | "method": "shell.run",
9 | "params": {
10 | "message": "git clone https://github.com/comfyanonymous/ComfyUI.git"
11 | }
12 | }, {
13 | "method": "shell.run",
14 | "params": {
15 | "message": "git clone https://github.com/ltdrdata/ComfyUI-Manager",
16 | "path": "ComfyUI/custom_nodes"
17 | }
18 | }, {
19 | "method": "shell.run",
20 | "params": {
21 | "venv": "env",
22 | "path": "ComfyUI",
23 | "message": [
24 | "pip install -r requirements.txt",
25 | "pip install git+https://github.com/pytorch/pytorch@refs/pull/114183/head torchvision torchaudio"
26 | ]
27 | }
28 | }, {
29 | "method": "fs.download",
30 | "params": {
31 | "url": "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors",
32 | "path": "ComfyUI/models/checkpoints/sd_xl_base_1.0.safetensors"
33 | }
34 | }, {
35 | "method": "fs.download",
36 | "params": {
37 | "url": "https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/resolve/main/sd_xl_refiner_1.0.safetensors",
38 | "path": "ComfyUI/models/checkpoints/sd_xl_refiner_1.0.safetensors"
39 | }
40 | }, {
41 | "method": "shell.run",
42 | "params": {
43 | "message": "mkdir workflows"
44 | }
45 | }, {
46 | "method": "shell.run",
47 | "params": {
48 | "message": [
49 | "git clone https://github.com/comfyanonymous/ComfyUI_examples",
50 | "git clone https://github.com/cocktailpeanut/comfymp4"
51 | ],
52 | "path": "workflows"
53 | }
54 | }, {
55 | "method": "input",
56 | "params": {
57 | "title": "Install Success",
58 | "description": "Go back to the dashboard and launch the app!"
59 | }
60 | }, {
61 | "method": "browser.open",
62 | "params": {
63 | "uri": "/?selected=ComfyUI"
64 | }
65 | }]
66 | }
67 |
--------------------------------------------------------------------------------
/install_without_models.json:
--------------------------------------------------------------------------------
1 | {
2 | "requires": [{
3 | "type": "conda",
4 | "name": "ffmpeg",
5 | "args": "-c conda-forge"
6 | }],
7 | "run": [{
8 | "method": "shell.run",
9 | "params": {
10 | "message": "git clone https://github.com/comfyanonymous/ComfyUI.git"
11 | }
12 | }, {
13 | "method": "shell.run",
14 | "params": {
15 | "message": "git clone https://github.com/ltdrdata/ComfyUI-Manager",
16 | "path": "ComfyUI/custom_nodes"
17 | }
18 | }, {
19 | "method": "shell.run",
20 | "params": {
21 | "venv": "env",
22 | "path": "ComfyUI",
23 | "message": [
24 | "{{pip.install.torch}}",
25 | "pip install -r requirements.txt"
26 | ]
27 | }
28 | }, {
29 | "method": "shell.run",
30 | "params": {
31 | "message": "mkdir workflows"
32 | }
33 | }, {
34 | "method": "shell.run",
35 | "params": {
36 | "message": [
37 | "git clone https://github.com/comfyanonymous/ComfyUI_examples",
38 | "git clone https://github.com/cocktailpeanut/comfymp4"
39 | ],
40 | "path": "workflows"
41 | }
42 | }, {
43 | "method": "input",
44 | "params": {
45 | "title": "Install Success",
46 | "description": "Go back to the dashboard and launch the app!"
47 | }
48 | }, {
49 | "method": "browser.open",
50 | "params": {
51 | "uri": "/?selected=ComfyUI"
52 | }
53 | }]
54 | }
55 |
--------------------------------------------------------------------------------
/pinokio.js:
--------------------------------------------------------------------------------
1 | const os = require('os')
2 | const fs = require('fs')
3 | const path = require("path")
4 | const exists = (filepath) => {
5 | return new Promise(r=>fs.access(filepath, fs.constants.F_OK, e => r(!e)))
6 | }
7 | module.exports = {
8 | title: "ComfyUI",
9 | description: "Stable Diffusion & Stable Video Diffusion GUI",
10 | icon: "icon.png",
11 | menu: async (kernel) => {
12 | let installed = await exists(path.resolve(__dirname, "ComfyUI", "env"))
13 | if (installed) {
14 | let session = (await kernel.loader.load(path.resolve(__dirname, "session.json"))).resolved
15 | let gpu_running = kernel.running(__dirname, "start.json")
16 | let cpu_running = kernel.running(__dirname, "start_cpu.json")
17 | let running = cpu_running || gpu_running
18 |
19 | let arr
20 |
21 | if (gpu_running) {
22 | arr = [{
23 | icon: "fa-solid fa-spin fa-circle-notch",
24 | text: "Running"
25 | }, {
26 | icon: "fa-solid fa-desktop",
27 | text: "Server",
28 | href: "start.json",
29 | params: { fullscreen: true }
30 | }]
31 | if (session && session.url) {
32 | arr.push({
33 | icon: "fa-solid fa-rocket",
34 | text: "Open Web UI",
35 | href: session.url,
36 | target: "_blank"
37 | })
38 | }
39 | } else if (cpu_running) {
40 | arr = [{
41 | icon: "fa-solid fa-spin fa-circle-notch",
42 | text: "Running"
43 | }, {
44 | icon: "fa-solid fa-desktop",
45 | text: "Server",
46 | href: "start_cpu.json",
47 | params: { fullscreen: true }
48 | }]
49 | if (session && session.url) {
50 | arr.push({
51 | icon: "fa-solid fa-rocket",
52 | text: "Open Web UI",
53 | href: session.url,
54 | target: "_blank"
55 | })
56 | }
57 | } else {
58 | arr = [{
59 | icon: "fa-solid fa-power-off",
60 | text: "Launch",
61 | href: "start.json",
62 | params: { fullscreen: true, run: true }
63 | }, {
64 | icon: "fa-solid fa-power-off",
65 | text: "Launch CPU Mode (Slow)",
66 | href: "start_cpu.json",
67 | params: { fullscreen: true, run: true }
68 | }]
69 | }
70 |
71 | arr = arr.concat([{
72 | icon: "fa-solid fa-rotate",
73 | text: "Update",
74 | href: "update.json",
75 | params: { fullscreen: true, run: true }
76 | }, {
77 | text: "Download SDXL Turbo Model",
78 | icon: "fa-solid fa-download",
79 | href: "download-turbo.json",
80 | params: {
81 | run: true,
82 | fullscreen: true
83 | }
84 | }, {
85 | text: "Download Stable Video XT Model",
86 | icon: "fa-solid fa-download",
87 | href: "download-svd-xt.json",
88 | params: {
89 | run: true,
90 | fullscreen: true
91 | }
92 | }, {
93 | text: "Download Stable Video Model",
94 | icon: "fa-solid fa-download",
95 | href: "download-svd.json",
96 | params: {
97 | run: true,
98 | fullscreen: true
99 | }
100 | }, {
101 | text: "Download LCM LoRA",
102 | icon: "fa-solid fa-download",
103 | href: "download-lcm-lora.json",
104 | params: {
105 | run: true,
106 | fullscreen: true
107 | }
108 | }])
109 | return arr
110 | } else {
111 | if (kernel.platform === "darwin" && kernel.arch === "arm64") {
112 | return [{
113 | html: ' Install with Stable Video Support (Takes around 20 minutes)',
114 | type: "link",
115 | href: "install_mac.json?run=true&fullscreen=true"
116 | }, {
117 | html: ' Install without Stable Video (Quick)',
118 | type: "link",
119 | href: "install.json?run=true&fullscreen=true"
120 | }]
121 | } else {
122 | return [{
123 | html: ' Install',
124 | type: "link",
125 | href: "install.json?run=true&fullscreen=true"
126 | }]
127 | }
128 | }
129 | }
130 | }
131 |
--------------------------------------------------------------------------------
/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocktailpeanut/comfyui.pinokio/05dcd21be737b01f572b73b4c801091c9ce881f4/screenshot.png
--------------------------------------------------------------------------------
/session.json:
--------------------------------------------------------------------------------
1 | {
2 | "url": "http://127.0.0.1:8188"
3 | }
--------------------------------------------------------------------------------
/start.json:
--------------------------------------------------------------------------------
1 | {
2 | "daemon": true,
3 | "run": [{
4 | "method": "shell.run",
5 | "params": {
6 | "venv": "env",
7 | "path": "ComfyUI",
8 | "env": { "PYTORCH_MPS_HIGH_WATERMARK_RATIO": "0.0" },
9 | "message": "python main.py {{platform === 'darwin' ? '--force-fp16' : ''}}",
10 | "on": [{ "event": "/http:\/\/[0-9.:]+/", "done": true }]
11 | }
12 | }, {
13 | "method": "self.set",
14 | "params": {
15 | "session.json": {
16 | "url": "{{input.event[0]}}"
17 | }
18 | }
19 | }, {
20 | "method": "browser.open",
21 | "params": {
22 | "uri": "{{self.session.url}}"
23 | }
24 | }]
25 | }
26 |
--------------------------------------------------------------------------------
/start_cpu.json:
--------------------------------------------------------------------------------
1 | {
2 | "run": [{
3 | "method": "shell.start",
4 | "params": {
5 | "path": "ComfyUI",
6 | "env": { "PYTORCH_MPS_HIGH_WATERMARK_RATIO": "0.0" }
7 | }
8 | }, {
9 | "method": "shell.enter",
10 | "params": {
11 | "message": "{{os.platform() === 'win32' ? 'env\\\\Scripts\\\\activate' : 'source env/bin/activate'}}",
12 | "on": [{
13 | "event": null,
14 | "return": true
15 | }]
16 | }
17 | }, {
18 | "method": "shell.enter",
19 | "params": {
20 | "message": "{{os.platform() === 'win32' ? 'python' : 'python3'}} main.py --cpu",
21 | "on": [{
22 | "event": "/(http:\/\/[0-9.:]+)/",
23 | "return": "{{event.matches[0][1]}}"
24 | }]
25 | }
26 | }, {
27 | "method": "self.set",
28 | "params": {
29 | "session.json": {
30 | "url": "{{input}}"
31 | }
32 | }
33 | }, {
34 | "method": "browser.open",
35 | "params": {
36 | "uri": "/?selected=ComfyUI"
37 | }
38 | }, {
39 | "method": "process.wait"
40 | }]
41 | }
42 |
--------------------------------------------------------------------------------
/update.json:
--------------------------------------------------------------------------------
1 | {
2 | "run": [{
3 | "method": "shell.run",
4 | "params": {
5 | "message": "git pull"
6 | }
7 | }, {
8 | "method": "shell.run",
9 | "params": {
10 | "message": "git pull",
11 | "path": "ComfyUI"
12 | }
13 | }, {
14 | "method": "shell.run",
15 | "params": {
16 | "message": "git pull",
17 | "path": "ComfyUI/custom_nodes/ComfyUI-Manager"
18 | }
19 | }, {
20 | "method": "shell.run",
21 | "params": {
22 | "message": "git pull",
23 | "path": "workflows/ComfyUI_examples"
24 | }
25 | }, {
26 | "method": "input",
27 | "params": {
28 | "title": "Updated",
29 | "description": "Update successful. Restart the app from the dashboard"
30 | }
31 | }, {
32 | "method": "browser.open",
33 | "params": {
34 | "uri": "/?selected=ComfyUI"
35 | }
36 | }]
37 | }
38 |
--------------------------------------------------------------------------------