yak
Features

Built for production, not demos

yak isn't just a chatbot overlay. It's a complete AI assistant platform with multi-API integration, security built-in, programmatic control, and full theming—everything you need to ship a production-quality experience.

Talk to navigate and take actions

Your product on autopilot

Voice mode turns your app into a hands-free copilot. Users speak naturally—"take me to my orders," "cancel the one from Tuesday," "add another"—and the assistant moves them through your routes and fires off the same tool calls your APIs already expose. No new integration, no second widget; one pill, two surfaces, the same handlers behind both.

  • Hands-free navigation across your existing routes
  • Real actions, not transcripts—same tool calls as chat
  • One mode prop flips between chat, voice, or both
  • Push-to-talk over WebRTC, low-latency and on-device
  • Same auth, same permissions, same data the user already sees
  • Configurable opening greeting—generated, fixed, or silent to control voice minutes
Trigger pill
yak
// Same widget, both surfaces
<YakProvider
appId="your-app-id"
mode="both"
>
Push-to-talk · WebRTC · no second integration
Connect any data source

Multi-API integration

yak connects to your existing APIs—tRPC, GraphQL, REST/OpenAPI, or custom adapters. The AI learns your schema and generates appropriate queries. You provide the API, we handle the AI.

  • tRPC adapter with procedure allowlisting
  • GraphQL schema integration
  • REST/OpenAPI spec support
  • Custom adapters for any data source
  • Combine multiple APIs in a single assistant
Supported adapters
tRPC
Procedure introspection
GraphQL
Schema-based queries
REST
OpenAPI spec support
Custom
Build your own
// One toolset, every source
createYakToolset([trpcAdapter, graphqlAdapter])
Any MCP server—Notion, Zendesk, your own

Connect your knowledge base

Connect any remote MCP server—Zendesk, Notion, Confluence, GitHub, or your own internal one. If it speaks the Model Context Protocol, the assistant can use it. An admin authorizes it once from the dashboard and every chat and voice session can use its tools. No code, no per-provider integration to maintain.

  • Admin connects once via OAuth—no engineering work
  • Same connection powers both chat and voice
  • Tool allowlist: expose read-only lookups, hide the rest
  • Tokens encrypted at rest and never sent to the browser
  • Auto-refreshed; one-click reconnect if a provider revokes access
Connected providers (examples)
Zendesk
Connected
Notion
Connected
Confluence
Connected
Any MCP-compatible server
+ Connect
Tokens encrypted · never sent to the browser
Auto-refreshed · powers chat & voice
Respects your access controls

Security by design

yak doesn't bypass your security model—it works within it. Tool calls receive the original request object, so you authenticate with cookies, headers, or tokens. The AI only accesses what the user can access.

  • Tool calls receive the original Request object
  • Use your existing auth (Clerk, Auth.js, custom)
  • Allowlist specific procedures—block the rest
  • Origin validation for all postMessage communication
  • Built-in redirect protection against open redirect attacks
How it works
1
User asks: "Show my orders"
2
Tool receives Request with user's cookies/headers
3
Your auth middleware validates—only their data returned
No service accounts or elevated access
Persisted conversations, no extra database

Remember signed-in users

Pass a signed user identity into the widget and yak persists every conversation against that user. When they come back—same device or new one—they see their past chats in a history pane and can pick up where they left off. Anonymous traffic still works exactly as before: no identity, no persistence.

  • HMAC-signed identity verification (Intercom-style)—the secret never leaves your server
  • Conversations resume across devices and sessions
  • Built-in history pane in the widget with start-new and delete actions
  • Just an id and a hash—no PII passed through the widget
  • Rotate the secret from the dashboard if it ever leaks
Open, close, inject prompts

Programmatic control

Go beyond the floating button. The useYak hook gives you full control to open the chat, inject context-aware prompts, and subscribe to tool events—build help buttons, onboarding flows, or error assistance.

  • open(), close(), openWithPrompt() methods
  • Check widget state with isOpen
  • Subscribe to tool events for cache invalidation
  • Build context-sensitive help buttons
  • Create keyboard shortcuts and help menus
useYak hook
// Control from anywhere
const { open, openWithPrompt } = useYak();
// Context-aware help
openWithPrompt("Help me with billing");
Full TypeScript support
Match your brand

Custom theming

The assistant should feel native to your product. Configure position, colors, display mode, and color scheme. Separate light and dark mode themes let you match both modes of your design system.

  • Chatbox or full-height drawer display modes
  • Use our widget or build your own with programmatic control
  • Light, dark, or system color mode
  • Customize backgrounds, borders, buttons, and message bubbles
  • Style the launcher button per color mode
Theme options
// Match your brand
displayMode: "drawer"
position: "right"
colorMode: "system"
light: { background: '#fff', ... }
Zero-config navigation

Automatic route discovery

For Next.js apps, yak scans your app directory and extracts page metadata automatically. The AI knows every page in your app and can navigate users there. A CLI generates the manifest for production builds.

  • Auto-scans Next.js app and pages directories
  • Extracts title and description from page metadata
  • CLI generates route manifest for production
  • Filter routes with include/exclude patterns
  • Override with custom routes when needed
Route manifest
// Auto-generated from app/
[
{ path: "/", title: "Home" }
{ path: "/settings", title: "Settings" }
]
CLI: yak-nextjs generate-manifest
Keep your UI in sync

Tool event subscription

When the AI modifies data through tool calls, your UI should update. The useYakToolEvent hook lets you subscribe to tool completions and invalidate caches—your page refreshes automatically after chatbot actions.

  • Subscribe to tool call completion events
  • Access tool name, args, result, and success status
  • Integrate with tRPC, React Query, or SWR cache invalidation
  • Auto-unsubscribe when components unmount
  • Keep data fresh without manual refresh
Cache invalidation
useYakToolEvent((event) => {
if (event.ok) {
utils.orders.invalidate();
}
});
Works with tRPC, React Query, SWR
Beautiful data, instantly

Interactive data tables

When the AI returns lists or structured data, yak automatically displays it in an interactive table panel. Users can sort columns, filter rows, and export to CSV—all without writing any code.

  • Automatic detection of tabular data in responses
  • Split-panel view keeps chat visible while exploring data
  • Sort by any column with a single click
  • Filter rows to find what you need
  • Export to CSV for use in spreadsheets
Interactive table
Recent Orders
Export CSV
OrderStatusTotal
#1234Delivered$89.00
#1235Shipped$124.50
#1236Pending$45.00
Click columns to sort, filter to search
Rich grids, not walls of text

Image-first card results

When the AI surfaces products, places, or anything image-first, yak renders a grid of cards instead of plain text. You configure the action buttons in the portal—"Add to cart," "Book now," "View details"—and clicks inject a prompt back into the chat so the conversation keeps flowing.

  • Image-first cards with title, price, badges, and custom fields
  • Up to three tenant-defined action buttons per card, styled as primary, secondary, or ghost
  • Auto layout—inline in the chat bubble for small grids, side panel for larger ones
  • Action clicks inject prompts so the conversation continues naturally
  • Currency-aware price formatting with compare-at support for sale items
Card grid
Heirloom tomato
1 lb · local
$4.99
Sourdough loaf
500g · fresh today
$8.50
Inline in chat or open in a side panel

Ready to see these features in action?

Get started with yak today and ship an AI assistant that matches your product.