# Snakkbar developer documentation

Snakkbar is an AI customer chat with live human takeover. A business (a *tenant*) gets an AI
assistant that answers from its website and documents, and its staff (*operators*) can step into
any conversation, several at a time. Staff also see who is on the site right now (*live
visitors*, with a live view of a visitor's cursor and scroll) and an overview of traffic and chats.

Everything is available three ways. Pick per surface (visitor side and staff side independently):

| Level | Visitor side | Staff side | Effort |
| --- | --- | --- | --- |
| **Stock UI** | One `<script>` tag: the chat bubble | `mountAdmin(element, …)`: the full inbox inside your own admin | Minutes |
| **SDK** | `createVisitorClient()` + your own UI (React hooks included) | `createOperatorClient()` + your own UI | Days |
| **HTTP API** | `/api/v1/visitor/*` + SSE | `/api/v1/operator/*` + SSE | Any language |

The stock UIs are built on the SDK, and the SDK only uses the public HTTP API. Anything the stock
UIs do, your own UI can do.

## Start here

- **Implementing Snakkbar in a site as an AI agent?** Read [agent-guide.md](agent-guide.md) and
  follow it top to bottom.
- [Concepts](concepts.md) — tenants, visitors and their profiles, live visitors, operators,
  conversations, the assistant, handoff, the overview.
- [Visitor widget](widget.md) — the script tag, options, JavaScript API (`setUser`, `identify`),
  live visitors and consent, theming.
- [Admin UI in your own app](admin-embed.md) — token exchange, `mountAdmin`, and building your own
  live view.
- [Headless with the SDK](sdk.md) — build your own chat UI and/or inbox, tracking, live visitors,
  dashboard.
- [HTTP API reference](api.md) — every endpoint, auth scheme and error code.
- [Realtime](realtime.md) — the event streams, how to stay in sync, live-visitor cadence.
- [Security](security.md) — tokens, origins, keys, visitor profiles, what live visitors collect,
  rate limits and data retention.

## Hosts

| Thing | URL |
| --- | --- |
| Snakkbar host (`<host>` in these docs) | `https://www.snakkbar.app` |
| Widget | `<host>/widget.js` |
| Admin bundle | `<host>/admin.js` |
| SDK (ESM) | `<host>/sdk/snakkbar.mjs`, `<host>/sdk/react.mjs` |
| API | `<host>/api/v1` |
| Hosted staff panel | `<host>/panel` |
| Machine-readable index of these docs | `<host>/llms.txt` |
