local · offline · your GPU

AI Visual Workshop

Every visual-AI task in one place

One web app and JSON API over ComfyUI: make an image, edit a photo by describing the change, repaint part of it, extend it past its borders, or bring it to life as a video. GGUF models, so it runs on a 6 GB card.

Qwen-Image 2.1Krea 2 TurboWan 2.2 GGUFComfyUIFlaskMIT
The Workshop: the tool panel on the left, a gallery of generated images on the right
The Studio: pick a tool, describe it, press Enter

Ten tools, one panel

Generate

Text to image

Qwen-Image 2.1, Krea 2 Turbo in 8 steps, SDXL (RealVisXL Lightning) in 6, or Chroma1-HD. Size, steps, CFG, batch, and a seed you can roll 🎲 or reuse from any result.

Edit photo

Describe the change

“Make the dress red.” Qwen-Image 2.1 edits natively, keeping the photo's shape and everything you didn't mention.

Inpaint

Repaint one area

Paint a mask and regenerate only that part. Everything outside it is kept pixel for pixel.

Uncrop

Past the borders

Extend to 16:9, 1:1 or “zoom out 2×”. The model invents the surroundings; the original stays exact.

Pose

Copy a pose

SDPose reads the body, hands and face in a photo; Qwen-Image draws something new in exactly that pose.

Background

Cut out or replace

BiRefNet cuts the subject out as a transparent PNG, or keeps it and paints a new background you describe. Local, no cloud.

Relight

Change the light

“Golden hour from the left.” Only the lighting changes; people, pose and composition stay.

Video FX

Smooth, cut out

RIFE adds in-between frames (16 → 32 fps), or remove a video's background onto a green screen.

Upscale

2× or 4×

4x-UltraSharp V2 adds real detail. One click under any result, or its own tool for any photo.

Video

Bring it to life

Wan 2.2: animate a photo or make a video from a prompt alone. 2–5 s at 24 fps, sized to the photo. Plus a face-focused 14B model (test).

Models

Download in the app

See what's installed and download the rest, resumable over parallel connections, without leaving the page.

Extras

Enhance, LoRA, queue

✨ rewrites a prompt with a local LLM, LoRAs stack on any tool, and every job gets a card with live progress and Cancel.

Five frames of a Wan 2.2 video made from one portrait: she smiles, tucks her hair behind her ear and tilts her head
One portrait → 2 s of Wan 2.2 video (480×832, 20 steps, about 4 min on an RTX 2060)

Made with it

Straight out of the app on an RTX 2060 (6 GB), no retouching.

A watercolour lighthouse on a rocky coast at dusk
Qwen-Image 2.1 · “a watercolour painting of a lighthouse at dusk”
A red vintage motorcycle on a rain-soaked neon street at night
Krea 2 Turbo, 8 steps · “a red vintage motorcycle on a neon Tokyo street”
An orange cat asleep in a cozy treehouse reading nook
Qwen-Image 2.1 · “a cozy reading nook inside a treehouse”
Animated: the woman from the photo smiles, tucks her hair behind her ear and tilts her head
Video · face model (test)

One photo, and she comes to life

Wan 2.2 I2V-A14B (LightX2V, 4 steps) from the same portrait: she smiles, tucks her hair behind her ear and tilts her head, and it is still her in every frame. 480×832, 3 s, about 6 minutes on a 6 GB RTX 2060.

“she smiles warmly, tucks a strand of hair behind her ear and tilts her head slightly, natural blinking, soft window light”

Before and after: the studio replaced by a golden-hour beach, the woman untouched
Background → Replace · “a sunlit beach at golden hour”: she stays pixel for pixel
Before and after: the same photo relit with warm sunlight from the left
Relight · “warm golden-hour sunlight from the left”: only the light changes
Before and after: the same woman, face and studio; her sweater outfit changed to a red satin gown
Edit photo · “a red satin evening gown”: face, pose and room untouched

Models

The Models page: every model with its status, size, license and a Download button
The Models page: see what's installed, download the rest
The model picker open, with an info card about Qwen-Image 2.1
Hover a model to read about it
ModelDoesDefault fileLicense
Qwen-Image 2.1Generate, edit, inpaint, uncropqwen-image-2.1-UC-Q4_K_M.gguf (4.6 GB)Qwen Research
Krea 2 Turbo (optional)Generate, in 8 stepskrea2_turbo_bf16-Q4_0.gguf (8.3 GB)Krea 2 Community
RealVisXL V5 LightningGenerate (SDXL, photoreal, 6 steps)RealVisXL_V5.0_Lightning_fp16.safetensors (6.9 GB)OpenRAIL++
Wan 2.2 TI2V-5B (optional)Video: text or photo to videoWan2.2-TI2V-5B-Q5_K_M.gguf (3.8 GB)Apache 2.0
Wan 2.2 I2V-A14B, faces (test)Video: photo to video, faces and identityLightX2V 4-step, high + low noise Q3_K_M (14.4 GB)Apache 2.0
SDPose whole-bodyPosesdpose_wholebody_fp16.safetensors (1.9 GB)MIT
4x-UltraSharp V2Upscale4x-UltraSharpV2.safetensors (0.14 GB)CC BY-NC-SA 4.0
Chroma1-HD (optional)Generate, uncensored, Flux-basedChroma1-HD-Q4_K_M.gguf (5.6 GB)Apache 2.0

Tested on an RTX 2060 (6 GB) with 64 GB of RAM. Set the Windows page file to at least 32 GB.

How it works

browser → Flask (app.py) → HTTP + websocket → ComfyUI → Qwen-Image 2.1 / Krea 2 / SDXL / Wan 2.2 / SDPose
                       ↓
                 Ollama (✨ Enhance, optional)

The Flask server doesn't run the models: it patches the API-format ComfyUI workflow for the tab with your prompt and settings, queues it, relays live sampler progress, and saves the results to output/. So the UI can live on a Raspberry Pi while a GPU PC does the work.

Run it

  1. Install ComfyUI and the leejet ComfyUI-GGUF nodes.
  2. Point ComfyUI at this repo's models/ with extra_model_paths.yaml, then download the models from the app's Models page (or by hand; the README lists every file).
  3. Run run.bat (or run.ps1) and open http://127.0.0.1:7870. It starts ComfyUI in its own window if it isn't running yet; with run.sh, start ComfyUI yourself first.
$ run.bat
$ python generate_video.py "she turns toward the camera and smiles" --image photo.png

Or script it

$ curl -X POST http://127.0.0.1:7870/api/video \
    -F image=@photo.png -F "prompt=she turns toward the camera and smiles" -F frames=81