Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

221 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Inline Studio

AI filmmaking on a node canvas

A free and open-source app for AI filmmaking on a single node canvas. Train your own LoRAs and generate locally on your own GPU, with hosted models when you want them. Every render is kept as a versioned take.

License: GPLv3 Python 3.11+ Latest release Join our Discord

Inline Studio node canvas showing a generative AI film pipeline with frames, takes, and connectors

New here? Start with the getting started guide →

Supported models

Model Train Generate 16GB card
FLUX.2 (klein Base 4B) yes yes ~8.6GB
Krea 2 (RAW, 4-bit) yes yes ~11.9GB
Z-Image Turbo yes yes ~13.4GB
MiniMax H3 (video) yes yes ~20.6GB, slowly
Hosted models (API Nodes) no yes no GPU needed

VRAM is the training peak at 512px. Training is cheaper than generating, and a LoRA trained at 512 applies at any generation resolution. Full per-card matrix and timings: Benchmark results.

Install

You need Python 3.11+. The web UI ships as a Python package, so there is no Node step. --install --extra all installs everything: the engine, the model runtime, the trainer and the UI.

macOS / Linux:

git clone https://github.com/inlineresearch/Inline-Studio.git
cd Inline-Studio/core
./webui.sh --install --extra all
./webui.sh                         # http://127.0.0.1:8848

Windows (use webui.bat; webui.sh is a bash script and will not run in PowerShell):

git clone https://github.com/inlineresearch/Inline-Studio.git
cd Inline-Studio\core
.\webui.bat --install --extra all
.\webui.bat

rem If the CUDA build is wrong for your card, name the index yourself:
.\webui.bat --install --extra all --torch-index cu130

On NVIDIA, --install reads your GPU's compute capability and pulls the matching CUDA build of PyTorch, RTX 50-series included. Everything lands in core/.venv, which Inline Studio owns; an environment already activated in your shell is never touched. Re-running --install is safe.

Prefer pip? pip install -r requirements.txt from the repo root installs the whole app from PyPI, then run inline-studio.

Hardware support, RTX 50-series, AMD ROCm, Apple Silicon

Honest status, what has actually been run versus what has a code path nobody has verified:

Hardware Status Extra steps
NVIDIA, Linux Tested, Z-Image Turbo 1024² on a T4 (16GB); Krea 2 1024² and LoRA training on an L40S (48GB) None
NVIDIA, Windows Supported PyPI's default torch is CPU-only on Windows, so --install picks the CUDA build for your card
Apple Silicon (MPS) Code path exists, untested None. int8 does not apply on MPS, so a model too big for unified memory will not fit
AMD (ROCm), Linux Untested, reports welcome Needs a ROCm build of PyTorch, see below
CPU only Works, very slow ./webui.sh --cpu

RTX 50-series (Blackwell)

RTX 50-series cards are compute capability sm_120, and no wheel built for CUDA 12.4 or 12.6 has kernels for them. --install reads the capability off the driver and picks cu130, so a plain .\webui.bat --install --extra all is all you need.

Old driver? CUDA 13 needs driver R580 or newer. If yours predates it, --install picks cu128 and says so: cu128 still has sm_120 but is frozen at torch 2.11 and will never update, so update the driver when you can.

--torch-index takes a short name (cu130, cu128, cu126), a full index URL, or cpu. Naming it explicitly also replaces an already-installed torch, which a plain re-run will not do, so you rarely need --recreate. INLINE_TORCH_INDEX does the same thing.

Not sure what you have? .\webui.bat --print-torch-index prints what the driver reported and which index would be used, and installs nothing. That one line is what to paste into a bug report.

AMD (ROCm)

Nobody has verified this yet, so treat it as a starting point. Install normally first, then replace PyTorch, so nothing can overwrite your ROCm build afterwards:

cd core
./webui.sh --install --extra runtime

# Pick the index matching YOUR ROCm version: https://pytorch.org/get-started/locally/
uv pip install --python .venv/bin/python --force-reinstall \
  --index-url https://download.pytorch.org/whl/rocm6.2 torch

# hip should print a version, not None
.venv/bin/python -c "import torch; print(torch.cuda.is_available(), torch.version.hip)"

Do not run uv sync or pass --recreate afterwards; both put the PyPI torch back over your ROCm build. The dtype heuristics key off NVIDIA compute capability, which is meaningless on RDNA and CDNA, so open an issue either way.

Generation VRAM, so you can judge before downloading

Krea 2 is 26GB on disk and generation peaks near 36GB at 1024, so a 40GB card is the practical floor for inference. Training is far cheaper, see the table above. Z-Image Turbo is the low-VRAM path for generation: it is distilled to run CFG-free, so 1024² fits in about 11.5GB.

Command-line options

webui.sh (macOS/Linux) and webui.bat (Windows) map friendly flags onto the engine's INLINE_* environment variables. core/main.py takes the same flags. Run --help for the full list.

