Skip to content

About

Real-time generative rendering for interactive worlds, from any reference.

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

45 Commits

Folders and files

Repository files navigation

EdenLive

EdenLive: Real-Time Generative Rendering from Any Visual Reference

Project Page Model License

Project Page · Code · Models

Zehuan Huang1,*, Tianxing Xu1,*, Chunli Peng1,*, Cheng Zhang1,*, Zeyi Zheng1,†, Yifei Song1,†, Zekai Gu1,†, Zhipeng Yu1, Peng Wang1,‡, Yanpei Cao1,✉

* Equal contribution · † Intern at VAST · ‡ Project lead · ✉ Corresponding author

1VAST · Project Eden

TL;DR:

  • For interactive world models, we decouple state evolution (maintained by coding agents or engines) and appearance (rendered by EdenLive).
  • EdenLive renders reference videos to enhanced videos in real time at 24 fps or higher, even on a consumer GPU (RTX 5090).
edenlive_demo_A_audio_720p.mp4

Overview

EdenLive is a real-time generative renderer that treats the reference video as the interface between an interactive program and neural visual synthesis: the upstream program executes the rules and maintains the world state, whereas EdenLive renders the resulting reference video, guided by a target first frame and a text prompt, into detailed frames.

The project page demonstrates over 24 FPS, minute-scale generation, and 480P/720P output. The 5B model supports single-GPU deployment at 720P.

We have open-sourced:

  • 5B and 14B model weights, for both bidirectional and few-step (chunk-AR) inference.
  • Real-time streaming inference code.
  • game-prototype-turbo skill that turns a text prompt into a coarse playable game.
  • A frontend to try the full prompt-to-game pipeline.

Installation

One Python environment runs both the offline inference in edenlive/ and the real-time service in realtime/.

Verified version
OS / GPU Linux x86-64, NVIDIA GPUs with 80 GB (CUDA 13 driver)
Python 3.10
PyTorch 2.14.0.dev20260717+cu130 nightly (realtime/requirements.txt pins 2.13.0, cu130), torchvision 0.28.0
diffusers / transformers / accelerate 0.39.0 / 5.12.1 / 1.0.1
decord / pandas / pyarrow 0.6.0 / 2.3.3 / 25.0.1
imageio / imageio-ffmpeg 2.37.4 / 0.6.0
Node.js 22 (only to fetch three.js for the game renders)
git clone https://github.com/VAST-AI-Research/EdenLive.git EdenLive
cd EdenLive

conda create -n edenlive python=3.10 -y
conda activate edenlive

# 1. PyTorch for a CUDA 13 driver (use .../whl/cu128 for CUDA 12.8).
pip install torch==2.13.0 torchvision==0.28.0 --index-url https://download.pytorch.org/whl/cu130

# 2. The real-time service and its pinned dependencies.
cd realtime
pip install --no-deps -e ./flashdreams -e ./apps/cam2v -e ./integrations_v2/eden
pip install -r requirements.txt
python -m playwright install chromium
npm install --prefix games
cd ..

# 3. Offline inference and video I/O dependencies.
pip install av==17.1.0 decord==0.6.0 pandas==2.3.3 pyarrow==25.0.1 imageio==2.37.4 imageio-ffmpeg==0.6.0
pip install --no-deps -e .

The default 5B bidirectional profile uses FA4 temporal text attention and requires SM90, BF16, flash-attn-4==4.0.0b31, and nvidia-cutlass-dsl==4.7.1. Use --no-deps when installing kernels into an existing environment to preserve PyTorch. See docs/zh/wan22-fa4.md.

Model weights

hf download VAST-AI/EdenLive --local-dir ./models/EdenLive

Everything loads from one directory, models/EdenLive under the repository root by default (about 210 GB in total).

