npm install @mymosdk/avatar

Animated 3D avatars
for any web app.

23 KB gzip · 60 FPS WebGL · < 5 min to integrate

Drop a lifelike 3D avatar into your product with one API call. Gesture control, AI lip sync, and draggable positioning out of the box.

Get startedSee demo →
23 KBgzip
60 FPSWebGL
< 5 minintegrate
avatar.vrm
Avatar preview
idlebust framingdark theme

Live demo below ↓

Control the avatar live

The SDK is mounted bottom-right — draggable. Every button calls the real API.

live output
initializing...
// Click a button to control the avatar
framing: busttheme: darkpos: bottom-right220px

Gestures

Expressions

States

Look

Speech

Framing

from0.60
lookBias0.70

Theme

center#2a2a2a
edge#1a1a1a
shadow0.50

Position

Size

220px

Six systems, one API

Everything works together automatically. You control one avatar instance.

Renderer

Three.js WebGL scene, ACES tone mapping, ambient + key + fill lighting.

Animation Engine

Procedural bone rotations for gestures. No animation clips needed in your model.

Audio Engine

Web Audio API wrapper. Playback, amplitude analysis, gain control.

Lip Sync

Amplitude-to-viseme mapping drives mouth morphs in real time during speech.

Asset Loader

GLB and VRM loading from any CORS-enabled URL. In-memory model cache.

Plugin System

avatar.use(plugin) registers integrations. Receive the full AvatarApi.

Everything you need to ship.

Framework-agnostic

Vanilla, React, Vue, Next.js, Nuxt, Svelte, Electron. One import, any stack.

Vanilla JSReactVueNext.jsNuxtSvelteElectron

AI-ready lip sync

Pass any audio buffer to avatar.talk(). Amplitude drives mouth morphs automatically. Works with ElevenLabs, OpenAI TTS, Azure, Google, any provider.

Draggable & themeable

Light, dark, transparent themes. Runtime repositioning, resizing, custom backgrounds. Everything configurable without recreating the instance.

Up and running in minutes

npm install @mymosdk/avatar three

Quickstart

import { Avatar } from "@mymosdk/avatar"

const avatar = new Avatar({
  model: "https://your-cdn.example.com/avatar.vrm",
  position: "bottom-right",
  size: 200,
  theme: "dark",
  framing: "bust",
})

// That's it — the avatar mounts to document.body
avatar.on("loaded", () => avatar.wave())
@mymosdk/avatarMIT LicenseThree.js peer dep

Pick your framework

import { Avatar } from "@mymosdk/avatar"
const avatar = new Avatar({ model: "https://...", framing: "bust", theme: "dark" })
document.querySelector("#btn")?.addEventListener("click", () => avatar.wave())

Get started

Start building in 5 minutes

One SDK, any framework, any AI provider. Framework-agnostic and AI-agnostic by design.

View on npm