An AI-powered customer support widget you self-host. Connects to your knowledge base, answers questions, and escalates to a ticket when needed.
Check out all Plainbase tools at plainbase.dev.
1. Clone and configure:
cp .env.example .env
# Fill in AI_PROVIDER, AI_API_KEY, AI_MODEL, EMBEDDING_MODEL
# Fill out `ADMIN_EMAIL` and `ADMIN_PASSWORD` to automatically create the admin account on startup.2. Start:
docker compose up -d --build3. Create your account: on first boot the app logs a one-time setup token. Check the logs and open /admin/setup to create your owner account. (optional, set env vars to skip)
docker compose logs plainbase-ask | grep "First-run"4. Open the admin at http://localhost:3000/admin, add your documents, and configure the widget.
5. Embed the widget by copying the snippet from the Widget page in the admin and pasting it into your site.
For production, put a reverse proxy in front (Coolify, Koyeb, Railway, or your own Nginx/Caddy) to handle HTTPS. The app listens on port 3000.
The app stores data in two SQLite files. Litestream is bundled in the Docker image and can stream both files to any S3-compatible bucket in real time — just set LITESTREAM_S3_BUCKET and credentials in .env.
npm install
npm testTests use Vitest and run against an in-memory SQLite database — no environment variables or external services needed. The LLM is mocked so API keys are not required.
See docs/00-getting-started.md for:
- How the app works and sizing guidance
- Recommended European hosting providers (Hetzner, Scaleway, Koyeb…)
- Litestream backup setup (Scaleway, Cloudflare R2, MinIO)
- Full environment variable reference