v0.4.0¶
Release Date: 2026-07-27
Introduces the local avatar render provider infrastructure — audio-driven
talking-head video generation on Apple Silicon, behind the same render.Provider
interface as cloud providers. The first engine is LivePortrait + JoyVASA
(MIT/Apache, fully-free).
Highlights¶
- Local render provider:
providers/liveportrait-joyvasa— on-device talking-head video from narration audio, no cloud API required - Avatar bundle format:
avatar/bundle.go— standardized on-disk structure for local avatar assets (metadata + idle clips + reference frames) - LocalRender gRPC service:
proto/localrender/v1/localrender.proto— shared contract for all local render engines
Added¶
avatar.Bundle,avatar.Metadata,avatar.Resolutiontypes for local avatar bundles;avatar.Load,avatar.LoadFrom,avatar.List,avatar.ListFromfunctionsproto/localrender/v1/localrender.protowithLocalRendergRPC service:Generate,Status,Download,ListAvatars,Health,LoadModel,UnloadModel,RuntimeInfoproviders/liveportrait-joyvasa/provider.goimplementingrender.Provider,render.AudioUploader, andio.Closerproviders/liveportrait-joyvasa/server/Python gRPC server with inference pipeline (HuBERT, DiT motion generator, LivePortrait renderer, mediapipe face analyzer, ffmpeg encoding)registry.RenderProviderFactoryviaNewFromConfig()for the local provider
Architecture¶
The local provider mirrors the cloud provider pattern:
Go Client (providers/liveportrait-joyvasa/*.go)
│ render.Provider: Generate/Status/Download
│
│ gRPC over Unix Socket
▼
Python Server (server/joyvasa_server.py)
│ LocalRender gRPC service
│
▼
Inference Pipeline
audio → HuBERT → DiT motion → LivePortrait render → ffmpeg encode
Performance¶
On Apple Silicon (M-series):
| Metric | Value |
|---|---|
| Resolution | 512×512 |
| Speed | ~5 min for 13.7s output |
| Memory | ~4GB with model loaded |
Conv3D and grid_sampler_3d fall back to CPU on MPS (torch 2.3). torch 2.5+ may add native MPS support for significant speedup.
Commercial Licensing¶
Both LivePortrait and JoyVASA are MIT-licensed. The provider uses mediapipe (Apache-2.0) for face detection, replacing the non-commercial InsightFace models used in the upstream repos.