Add a talking AI avatar to your app. It listens, responds, and lip-syncs to speech in real time — on web and mobile.
AvatarFactory is an SDK for embedding a real-time talking avatar in your product. Drop in a component, point it at an avatar, and your users can hold a live voice conversation with an AI character — or have the avatar speak any text or audio you send it.
You bring the UI. The SDK handles the hard parts: the live connection, microphone capture, speech playback, and frame-accurate lip-sync.
The SDK is a private package. @avatarfactory/react and
@avatarfactory/react-native are not publicly installable — an npm install
without credentials will fail. Your npm token comes with your plan: add it to a
.npmrc and install as normal. Nothing else changes — same commands, same
imports, same API, and every example in these docs works as written. See
Get access for the two-minute setup.
The SDK works the same way on web and mobile — the same components, hooks, and config. On a website or a Framer site, a no-code embed needs none of it. And in an AI assistant like Claude, the connector turns text into avatar videos.
@avatarfactory/reactFor websites and web apps. Install one package, add a stylesheet, and you're ready.
@avatarfactory/react-nativeFor mobile apps built with Expo. Built-in echo cancellation for clean voice calls.
Script tagPaste one script tag into WordPress, Webflow, Wix, Squarespace or plain HTML. No package, no keys, no backend.
Framer pluginConnect your account, drag an avatar onto the canvas, and configure it from Framer's Properties panel. No package, no keys, no backend.
You'll work with three things. That's the whole API surface.
<AvatarProvider />Wrap your app once. It opens the connection and holds the session so any component can use it.
<Avatar />The component that displays your character and animates its mouth as it speaks. Place it anywhere inside the provider.
useAvatar()A hook to control the session from your own UI — start, stop, send text or audio, and read live status.
Set one mode in your config to match what you're building.
callDefaultttsaudioWant to see it first? Try the live demo on our home page →