Open-source project
zai-org/SCAIL-2 avatar
zai-org/SCAIL-2

SCAIL-2: end-to-end character animation that drops pose intermediates, and the masks you must get right

Official Implementation of SCAIL-2: Unifying Controlled Character Animation with End-to-end In-Context Conditioning

1,201 stars89 forksPythonApache-2.0

At a glance

What is it?
SCAIL-2 is zai-org's open character animation model that removes intermediate pose representations, trained on 60,000 synthesised motion pairs through a Unified Motion Transfer Interface. It claims emergent cross-identity, animal-driving and SAM3D-Body control, and it makes a colour-coded mask a required input even in Animation Mode.
Who is it for?
Try SCAIL-2 if your animation input is something a skeleton-driven pipeline handles badly: an animal, a cross-identity replacement, or several reference views of one character, because those are the capabilities the README claims emerged from the training recipe. Stay with a pose-driven generator if your input is a clean human video, since that is the case the intermediates were built for and the mask work here buys you nothing.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 26 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 17, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What SCAIL-2 removes from the pipeline

SCAIL-2 is the official implementation of an open character animation model from zai-org, and its target is a specific failure of the previous generation. SCAIL-1 identified the bottlenecks in character animation as how to represent pose and how to inject it, and this work names the remaining problem as over-reliance on intermediates. Skeleton maps are ambiguous in complex scenes and restrict the driving source to human movement seen from outside, so animals cannot drive the animation. Character replacement and multi-character animation hit the same wall, since the inpainting masks used by current methods are themselves intermediates and bound what the model can do. SCAIL-2 tries to remove the intermediate representation from the pipeline entirely.

60K motion pairs and the Unified Motion Transfer Interface

The mechanism is a training data trick plus an interface design. To bypass intermediate pose representation, the team used off-the-shelf generators, SCAIL-Preview, Wan-Animate and MoCha, to synthesise 60,000 motion pairs, then designed a Unified Motion Transfer Interface with two types of masking channels and a dedicated RoPE scheme so all of that data can train one model. They also use reserve driving, so the model learns capabilities beyond the ones it was synthesised from. The README claims the result is emergent capability rather than trained behaviour: cross-identity replacement, animal driving scenarios, and zero-shot use of a more advanced control intermediate such as SAM3D-Body mesh rendering. That last one is the interesting claim, because an intermediate that is richer than a skeleton becomes an input the model accepts without being trained on it.

Mask semantics, and the failure mode they cause

The mask is the part users actually have to get right, and the README leads Getting Started with it rather than with installation. A mask is a required input even in Animation Mode, and its channels are colour-coded so you can see what you are giving the model. Black tells the model the background at that location should not be visible. White tells it the background should be visible. Colour encodes the correspondence between character regions and the driving motion. The repository shows reference and driving mask pairs for animation mode, both end-to-end and pose-driven, and for replacement mode, and it states the failure mode plainly: without a correct mask, Animation Mode collapses into Replacement Mode behaviour on certain inputs. The same colour logic extends to multi-reference generation, where extra views such as a back view, a close-up or an occluded background get their own masks.

Bias-Aware DPO, LoRAs and the ComfyUI path

On top of the model, the project frames a bias it found in pose-driven generators as a preference problem and introduces Bias-Aware DPO to improve detail. The DPO LoRA is published on HuggingFace and can be enabled both in this repository and in ComfyUI implementations. A second LoRA, for relighting in replacement mode, was released on 2026.07.15. The integration story is broader than the repository: ComfyUI support landed on 2026.06.09, multi-reference inference reached ComfyUI on 2026.06.17, and training code was released on 2026.08.06 on a separate sat-scail2 branch, with a third-party VRAM-friendly trainer linked from the README. The TODO list has exactly one item, and it is already checked.

What the environment needs, and what is thin

Setup information is thinner than the research, which is worth saying before you plan an evening around it. The repository carries a requirements.txt that pins the shape of the environment: torch 2.4.0 or newer, torchvision 0.19.0 or newer, diffusers 0.31.0 or newer, transformers 4.49.0 or newer, accelerate 1.1.1 or newer, gradio 5.0.0 or newer, flash_attn, and numpy constrained below version 2. The presence of gradio points at a local UI, and flash_attn at a GPU with the relevant support. The README's Getting Started section, as far as it is visible, opens with mask semantics and example assets rather than a command line, and the community section is largely demo videos, so expect to read the project page and the HuggingFace model card for weights and invocation rather than finding a single install command here.

Two limits that follow from the design

Two limits follow from the design. The first is the mask dependency already mentioned: a wrong mask does not degrade output gracefully, it changes the mode of the model, which is a sharper failure than most image tools give you. The second is that the main branch is inference code, while training lives on a separate branch and the VRAM-friendly path lives in a third-party fork, so anyone planning to fine-tune is working across three repositories with different maintainers. The dependency floor is high too, with flash_attn and a numpy ceiling below 2, which tends to conflict with other things in the same environment. This is research code released alongside a paper, and it reads like it.

SCAIL-1 and the pose-driven generators

The comparison worth making is with SCAIL-1, the predecessor this repository describes. That model took the standard route of representing pose as a skeleton map and injecting it, and it is the baseline the new work argues against, so if your driving source is a clean exocentric human video and you want the older behaviour, it remains a coherent choice. The other comparison is with the pose-driven generators used to build the training set, Wan-Animate and MoCha, which still do the job they were built for when your input is human motion and you want a pose-conditioned result. SCAIL-2 is the bet that removing the intermediate buys generality: animals, cross-identity replacement, and multi-reference inputs. That generality is the reason to take on the mask work.

Licence, cadence and where the weights live

SCAIL-2 is Apache-2.0 licensed, with the last push on 2026-08-24, an arXiv preprint numbered 2606.10804, a project page, and weights published on HuggingFace under zai-org/SCAIL-2. The release history in the news section runs from the model and inference code in June 2026 through ComfyUI integration, multi-reference support, the relighting LoRA and finally training code in August, which is a fast cadence for a research release. Check the licence before commercial use, since a model card can carry additional terms even when the repository is Apache-2.0. The practical next step if you want to evaluate it without touching Python is the ComfyUI path, which has had multi-reference support since June 2026.

Editorial conclusion

Try SCAIL-2 if your animation input is something a skeleton-driven pipeline handles badly: an animal, a cross-identity replacement, or several reference views of one character, because those are the capabilities the README claims emerged from the training recipe. Stay with a pose-driven generator if your input is a clean human video, since that is the case the intermediates were built for and the mask work here buys you nothing. Whichever you pick, budget your first session for the mask, because the README states that without a correct one Animation Mode collapses into Replacement Mode behaviour on some inputs.

Frequently asked questions

What is the mask for in SCAIL-2?

It is a required input even in Animation Mode. Black tells the model the background at that location should not be visible, white says it should be, and colour encodes the correspondence between character regions and the driving motion. Without a correct mask, Animation Mode collapses into Replacement Mode behaviour on certain inputs.

Does SCAIL-2 support animals as a driving source?

Yes. Animal-driving scenarios are listed among the emergent capabilities, alongside cross-identity replacement and zero-shot acceptance of richer control intermediates such as SAM3D-Body mesh rendering.

Is there training code for SCAIL-2?

Yes, released on 2026.08.06 on the separate sat-scail2 branch, with a third-party VRAM-friendly trainer linked from the README. The main branch carries inference code, and training code was the only item on the TODO list.

Official sources

  1. Issues
  2. License: Apache-2.0
  3. README
  4. zai-org/SCAIL-2 on GitHub
Community notes

Community notes