Kaiten
Self-Hosting

Docker Compose

Full Docker Compose configuration, profiles, and service architecture.

Docker Compose

Kaiten uses Docker Compose with profiles to let you run exactly the services you need.

Profiles

CommandProfileServices
make upbackendTraefik, PostgreSQL, API, Seeder
make up-frontendfrontendAdds React dashboard dev server
make up-fullfullAdds MCP server + Jaeger tracing
make up-rabbitrabbitAdds RabbitMQ for the event pipeline

Services

Core (always running)

ServiceImagePurpose
traefiktraefik:v3API gateway, JWT validation, routing
kaiten-dbpostgres:17Primary database with WAL logical replication
kaiten-apiCustom Go buildREST + GraphQL + OFREP server
kaiten-seederCustom Go buildOne-shot database seeding

Optional Add-ons

ServiceProfilePurpose
kaiten-appfrontendReact dashboard (Vite dev server)
kaiten-mcpfullMCP server (FastMCP, Python)
jaegerobserve / fullDistributed tracing UI
rabbitmqrabbitEvent message broker
debeziumrabbitCDC connector for outbox events
dapr-sidecarrabbitPub/sub sidecar for event delivery

Traefik Routing

Traefik routes requests based on path prefixes:

PathMiddlewareTarget
/api/* (except OFREP)clerk-jwtkaiten-api
/api/ofrep/*api-token-authkaiten-api
/api/webhooks/clerkNone (public)kaiten-api
/mcp/*api-token-authkaiten-mcp
/*Nonekaiten-app

Data Persistence

PostgreSQL data is stored in a Docker volume (kaiten-db-data). To reset:

make down         # Stop all services
docker volume rm kaiten_kaiten-db-data  # Delete data
make up           # Fresh start

Or use the seeder's --clean flag:

KAITEN_SEED_PROFILE=kaiten-sushi-shop make up  # Seeds with --clean

On this page