packages/docs/product/onboarding-reimagined-prd.md
Date: 2026-05-12
Replace the current pre-chat runtime gate with a calm, voice-first companion start. The first frame is a blue sky, then slow infinite clouds, a reactive avatar, compact conversation history, and a ChatGPT-like composer optimized for text, voice, dictation, and attachments.
The setup path stays simple: choose Cloud, On-Device, or Remote; choose language; complete the selected connection path; verify speaker and microphone; land in the companion chat. Desktop should converge on the same companion experience plus a tray runtime and a thin always-available bottom bar.
BACKGROUND_EDIT agent action.views array.ScheduledTask for reminders, follow-ups, recaps, watchers, or approvals.Requirements:
html, body, root shell, and startup containers use the same blue background color before assets load.BACKGROUND_EDIT action lets the agent replace the background implementation with versioned code.Performance budget:
transform: translate3d(...).prefers-reduced-motion.The first decision is still where the agent runs, with Cloud recommended and the choices visible in this order:
Cloud behavior:
On-Device behavior:
Remote behavior:
Requirements:
Speaker step:
Retry voice lines:
Microphone step:
The post-onboarding screen is the companion screen:
Composer behavior:
Messages:
Requirements:
Initial module contract:
export interface AvatarModule {
id: string;
title: string;
kind: "canvas" | "webgl" | "react" | "vrm";
mount(target: HTMLElement, context: AvatarContext): AvatarHandle;
}
export interface AvatarContext {
audioLevel: () => number;
speakingState: () => "idle" | "listening" | "thinking" | "speaking";
theme: "sky";
ownerName?: string;
}
Requirements:
Requirements:
Response gating:
The onboarding agent should learn:
Extraction rules:
Requirements:
Data contract:
interface VoiceProfile {
id: string;
displayName?: string;
owner: boolean;
embeddingModel: string;
embeddings: VoiceEmbeddingSummary[];
quality: {
samples: number;
seconds: number;
noiseFloor: number;
lastUpdatedAt: string;
};
consent: "explicit" | "implicit-household" | "unknown";
}
Requirements:
views array of complete React-based views.Plugin contract:
export interface PluginViewRegistration {
id: string;
title: string;
description?: string;
icon?: React.ComponentType;
component: React.ComponentType<PluginViewProps>;
permissions?: ViewPermission[];
developerOnly?: boolean;
}
export interface ElizaPlugin {
views?: PluginViewRegistration[];
apps?: PluginViewRegistration[]; // deprecated compatibility alias
}
Agent view actions:
VIEW_CREATEVIEW_EDITVIEW_REVERTVIEW_DELETEVIEW_RESTOREVIEW_OPENviews.Interactive prototype:
docs/prototypes/onboarding-reimagined/index.html
Generated Kokoro audio assets:
docs/prototypes/onboarding-reimagined/audio/