Skip to content

Run Kebivo with Docker

You need Docker with Compose, OpenSSL and a free port 8000.

1. Start Kebivo.

git clone <REPOSITORY_URL> kebivo
cd kebivo
cp .env.example .env
printf 'SECRET_KEY=%s\n' "$(openssl rand -hex 32)" >> .env
printf 'ENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" >> .env
printf 'ALLOWED_ORIGINS=http://127.0.0.1:8000\n' >> .env
docker compose up --build -d
curl -fsS http://127.0.0.1:8000/health/ready

Replace <REPOSITORY_URL> with the repository address. The first build takes a few minutes. Once migrations finish, readiness returns {"status":"ok",...}.

2. Create the administrator. The command asks for a password (at least 12 characters).

docker compose exec app python -m kebivo.cli bootstrap --email admin@example.org

3. Create a project and a token. Open http://127.0.0.1:8000/ (exactly this address: localhost is a different origin and sign-in would fail) and sign in. Create a project, then under Project tokens issue a token with the feedback:gap scope and copy it. It is shown only once.

4. Send your first event.

export KEBIVO_TOKEN='<PROJECT_TOKEN>'
curl -i http://127.0.0.1:8000/api/v1/feedback \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $KEBIVO_TOKEN" \
  -H 'Idempotency-Key: first-event-001' \
  --data '{"event_type":"knowledge_gap","question":"How do I reset my corporate VPN?","tags":["it"]}'

The response is 202 Accepted with an event_id. 5. Open the Inbox in the UI. The question appears in its own group. Add a destination and a routing rule to send future reports to email or a webhook.

To stop: docker compose down (data is kept). docker compose down --volumes deletes all data. For production (TLS, backups, upgrades, every setting), read the self-hosting guide.

Next: REST API or MCP.