models/EdenLive/
  dit-14b/            diffusion_pytorch_model.safetensors, config.json  14B few-step (chunk-AR) DiT
  dit-14b-bidir/      diffusion_pytorch_model.safetensors, config.json  14B bidirectional DiT
  dit-5b/             diffusion_pytorch_model.safetensors, config.json  5B few-step (chunk-AR) DiT
  dit-5b-bidir/       diffusion_pytorch_model.safetensors, config.json  5B bidirectional DiT
  vae-14b/            Wan2.1_VAE.pth, config.json
  vae-5b/             Wan2.2_VAE.pth, config.json
  decoder-14b/        lighttaew2_1.pth                    TAEHV decoder (real-time only)
  decoder-5b/         lighttaew2_2.pth                    TAEHV decoder (real-time only)
  scheduler-14b/      scheduler_config.json               offline only
  scheduler-5b/       scheduler_config.json               offline only
  umt5/               text_encoder/, tokenizer/           UMT5 text encoder
  clip/               image_encoder/, image_processor/    CLIP, 14B I2V only
  vision-encoder/     backbone/, projection.safetensors   proxy-DINO encoder
  flux-c2f/           Diffusers FLUX tree + c2f_lora.safetensors   workbench first frame (real-time only)

The default weight directory is models/EdenLive, relative to the working directory. To specify another directory:

python -m edenlive.scripts.infer --config ... model.pretrained_dir=/data/EdenLive

The real-time service reads the same tree through MODEL_ROOT in realtime/deploy.conf.

Quick start

Two proxy recordings ship with the repo under examples/samples/, with a manifest that points at them:

examples/samples/
  manifest.csv        id, prompt, proxy_video, first_frame
  cryo-crossing/       cover.png, first-frame.png, prompts.json, prompts.txt, recording.mp4
  pulse-skirmish/      same five files

recording.mp4 is the greybox proxy (1280x704), and first-frame.png is its first frame. cover.png is a photoreal render of that frame; the manifest's first_frame points to this file. prompts.json contains staticPrompt and timestamped dynamicPrompts; prompts.txt is the corresponding text version.

Mode Wan2.1-I2V-14B @ 480p Wan2.2-TI2V-5B @ 720p
Bidirectional wan21_14b_480p_bidir.yaml wan22_5b_720p_bidir.yaml
Few-step (chunk-AR) wan21_14b_480p_few_step.yaml wan22_5b_720p_few_step.yaml

Bidirectional inference: all frames are denoised jointly.

torchrun --nproc_per_node=2 -m edenlive.scripts.infer \
  --config edenlive/configs/wan21_14b_480p_bidir.yaml \
  runtime.sequence_parallel.size=2
python -m edenlive.scripts.infer \
  --config edenlive/configs/wan22_5b_720p_bidir.yaml

Few-step inference: chunk-autoregressive sampling, 4 steps per chunk.

torchrun --nproc_per_node=2 -m edenlive.scripts.infer \
  --config edenlive/configs/wan21_14b_480p_few_step.yaml \
  runtime.sequence_parallel.size=2
python -m edenlive.scripts.infer \
  --config edenlive/configs/wan22_5b_720p_few_step.yaml

Real-time service: uses game frames as input and streams video over WebRTC. Configure the weight directory, service addresses, ports, and GPU count in realtime/deploy.conf. 5B uses one GPU by default. Set NPROC for multi-GPU inference.

Set TURN_HOST (the relay address reachable by the browser), TURN_IFACE (the relay interface), and TURN_SECRET (your own password) in realtime/deploy.conf. To run existing games, execute on the GPU host:

cd realtime
apt-get install coturn  # First-time installation
bash turn_server.sh    # Start TURN first
bash start.sh 14b       # Model service; or use 5b

The workbench — a game library, a chat that builds new games from a text description, and a play window — needs all four services. Its first-frame renderer (the FLUX worker) runs FLUX.2 [klein] 9B under the FLUX Non-Commercial License, so the workbench is for non-commercial use only, and that license requires content filtering on the images it generates (see License). Playing registered games with start.sh does not load FLUX.

