One engine · six packages

The avatar player that
speaks every framework

ania-avatar-core is a framework-agnostic TypeScript engine that mounts an animated avatar on a <canvas> and drives lip-sync, actions, commands, plugins and TTS/STT/wake-word. The React, Vue, Svelte, Angular and Web-Component wrappers are thin bindings over that one engine — same props, same commands, everywhere.

⚙ ania-avatar-core →
React Vue 3 Svelte 5 Angular Web Component Vanilla / CDN

Six packages, one API

Every package is public on GitHub, ships its built dist/, and is served straight from jsDelivr — no build step required for the CDN drop-ins.

⚙

ania-avatar-core

npm: ania-avatar-core

Framework-agnostic engine. UMD global AniaAvatarCore + ESM. Powers every wrapper below.

canvaslip-synctts/stt192 locales
install
# engine only
npm i ania-avatar-core
cdn · umd global
<script src="https://cdn.jsdelivr.net/gh/rob-d3v/
  ania-avatar-core/dist/index.global.js"></script>
<script>
  const p = AniaAvatarCore.createAniaPlayer(canvas, { autoplay:true });
  p.load({ url: 'avatar.ania' });
</script>
R

ania-avatar-react

npm: ania-avatar-react · repo: web-player

React components & hooks: <AvatarChatbot>, <AniaAvatar>, useChatbot, 6 TTS providers.

react ≥17chatbothooks
install
npm i ania-avatar-react
jsx
import { AvatarChatbot } from 'ania-avatar-react';

<AvatarChatbot
  avatarUrl="avatar.ania"
  enableTTS enableSTT
  assistantName="Luna" />
V

ania-avatar-vue

npm: ania-avatar-vue

Vue 3 wrapper. UMD global AniaAvatarVue, the useAniaAvatar() composable + components.

vue ≥3.3composableself-contained
install
npm i ania-avatar-vue
cdn · umd global (vue first)
<script src="https://cdn.jsdelivr.net/npm/vue@3/dist/vue.global.prod.js"></script>
<script src="https://cdn.jsdelivr.net/gh/rob-d3v/
  ania-avatar-vue/dist/index.umd.cjs"></script>
S

ania-avatar-svelte

npm: ania-avatar-svelte

Svelte 5 (runes) wrapper. Also ships a self-contained <ania-avatar> custom-element CDN bundle.

svelte ≥5runescustom element
install
npm i ania-avatar-svelte
cdn · custom element drop-in
<script src="https://cdn.jsdelivr.net/gh/rob-d3v/
  ania-avatar-svelte/dist/ania-avatar-element.js"></script>
<ania-avatar avatar-url="avatar.ania"></ania-avatar>
A

ania-avatar-angular

npm: ania-avatar-angular

Standalone, signal-based Angular component (<ania-avatar>) + injectable AniaAvatarService.

angular ≥18standalonesignals
install
npm i ania-avatar-angular ania-avatar-core --legacy-peer-deps
template
import { AniaAvatarComponent } from 'ania-avatar-angular';

<ania-avatar [avatarUrl]="url" [lipSyncEnabled]="true"></ania-avatar>
</>

ania-avatar-wc

npm: ania-avatar-wc

The killer drop-in: a Lit-built <ania-avatar> custom element. One script tag, works anywhere HTML does.

litany frameworkzero-setup
install
npm i ania-avatar-wc --legacy-peer-deps
cdn · the one-tag drop-in
<script src="https://cdn.jsdelivr.net/gh/rob-d3v/
  ania-avatar-wc/dist/ania-avatar.js"></script>
<ania-avatar avatar-url="avatar.ania" lip-sync-enabled></ania-avatar>

Shared command vocabulary

Because they share one engine, every wrapper understands the same desktop-style command line and the same prop names.

VerbExampleWhat it does
actionaction 1Trigger an action clip by id or index
speedspeed 2 4Set idle / talk animation speeds
ttstts "hello"Speak text through the active TTS engine
show / hide / toggletogglePlay / pause / flip visibility
helphelpReturn the full verb list

See all commands & props →