# bbot > A circle, and two circles inside it that follow the pointer. An animated face > for web UIs — 30 expressions, 9 one-shot reactions, spring-driven. The head is > a sphere, so the eyes travel a curved path and foreshorten toward the rim. > 3.7 kB gzipped, no dependencies, MIT. From npm: npm i @bwnd/bbot import { createFace } from '@bwnd/bbot' // no React needed import { Face } from '@bwnd/bbot/react' // optional peer dep Or with no install and no build step at all: import { createFace } from 'https://bbot.bwnd.app/face.js' createFace(document.querySelector('#bot'), { expression: 'curious' }) Either way styles inject themselves — there is no stylesheet to link. The host element needs an explicit width and height, or nothing renders. It lip-syncs: `face.talk(level)` takes 0-1 speech energy once a frame, opens the mouth over the current mood and bobs the head. Needs `mouth: true`. You rarely measure that energy yourself — `@bwnd/bbot/talk` exports `listen(source, face)`, which drives it from an `