The bridge host requires the claude CLI, claude auth login, and first-run trust confirmation. Game generation uses --dangerously-skip-permissions. For separate hosts, copy the bridge's .workbench/token to the GPU host's realtime/ directory and set BRIDGE_HOST; leave it empty for a single-host deployment.

cd realtime

# 1. TURN relay, GPU host; skip if already running
bash turn_server.sh

# 2. Workbench bridge, Claude CLI host
bash workbench_bridge.sh

# 3. FLUX first-frame service, GPU host
bash workbench_flux.sh

# 4. Model service, GPU host
bash launch.sh

# Stop services on this host
bash stop.sh

Open http://<host>:8089 (APP_PORT in deploy.conf).

Model Application slug
5B game2v-eden-world-v2-5b-taehv
14B game2v-eden-world-v2-14b-taehv

The real-time service uses the TAEHV decoder. See realtime/README.md for the service topology and developer documentation.

Your own data

The default profiles read a recording manifest (CSV/JSONL/JSON/parquet), one recording per request. Each directory contains recording.mp4, cover.png, and prompts.json; text comes from staticPrompt and dynamicPrompts:

id,proxy_video,first_frame
shot_001,shot_001/recording.mp4,shot_001/cover.png
python -m edenlive.scripts.infer --config CONFIG.yaml \
  data.dataset.params.path=/data/my_manifest.csv \
  data.dataset.params.root=/data

Real-Time Inference with LightX2V on RTX 5090

LightX2V provides accelerated inference for EdenLive's 14B and 5B models in both bidirectional and four-step autoregressive modes. Optimizations include low-bit quantization, efficient kernels and operator fusion, KV cache optimizations, torch.compile, CUDA Graphs, and streaming LightTAE decoding.

Real-time inference on a single RTX 5090: EdenLive 5B achieves approximately 24.7 FPS inference throughput at 1280×704, meeting the throughput requirement for real-time 24 FPS playback.

See the EdenLive deployment guide for environment setup, model conversion, quantization, and launch commands.

Citation

@misc{edenlive2026,
  title  = {EdenLive: Real-Time Generative Rendering from Any Visual Reference},
  author = {Zehuan Huang and Tianxing Xu and Chunli Peng and Cheng Zhang and Zeyi Zheng and Yifei Song and Zekai Gu and Zhipeng Yu and Peng Wang and Yanpei Cao},
  year   = {2026},
  url    = {https://vast-eden.ai/?p=edenlive}
}

Acknowledgements

Built on Wan2.1 / Wan2.2, 🤗 Diffusers, DINOv3, FLUX.2 [klein] by Black Forest Labs, and the LightX2V LightTAE decoders. The game renders use Three.js, and the workbench's game-generation skill builds on GameBlocks.

The real-time streaming service under realtime/ builds on NVIDIA FlashDreams.

License

First-party code is licensed under Apache 2.0 — see LICENSE and NOTICE. realtime/ is also Apache 2.0 and keeps its own LICENSE, NOTICE and THIRD-PARTY-NOTICES. The vendored html-to-image bundle and GameBlocks-derived skill modules retain their MIT licenses and original copyright notices; per-file scope is recorded in REUSE.toml.

The model weights are distributed separately and are not all Apache 2.0:

Component License
dit-*, vae-*, umt5/, scheduler-*, decoder-* Apache 2.0
clip/ (LAION CLIP ViT-H/14 / OpenCLIP) MIT
vision-encoder/ (DINOv3 and derivatives) DINOv3 License
flux-c2f/ (FLUX.2 [klein] 9B plus our LoRA; workbench first frame only) FLUX Non-Commercial License — non-commercial, non-production use only

Each component ships its own license and notice files alongside the weights; see the model repository's README for details.

About

Real-time generative rendering for interactive worlds, from any reference.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages