Voice UI Kit

Quickstart

Get started with the Voice UI Kit

The Voice UI Kit is a collection of components, hooks and templates for building voice AI applications quickly.

  • Designed to be used alongside the Pipecat Client SDK or standalone via headless components.
  • Minimal dependencies, no framework-specific code.
  • Built on Tailwind 4 and Shadcn primitives.
  • Intended to be used alongside a developer's own visual design system.

Quickstart

Install the library:

npm install @pipecat-ai/voice-ui-kit

For usage with Pipecat:

npm install @pipecat-ai/client-js @pipecat-ai/client-react

And finally, your chosen transport package:

npm install @pipecat-ai/small-webrtc-transport 
# or
npm install @pipecat-ai/daily-transport

Templates

Templates are fully-featured, configurable UIs for developing for Pipecat.

They're built and composed from the core components and primitives, and are designed to be used as-is or as a starting point for your own custom UI.

Console template
import { ThemeProvider, ConsoleTemplate } from "@pipecat-ai/voice-ui-kit";

export default function Home() {
    return (
        <ThemeProvider>
            <ConsoleTemplate
                transportType="smallwebrtc"
                connectParams={{
                    webrtcUrl: "/api/offer", 
                }}
                noUserVideo={true}
            />
        </ThemeProvider>
    );
}

Learn more about the Console template in the Console template section.

Components

Components are the building blocks of the Voice UI Kit. They exist in both connected (Pipecat) and headless variants.

App.tsx
import {
  PipecatAppBase,
  ErrorCard,
  SpinLoader,
  Card,
  CardContent,
  Divider,
  UserAudioControl,
  ConnectButton,
  VoiceVisualizer,
  type PipecatBaseChildProps,
} from "@pipecat-ai/voice-ui-kit";

<PipecatAppBase
    connectParams={{
        webrtcUrl: "/api/offer",
    }}
    transportType="smallwebrtc"
    noThemeProvider
>
{({ client, handleConnect, handleDisconnect,error }: PipecatBaseChildProps) =>
    !client ? (
        <SpinLoader />
    ) : error ? (
        <ErrorCard>{error}</ErrorCard>
    ) : (
        <Card
            size="lg"
            shadow="xlong"
            noGradientBorder={false}
            rounded="xl"
        >
            <CardContent className="flex flex-col gap-4">
            <VoiceVisualizer
                participantType="bot"
                className="bg-accent rounded-lg"
            />
            <Divider />
            <div className="flex flex-col gap-4">
                <UserAudioControl size="lg" />
                <ConnectButton
                    size="lg"
                    onConnect={handleConnect}
                    onDisconnect={handleDisconnect}
                />
            </div>
            </CardContent>
        </Card>
    )
}
</PipecatAppBase>

Learn more about components in the Components section.

Registry

Components are also available via the Shadcn CLI in the Shadcn registry.

This is useful for when you want component code in your own project, to extend and customize however you wish.

Registry work is currently in progress