A typed, SSR-first avatar primitive for the web — seven frameworks, eleven themes, zero dependencies. Compose by hand or let the predictor draft from a photo.
We built Avatune the way we wish identity systems were built — fast, typed, themable, and predictable enough to ship to production on day one.
Every avatar renders to deterministic SVG on the server. No hydration jank, no layout shift, no flicker on cold cache.
Same seed in, same avatar out — across renders, processes, and CDN edges. Cache it forever or generate at request time.
Each theme is its own package. Ship only the styles you import. Average bundle: 4.1kb gzipped per theme.
Theme tokens, part names, and configuration all flow through TypeScript. Autocomplete every hair style and skin tone.
Not a wrapper. @avatune/react, @avatune/svelte, and friends each compile to idiomatic primitives.
Every part is a slot. Swap eyebrows from one theme into another, or drop in your own SVG. The system stays consistent.
Each adapter compiles to idiomatic primitives for its host framework. Same theme tokens, same seed determinism, same SSR contract — no glue code.
import { Avatar } from '@avatune/react'
import theme from '@avatune/kyute-theme/react'
export default function Profile({ user }) {
return (
<Avatar
seed="user-42"
theme={theme}
size={96}
/>
)
}A small on-device model reads skin tone, hair length, hair color, and facial hair, then seeds a themed avatar. Edit the inferred parts inline, or accept and ship.