Developers · Starter kit on GitHub

Build with Aivah. Start from the kit.

An open Next.js starter with live avatar chat, agent-driven presentations and a voice assistant that can use your page. Clone it, add your API key, and you are running in minutes.

Made for your next step.
Developers

The Aivah Starter Kit chat screen

Aivah Starter Kit · Chat, characters, voices, agents and productivity
01Clone and add your key
02Run the app locally
03Ship it anywhere Node runs

Starter kit · Public on GitHub

Everything a live Aivah experience needs, already wired.

A production-ready Next.js 16 app on React 19, TypeScript, Tailwind v4 and LiveKit. Fork it as the base of your product, or lift the pieces you need.

Live avatar chat

Talk to any Aivah agent by text or voice. The video character streams over LiveKit and is chroma-keyed onto the background you choose.

The Starter Kit chat screen with agent, character, model and voice pickers

Interactive presentations

Agents teach from PDF slides or chaptered video and drive page turns, seeks and playback themselves. Lessons panel, chapters, quiz overlay and live transcript included.

Voice assistant widget

A floating button that reads the current page, clicks and navigates for the user, and speaks through OpenAI, Grok or Gemini live-audio models, all through your Aivah key.

Management screens

Create and manage characters, backgrounds, voices (including cloning from a microphone recording) and agents without leaving the app.

The Starter Kit agents screen listing agents with type and status

Productivity generators

Turn an agent's knowledge into slides, a podcast or a mind map, then view, play or delete the results.

Secure by default

Your Aivah API key never leaves the server. The browser only talks to the app's own allow-listed proxy routes.

Quick start

Running in minutes.

You need Node.js 22 or newer, pnpm 11 or newer, and an Aivah API key. The key stays on your server; the app shows a safe “deployment not configured” message if it is missing.

  1. 01

    Get your API key

    Sign in to app.aivah.ai, open the account menu and choose API keys. Create a key: it starts with sk_aivah_. Treat it like a password.

    Where API keys live in the account menu
  2. 02

    Clone and configure

    Clone the repository, copy the example environment file and paste your key into .env.local.

    Terminal
    git clone https://github.com/aivahai/Aivahstarterkit.git
    cd Aivahstarterkit
    cp .env.example .env.local   # then set AIVAH_API_KEY inside
    pnpm install
    pnpm dev
    .env.local
    # Server-only. Never rename these to NEXT_PUBLIC_*.
    AIVAH_API_BASE_URL=https://api.aivah.ai/v1/platform
    AIVAH_API_KEY=sk_aivah_replace_me
  3. 03

    Open the app

    Visit http://localhost:3000. You land on Chat: pick an agent (Standard or Presentation), a model and a compatible voice, optionally a character and background, then Start conversation. The sidebar’s Platform group manages characters, voices, agents, the assistant and productivity generators.

    • Chat
    • Characters
    • Voices
    • Agents
    • Assistant
    • Productivity
  4. 04

    Make it yours

    Everything you would normally customise has one obvious home.

    WhatWhere
    Branding and navigationsrc/components/app-shell.tsx
    Theme and colourssrc/app/globals.css
    Assistant personapublic/aivah-assistant/instructions.md and knowledge.md
    Assistant provider and voicepublic/aivah-assistant/assistant.json
    Allowed Aivah endpointsROUTES in src/app/api/aivah/[...path]/route.ts

Voice assistant

Drop the voice assistant into any website.

The floating button in the kit is a single script. It reads the page, can click and navigate for the visitor, and speaks through a live-audio model. Provider keys are held by Aivah; you only need your Aivah key.

  1. Add the scriptPoint data-session at a same-origin route and data-config at a public JSON with provider, model and voice.
  2. Add a session routeYour server calls POST /assistant/sessions on the Aivah platform with your key and returns the session to the browser. A minimal Next.js route ships in the kit.
  3. Give it contextTwo Markdown files, instructions.md and knowledge.md, describe who the assistant is and what it may quote. Edit them from the Assistant page or in code.
Read the full integration guide
index.html
<script
  src="https://storage.googleapis.com/aivah-share/aivah-assistant.js"
  data-session="/api/realtime/ai-assistant"
  data-config="/aivah-assistant/assistant.json"
  async
></script>
public/aivah-assistant/assistant.json
{
  "provider": "openai-live",
  "model": "gpt-live-1",
  "voice": "quartz"
}
openai-livegpt-live-1quartz, ripple, vesper, willow
openai-realtimegpt-realtime-2, gpt-realtimemarin, cedar, alloy
grok-realtimegrok-voice-latesteve, ara, leo
gemini-livegemini-2.5-flash-native-audioPuck, Charon, Kore

How it’s built

The browser never calls Aivah directly.

Every request goes through /api/aivah/<path> on your server, which checks the method and path against an explicit allow-list, attaches your key, and streams the response back unchanged. Anything else is 404 ROUTE_NOT_ALLOWED.

BrowserStarter kit UI and aivah-assistant.jsNo key here, ever
Your serverAllow-listed proxy, session mint, lesson mediaHolds AIVAH_API_KEY
Aivah platformAgents, characters, voices, sessions, live-audio modelsLiveKit audio + video to the browser

Agents

  • GET, POST agents
  • GET, PATCH, DELETE agents/:id
  • POST agents/:id/retry
  • POST, DELETE agents/:id/content

Characters and scenes

  • GET, POST characters
  • PATCH, DELETE characters/:id
  • GET, POST backgrounds
  • GET scenes

Voices and models

  • GET voices, voices/custom
  • POST voices/clone
  • DELETE voices/:id
  • GET llm-models

Sessions

  • POST sessions/token
  • GET, POST assistant/sessions
  • POST sessions/resolve-character-change
  • GET conversations/:id

Productivity

  • POST agents/:id/slide
  • POST agents/:id/podcast
  • POST agents/:id/mindmap
  • GET productivity/generated-contents

Missing config returns 503 CONFIG_MISSING; an unreachable platform returns 502 UPSTREAM_UNAVAILABLE. The UI renders both as friendly errors. To expose another endpoint, add its method and path pattern to ROUTES.

Ship it

Deploy anywhere Node runs.

pnpm build produces a standalone server. Vercel and similar platforms work out of the box once the two AIVAH_* variables are set. The Docker image is a small multi-stage build; secrets are passed at runtime, never baked in.

Docker
docker build -t aivah-starter-kit .
docker run --rm -p 3000:3000 \
  -e AIVAH_API_BASE_URL=https://api.aivah.ai/v1/platform \
  -e AIVAH_API_KEY=sk_aivah_replace_me \
  aivah-starter-kit

The e2e suite mocks the Aivah API, so pnpm lint && pnpm typecheck && pnpm test && pnpm build runs without a real key.

Production checklist

  • Serve over HTTPS: the microphone and WebRTC need a secure origin.
  • Commit your assistant config: the Assistant page writes to public/aivah-assistant/, which does not persist on immutable hosts.
  • Review allowedDevOrigins in next.config.ts: it lists development-only origins such as a tunnel.

Docs and source

Read the code. Open an issue. Send a PR.

The kit is public on GitHub. Star it to follow releases, and file an issue when something in the guide does not match what you see.

Building something the kit doesn’t cover yet?

Tell us what you are integrating. We will confirm availability, credential setup and the supported path before you write code.

View on GitHubTalk to the team
Find your starting point

Choose your starting point.

Start from the full app, embed only the voice assistant, or talk through a custom integration.

Your next step

Run the whole experience.

Live avatar chat, presentations, management screens and productivity generators in one Next.js app with an allow-listed proxy to the Aivah API.

Follow the quick start