Persona is a lightweight, themeable AI chat widget for building agentic front-end experiences on the web. It is written in TypeScript and renders with Vanilla JavaScript, so it can work alongside React, Vue, Svelte, static HTML, or other front-end stacks. The widget is backend-agnostic and connects to any SSE-capable agent or model backend through the Persona streaming protocol. It supports streaming chat, multimodal attachments, voice input and output, WebMCP page tools, local client tools, approval gates, tool call visualization, artifact rendering, and safe markdown or HTML output. It also includes configurable layouts such as floating, docked, fullscreen, and inline experiences. Overall, it is useful for teams that want a customizable web assistant UI without committing to a specific framework.
Features
- Framework-independent AI chat widget
- TypeScript and Vanilla JavaScript implementation
- SSE streaming with pluggable parsers
- Floating, docked, fullscreen, and inline layouts
- Voice, multimodal attachments, artifacts, and tool call visualization
- Plugin system, themes, approval gates, WebMCP, and local client tools