Flag Env var What it does
--listen INLINE_HOST=0.0.0.0 Bind all interfaces so other machines can reach it
--port N INLINE_PORT Port to serve on (default 8848)
--models-dir PATH INLINE_MODELS_DIR Where weights are scanned from (default ./models)
--data-dir PATH INLINE_DATA_DIR Where runs and takes are written
--lowvram INLINE_PROFILE=lowvram Tight-VRAM profile (tiling, slicing, int8)
--cpu INLINE_PROFILE=cpu Force CPU generation
--vram-budget GB INLINE_VRAM_BUDGET_GB Treat the GPU as having GB of usable VRAM
--multi-gpu [SPEC] INLINE_PARALLEL Split one image's denoise across GPUs; auto with 2+ GPUs
--torch-index WHICH INLINE_TORCH_INDEX With --install, override the PyTorch wheel index
--print-torch-index n/a Print the GPU probe and chosen index, then exit
--extra NAME n/a Add an install extra: runtime, server, training, all
--recreate n/a Rebuild .venv from scratch
--dev / --rebuild n/a Live-reload dev loop / force a fresh SPA build

From source (UI development): build the SPA with npm ci && npm run build:spa, then serve it with cd core && uv run python main.py --front-end-root ../dist-web. Or ./webui.sh --dev for Vite HMR on :5173.

Train a LoRA

Train on your own images, or on short video clips, on your own GPU with no cloud step. The Trainer tab is a second canvas: wire the nodes, press Start, watch it run. The finished .safetensors lands in models/loras/, where the LoRA loader node picks it up, so you can generate with it in the Studio tab straight away.

Inline Studio Trainer tab showing the LoRA training node graph with a dataset, live logs, and a loss curve

[ Load Dataset ] --> [ Caption ] --> [ Train LoRA ] --> [ Graph ]
                                          |
                                          +--> Resources (VRAM monitor)

Hyperparameters sit behind an Adjust button, so the node face stays a status surface. MiniMax H3 trains on stills for look and style, or on clips to learn motion as well; one dataset can hold both.

Already installed with --extra all? The trainer is ready. Otherwise ./webui.sh --install --extra training.

TRAINING.md is the full reference: which base to train on · benchmarks · training on clips · datasets and outputs · stop and resume · trigger words

A worked example: skin-lora-krea-2-raw, trained here on Krea 2 RAW from the 26 pairs published as krea2-skin-lora.

Generate

Drop a model node, wire a prompt, hit Run. One node, no loader or sampler wiring. Either put a .safetensors in core/models/diffusion_models/, or use the node's model popup to download the diffusion model, VAE and text encoder with visible progress. Nothing is fetched behind your back.

Z-Image Turbo generating locally on the Inline Core engine

  • Z-Image Turbo is the low-VRAM starting point, distilled to run CFG-free.
  • Krea 2 is a 12.9B MMDiT in two halves: train on RAW, generate with Turbo. A LoRA trained on RAW applies to Turbo unchanged.
  • FLUX.2 is natively multi-reference: wire several images and the prompt addresses them by position. One node covers klein 4B and 9B, their Base builds, and dev.
  • MiniMax H3 generates video and its soundtrack in one pass, as four nodes (text, image, first and last frame, reference). 24fps, 5 to 15 seconds. See the open weights guide.
  • ControlNet steers a local render with a pose, depth or edge map. Control Space is a 3D pose editor in a node, so you can build the skeleton rather than find a reference photo.
Model files: what goes where

Only the bf16 builds load. The fp8_scaled, int8_convrot, mxfp8, nvfp4 and pruned files in the community repos carry ComfyUI-specific scale tensors that only ComfyUI reads; the node says so rather than failing deep in a load. Memory saving is the device policy's job instead.

core/models/
  diffusion_models/  krea2_turbo_bf16.safetensors        <- Krea 2 Turbo (generate)
                     krea2_raw_bf16.safetensors          <- Krea 2 RAW (train)
                     flux-2-klein-4b.safetensors         <- FLUX.2 default, Apache 2.0
                     flux-2-klein-base-4b.safetensors    <- FLUX.2 base build, for training
                     minimax_h3_fl2va_bf16.safetensors   <- H3 text, image, first/last frame
                     minimax_h3_ref2va_bf16.safetensors  <- H3 reference node
  text_encoders/     qwen3vl_4b_bf16.safetensors         <- Krea 2
                     qwen_3_4b.safetensors               <- FLUX.2 klein 4B, shared with Z-Image
                     MiniMax-H3-text-encoder/            <- Qwen3-VL-32B, a folder
                     MiniMax-H3-processor/
  vae/               qwen_image_vae_diffusers.safetensors
                     flux2-vae.safetensors
                     minimax_h3_video_vae_fp16.safetensors
                     minimax_h3_audio_vae_fp32.safetensors
  loras/             your trained adapters land here
  controlnet/        ControlNet and control-LoRA files

Krea 2's VAE is the diffusers-format one from Qwen/Qwen-Image; ComfyUI's qwen_image_vae.safetensors holds the same weights in a layout diffusers cannot read. Every repo involved is public, so no Hugging Face token is needed.

