Skip to content

Backend Branches

Status: Mixed. Per-section labels below: Live2D backend (running), VRM backend (admitted, in build-out), Generated motion provider (running).

Avatar's rendering backend is a closed discriminated union: live2d | vrm. Live2D ships today via Cubism SDK for Web; VRM is admitted as the next backend branch. Generated motion is admitted as a distinct provider concern under the same backend branch model (see Generated Motion Provider).

Closed Union, Not Open Plugin System

PropertyValue
Backendslive2d, vrm (future)
ClosedNew backends require admitted contract
Discriminated unionType narrowing surfaces backend-specific extensions
Live2D todayShipped via Cubism SDK for Web
VRM futureFuture backend branch; not shipped

A reader who hopes to "drop in another backend" cannot. The backend list is admitted; new backends are admitted at the kernel level, not by author convention.

Live2D Backend (running)

PropertyValue
TechCubism SDK for Web
StatusShipped today
Asset compatibilityPer live2d-asset-compatibility-contract.md
Render contractPer live2d-render-contract.md
Backend extensionsLive2D-specific API (e.g., live2dExtension)

Live2D is the production backend. Embodiment packages today are typically Live2D packages.

VRM Backend (admitted, in build-out)

PropertyValue
TechVRM 3D asset standard (three-vrm + R3F)
StatusAdmitted backend branch; not yet shipped
Backend extensionsVRM-specific (when shipped)

VRM is admitted as a future backend so that NAS handlers can write portable code today without coupling to Live2D specifics that VRM cannot honor. The backend branch model exists exactly so future backends do not require rewriting handlers.

Generated Motion Provider (running)

generated-motion-provider-contract.md describes how AI-generated motion can drive an embodiment. It is admitted as a provider under the same backend-branch model and is the runtime proof path that replaces hand-authored .vrma files.

PropertyValue
SourceAI motion generation provider
OutputBackend-specific motion calls
Provider lifecycleAdmitted under the contract

This is what makes "the agent's motion is alive" go beyond hand-authored animation. Generated motion is a provider capability admitted into Avatar.

Live2D Asset Compatibility

ConcernWhat the contract handles
Asset version compatibilityWhich Cubism versions are admitted
Required parametersParameters the embodiment must declare
Optional parametersParameters that enable richer rendering
Failure modeWhat happens when a required parameter is missing

A Live2D model that lacks required parameters fails closed at acceptance. Optional parameters enable richer rendering when present.

Reader Scenario: A NAS Handler Stays Portable

A NAS handler animates an idle pose.

  1. Use backend-agnostic API. Handler calls embodiment projection's idle pose method.
  2. Live2D today. Projection routes through Live2D extension; idle pose is rendered via Live2D parameters.
  3. VRM tomorrow. When VRM ships, the same handler routes through VRM extension; idle pose is rendered via VRM capabilities.
  4. Same handler ships everywhere.

Backend-agnostic handlers are portable across backends.

Reader Scenario: Live2D Asset Compatibility Mismatch

A user installs a Live2D embodiment package built for an older Cubism version.

  1. Asset compatibility check. Per live2d-asset-compatibility-contract.md.
  2. Decision. Either:
    • Admit as compatible (within admitted version range), or
    • Refuse with typed reason (out of admitted range).
  3. Typed result. User sees the decision; the platform does not silently render an unsupported package.

Compatibility is contract, not heuristic.

What Backend Branches Do Not Do

ConcernWhy not
Allow free-form backendsClosed union by design
Allow runtime-determined backend selection bypassing contractDiscriminated union enforces typed selection
Allow cross-backend asset reuse without admissionEach backend's compatibility is admitted

Source Basis

Nimi AI open world platform documentation.