kiku

Support that listens.

A clean, self-hosted shared inbox for customer support.

The Kiku desk: views on the left, the ticket list in the middle, and an open ticket in the reading pane.

One thread, not two systems.

The customer’s mail and your team’s discussion of it live in the same thread, in order. Internal notes are marked and never leave the building; replies go out as ordinary email. Nobody has to reconstruct what was said in chat.

One thread: a customer's mail, two internal notes marked in amber, and the reply that went back out as email.

Set up in your browser.

Mailbox, agents, ticket types, companies — all of it is a form in Settings, saved encrypted in your database. No config file to redeploy, and no environment variable you have to restart a container to change.

Settings → Email: mailbox health, the support address, and IMAP configuration in an ordinary form.

Nothing is gated.

Every feature is in the box, under AGPL-3.0. No enterprise edition, no ee/ directory, no CLA — so it cannot be relicensed later, even by us. If we ever run it for you, you’d be paying for hosting, not for features.

Two containers.

The app and Postgres. Budget 15–20 minutes and four DNS records for the support address — the quickstart walks all of it.

services:
  kiku:
    image: ghcr.io/falcondev-oss/kiku:1
    ports: ['3000:3000']
    environment:
      APP_URL: https://help.example.com
      SECRET_KEY: change-me
      DATABASE_URL: postgres://kiku:kiku@db:5432/kiku
    volumes: [kiku-data:/data]

  db:
    image: postgres:18-alpine
    environment:
      POSTGRES_USER: kiku
      POSTGRES_PASSWORD: kiku
      POSTGRES_DB: kiku
    volumes: [kiku-db:/var/lib/postgresql]
Read the quickstart