MiniMax H3 is big: 144GB for the first three nodes, 210GB with the reference node. Measured on a 45GB card, a 10 second clip at 960x544 takes about 7.2 minutes, peaking at 38.9GB VRAM and 46.7GB of system RAM, so plan on 64GB of RAM. Canvas size is the biggest speed lever: 960x544 renders about 2.3x faster per step than 1344x768.

FLUX.2 dev on a 24GB card: take the ungated diffusers/FLUX.2-dev-bnb-4bit folder rather than the fp8 single file. A diffusers folder is a valid checkpoint anywhere a single file is.

Hosted models (API Nodes)

Add a Generate node and pick a model: hosted, closed models across image, video and audio, with no GPU and no setup. Bring your own provider key; it stays on your machine and you pay the provider per render, with each node estimating the price first.

The initial provider is fal: FLUX.2, FLUX.2 Edit, GPT Image 2, Nano Banana, Seedance, MiniMax H3, LTX, Sonilo and more. Add your key in Settings. MiniMax H3 is on the canvas both ways, as an API node and as local nodes with no per-render cost.

Local and hosted mix freely in one film, and either way the frame keeps its full take history.

Multi-GPU: split one image across GPUs

With two or more GPUs, Inline Core can cut a single image's latency by running its denoise loop collectively across them. This is not one image per GPU; it is one image whose sampling is shared, so a single render finishes faster.

Built on xDiT in an isolated worker group, one process per GPU. The split method follows the interconnect Core detects: PipeFusion over PCIe, Ulysses with NVLink. Turn it on with ./webui.sh --multi-gpu after uv pip install -e ".[parallel]".

Features

  • Free-form node canvas with versioned, non-destructive takes
  • Train your own styles and consistent characters, locally
  • Local generation built in, with the Inline Core engine
  • Multi-reference composition, and video with sound
  • Every locally generated image embeds the graph that made it: drop the file back on the canvas to rebuild the pipeline
  • Video Director, Trim Video and Trim Audio nodes
  • Export and import the whole project as one archive
  • Community extensions, and API Nodes for hosted models

Follow the Animated Short Film tutorial →

How it works

Generating one frame is the easy part. The work that makes a film is what comes after: exploring options, keeping what is good, and shaping a repeatable process out of it.

A frame is a slot with a history of takes, never a single file. Generating again adds a take and nothing is overwritten. Export zips a project into one archive, inputs, outputs and the graph that turned one into the other, so whoever opens it can re-run the pipeline exactly.

Inline Studio dashboard with recent AI film projects

It runs as a single process on one port: the Inline Core engine (Python) serves the web UI and does the generation. No desktop install, no separate backend. For the engineering story see core/README.md and core/CLAUDE.md.

Extensions

Install community-built nodes from a GitHub repo, from the Extensions dialog or a repo URL. Every install is security-reviewed, dependencies are isolated from the shared torch runtime, and nodes appear on the canvas immediately with no restart.

Browse the registry, or copy the extension guide to build your own.

FAQ

Is Inline Studio free? Yes, free and open source under GPL-3.0. Local generation and training cost nothing to run. Hosted models are billed by the provider.

Do I need a GPU? Not for the canvas, planning, editing or hosted models. Local generation and LoRA training need one; see the table at the top.

Can I train a LoRA locally? Yes, for all four local models, on your own GPU. See TRAINING.md.

What models can I run? Locally: Z-Image Turbo, FLUX.2, Krea 2 and MiniMax H3. Hosted: the fal catalogue, with more providers to follow.

Contributing

Issues, ideas and pull requests are all welcome. Start with CONTRIBUTING.md for setup and the checks to run; CLAUDE.md is the deeper engineering guide. By taking part you agree to our Code of Conduct.

Credits

  • xDiT for the PipeFusion and Ulysses parallelism behind the multi-GPU denoise.
  • ai-toolkit by ostris, for the approach to training on a step-distilled model, and the Z-Image and Krea 2 training adapters.
  • diffusers for the Krea 2 and MiniMax H3 reference implementations.
  • Krea AI for Krea 2, under the Krea AI Community License.
  • Black Forest Labs for FLUX.2: klein 4B, its Base build and the VAE are Apache 2.0; dev and the 9B builds are non-commercial.
  • MiniMax for MiniMax H3, under the MiniMax H3 Community License.

License

GPL-3.0. Model weights are yours to obtain and carry their own licences, which the GPL does not change.

About

AI filmmaking on a node canvas. Generate locally on your own GPU with the Inline Core engine (Z-Image, Krea 2, FLUX.2, MiniMax H3), or use hosted models with no GPU. Train your own LoRAs locally on the same canvas. Every render is kept as a versioned take, so you never lose the good version. Free and open source.

Topics

Resources

Code of conduct

Contributing

Stars

210 stars

Watchers

4 watching

Forks

Releases

Contributors

Languages