Open Chat Interfacedocs

Self-hosting

How an Open Chat Interface deployment fits together, and where to start.

OCI is two container images and three services you provide:

web — ghcr.io/ncecere/open-chat-interface/web (Caddy: the browser app, and /api forwarded to the API)
api — ghcr.io/ncecere/open-chat-interface/api (Node.js: everything else, including background jobs and migrations)
PostgreSQL 17 (pgvector optional)
Redis (recommended)
File storage: a local volume, or S3-compatible
  • Same origin. People reach the web container. It serves the app and forwards /api/* to the API, so session cookies need no CORS or cross-site settings. Put your TLS-terminating reverse proxy or load balancer in front of the web container.
  • The API applies database migrations on start (under a lock, so replicas can start together), runs the background jobs on every replica (each job runs on one at a time), and talks to model providers, search providers, connectors, SMTP and S3.
  • State lives in PostgreSQL (everything durable), file storage (uploads) and your secret manager (AUTH_SECRET, ENCRYPTION_KEY). Redis holds only rebuildable state: replies in progress, rate limits.
  • Configuration is almost all in the admin dashboard; environment variables cover connection strings, secrets, the first administrator, a few defaults and observability.

Start here

To look around first, try it locally.

On this page