Self-hosted · Multi-client · Open source

The embeddable AI chat platform you run yourself.

Design a branded chat widget, ground it in your own documents, connect it to your own tools — then embed it on any site with one script tag. Multi-client, self-hosted, no lock-in.

Works with OpenAI · OpenRouter · Ollama · any OpenAI-compatible model

SpeaksOpenAIOpenRouterOllamaModel Context ProtocolMongoDBQdrantDocker

Everything in one platform

A complete chat stack, without the SaaS bill

From the widget your visitors see to the retrieval, tools and guardrails behind it — all managed from a single admin.

Widget Studio

Design a branded widget with a live preview, presets and contrast checks. What you see is what ships.

Knowledge base

Ground answers in your files, an API or a webhook — and cite the sources behind them.

MCP tools

Connect external tools over MCP with per-tool allowlists, OAuth and full call logging.

Any AI provider

OpenAI, OpenRouter, a self-hosted Ollama, or any OpenAI-compatible model. Keys stay encrypted.

Multi-client

Every client is isolated — its own data, domains, theme, limits and roles. One platform, many brands.

Safe by default

Prompt-injection guardrails, layered rate limits, SSRF-guarded calls and signed visitor identity.

Two ways to embed

A floating bubble, or built into the page

The same widget ships two ways — a launcher that pops open in the corner, or an inline block that sits in your content. One script tag, your choice.

A floating launcher, bottom corner

Support×
Hi 👋 I'm your assistant. Ask me anything about the product, your account, or our docs.
How do I invite a teammate?
Open Settings → Team, choose Invite, and enter their email. They'll get a link to set a password.
SourcesTeam guideRoles & access
Type a message…
Send
Ask us

Knowledge base

Answers grounded in your own content

Upload PDFs, Word docs, Markdown and text — or connect a live API or a webhook you push to. Compent embeds it, retrieves the right passages per question, and shows the sources behind every answer.

  • Files, API and webhook sources
  • Per-client embeddings
  • Cited sources in every reply

Conversations & stats

See exactly what your assistant said

Every conversation is saved and searchable, with per-client usage statistics and an activity log. Tool calls are logged right in the transcript, so you can tell how each answer was produced.

  • Full transcripts per client
  • Usage & token statistics
  • Tool calls logged in-line

MCP tools

Give it the tools to actually do things

Connect Model Context Protocol servers over HTTP or SSE. You choose which tools the bot may call, per server — with OAuth, encrypted headers and a hard allowlist.

  • Per-tool allowlist
  • OAuth 2.1 + encrypted credentials
  • Import from Claude Desktop / Codex

Appearance

Matched to the site it lives on

Tune colors, radius, copy and placement in the studio and watch a real widget preview update as you type. Light or dark, popup or inline — with live WCAG contrast checks so it always stays readable.

  • Live preview of the real widget
  • Light & dark, seven presets
  • WCAG contrast checks

Retrieval-augmented answers

Feed it your knowledge, three ways

Every answer is grounded in content you control. Get data in however it lives today — uploaded documents, a live API, or events pushed from your own systems — and the platform keeps it searchable.

Files & folders

Upload PDFs, Word, Excel, PowerPoint, Markdown, text or JSON — one file or a whole folder tree at once.

  • Thousands of files per batch
  • Re-upload updates, never duplicates
  • Email when processing finishes

REST API

Point it at any JSON API and it keeps itself in sync on a schedule — with pagination, field mapping and cleanup of removed items.

  • Scheduled refresh
  • Cursor, page & offset pagination
  • Field mapping with a live test

Webhook push

Push content the moment it changes: your CMS or backend POSTs to a per-source URL and the knowledge base updates in seconds.

  • Per-item create, update & delete
  • Token-secured endpoint
  • Plain text or JSON items
1Parse

every document becomes clean text

2Chunk

split into ~1,000-character passages

3Embed

with the model you choose, per client

4Index

vectors land in Qdrant for instant search

5Answer

the bot cites the passages it used

Search runs on Qdrant, the open-source vector database bundled in the compose stack — retrieval stays in single-digit milliseconds whether a client has a hundred passages or a million. Tags link related content (an athlete's schedule to their results), role-based access can fence off parts of the knowledge base, and every answer shows the documents it drew on.

Self-hosted

Runs on your server, not ours

The whole platform is three containers: the app, MongoDB and the Qdrant vector index. No third-party SaaS, no per-seat pricing, and no conversations leaving infrastructure you control. Bring your own models and your own domain.

Put it behind your reverse proxy, point a domain at it, and invite your team. Documents and chunks live in MongoDB (the vector index rebuilds itself from it), so one backup covers everything.

compose · quickstart
$ cp .env.example .env # set your secrets
$ docker compose up -d --build # app + MongoDB + Qdrant
$ curl http://localhost:3000/api/health
→ ok, listening on :3000

Ready to put an assistant on your site?

Sign in to the admin to create your first client, or clone the repo and run it yourself.