Hand-drawn avatars, no API required

Add deterministic kawaii avatars to your app.

Humation renders local SVG assets from a seed or explicit part selections. Use the React component for product UI, or the core renderer when you need raw SVG output.

Kawaii avatars in product screens

01

Install

For React apps, install the component and the Humation 1 asset package.

Terminal
npm install @humation/react @humation/assets-humation-1

@humation/react

React SVG component

Use this for apps that render avatars in React.

@humation/assets-humation-1

Humation 1 manifest and SVG assets

Pair this with every renderer. It contains the embedded artwork.

@humation/core

Framework-independent renderer

Use this for Node, workers, export jobs, or custom UI.

02

Render an avatar in React

The shortest path is the React component. One seed always renders the same avatar for the same installed asset package version.

UserAvatar.tsx
1import { Avatar } from '@humation/react';2import { humation1 } from '@humation/assets-humation-1';3 4export function UserAvatar({ user }: { user: { id: string; name: string } }) {5  return (6    <Avatar7      assets={humation1}8      seed={user.id}9      size={96}10      title={user.name}11    />12  );13}

Use explicit selections when users customize their avatar. Names, aliases, and canonical part IDs are accepted.

TSX
1<Avatar2  assets={humation1}3  selections={{ head: 'braids', body: 'hoodie', item: 'calico-cat' }}4  colors={{ hair: '#4A3728', skin: '#F4C9A8' }}5  background="transparent"6  size={128}7/>

03

Render SVG anywhere

Use core when you need SVG strings in Node, Cloudflare Workers, export jobs, tests, or a custom framework.

TypeScript
1import { createAvatar } from '@humation/core';2import { humation1 } from '@humation/assets-humation-1';3 4const svg = createAvatar(humation1, {5  seed: 'felix',6  colors: { hair: '#123456', skin: '#FFEECC' },7}).toString();

The renderer does not fetch remote files. The asset package includes embedded SVG strings, so the output can be generated offline.

04

Build a picker UI

The manifest exposes UI groups, part names, color slots, and preview helpers. This is the same path a shadcn-style copied builder should use.

TypeScript
1import { createPartPreview, getPartsForUiGroup } from '@humation/core';2import { humation1 } from '@humation/assets-humation-1';3 4const itemParts = getPartsForUiGroup(humation1, 'item');5 6const previews = itemParts.map((part) => ({7  id: part.id,8  name: part.name,9  previewSrc: createPartPreview(humation1, part).toDataUri(),10}));

Common color slots are hair, clothes, bottom, skin, stroke, and background.

05

Save avatar state

Save explicit selections and colors when the user edits an avatar. Save a seed when the avatar can be regenerated from user identity.

TypeScript
1type HumationAvatarState = {2  seed?: string;3  selections?: {4    head?: string;5    body?: string;6    bottom?: string;7    item?: string;8    glasses?: string;9  };10  colors?: {11    hair?: string;12    clothes?: string;13    bottom?: string;14    skin?: string;15    stroke?: string;16    background?: string;17  };18};

For long-lived saved data, canonical IDs such as hm1-p-000020 are the most stable. Human-readable names such as braids are convenient for code and prompts.

06

LLM-friendly implementation notes

Humation is intentionally small enough for coding agents to use from npm docs alone. Point agents to this page or to /llms.txt.

Text
1Use @humation/react for React UI.2Use @humation/assets-humation-1 for the asset set.3Do not call a Humation API for rendering.4Use seed for deterministic generated avatars.5Use selections and colors for user-customized avatars.6Use @humation/core only when raw SVG output or picker previews are needed.