You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Jonathan Hinkel 3421198537 Convert to an npm-workspaces monorepo (packages/core, packages/humanoid, apps/template) 1 month ago
.claude Convert to an npm-workspaces monorepo (packages/core, packages/humanoid, apps/template) 1 month ago
.gitea/workflows Convert to an npm-workspaces monorepo (packages/core, packages/humanoid, apps/template) 1 month ago
.vscode initial commit 2 months ago
apps/template Convert to an npm-workspaces monorepo (packages/core, packages/humanoid, apps/template) 1 month ago
docs Convert to an npm-workspaces monorepo (packages/core, packages/humanoid, apps/template) 1 month ago
packages Convert to an npm-workspaces monorepo (packages/core, packages/humanoid, apps/template) 1 month ago
.gitattributes initial commit 2 months ago
.gitignore Convert to an npm-workspaces monorepo (packages/core, packages/humanoid, apps/template) 1 month ago
.npmrc Convert to an npm-workspaces monorepo (packages/core, packages/humanoid, apps/template) 1 month ago
.prettierignore Convert to an npm-workspaces monorepo (packages/core, packages/humanoid, apps/template) 1 month ago
AGENTS.md Convert to an npm-workspaces monorepo (packages/core, packages/humanoid, apps/template) 1 month ago
README.md Convert to an npm-workspaces monorepo (packages/core, packages/humanoid, apps/template) 1 month ago
eslint.config.js Convert to an npm-workspaces monorepo (packages/core, packages/humanoid, apps/template) 1 month ago
package-lock.json Convert to an npm-workspaces monorepo (packages/core, packages/humanoid, apps/template) 1 month ago
package.json Convert to an npm-workspaces monorepo (packages/core, packages/humanoid, apps/template) 1 month ago
prettier.config.js initial commit 2 months ago
tsconfig.base.json Convert to an npm-workspaces monorepo (packages/core, packages/humanoid, apps/template) 1 month ago

README.md

webavatar

An npm-workspaces monorepo providing reusable core infrastructure for webavatar client projects — session management, auth tokens, and the realtime model connection — as independently-versioned packages, plus a SvelteKit template to branch client projects from.

See docs/ARCHITECTURE.md for the full architecture map, AGENTS.md for project conventions, and docs/ for a deep-dive per subsystem.

Workspaces

Workspace What it is
packages/core @webavatar/webavatar-core — session management, auth tokens, provider adapters, the WS relay. Every client project needs this.
packages/humanoid @webavatar/webavatar-humanoid — avatar-state derivation and animation-channel composition for 3D humanoid avatars. Optional — only projects building a humanoid avatar need it.
apps/template The SvelteKit application template client projects branch from. See its own README for the client-project bootstrap procedure.

Both packages are privately distributed (not published to the public npm registry) and ESM-only.

Getting started

npm install
cp apps/template/.env.example apps/template/.env
# fill in OPENAI_API_KEY and REALTIME_TOKEN_SECRET in apps/template/.env
npm run dev

The root npm run dev builds both packages once, then watches them alongside the template app's own dev server — this is what makes package-source hot reload work (see docs/REALTIME_SESSION.md's "Dev-mode reload behavior"). Open /demo/realtime or /demo/humanoid (works offline via REALTIME_PROVIDER=mock, no API key needed).

Scripts

Run from the repo root, these orchestrate all three workspaces:

  • npm run dev / npm run build / npm run check / npm test — build the packages first, then run the equivalent command across every workspace.
  • npm run lint / npm run format — prettier + eslint across the whole repo.

Run a single workspace's own scripts with -w, e.g. npm run dev -w apps/template, or npm run test -w packages/core.

Documentation

Subsystem Doc
Architecture overview and module layering docs/ARCHITECTURE.md
Realtime session management docs/REALTIME_SESSION.md
Tool calling (server- and client-executed) docs/TOOLS.md
Analytics recording docs/ANALYTICS.md
Configuration (env vars, persona) docs/CONFIGURATION.md
@webavatar/webavatar-humanoid (avatar-state, animation composition) docs/HUMANOID.md
The monorepo migration itself — rationale, decisions, verification docs/MONOREPO_MIGRATION_BRIEF.md