chatz

Self-hosted AI chat in one Docker image. The psyb0t/chatz image runs one Go binary that serves the chat web app and its API from the same port, streams replies from OpenAI-compatible or Anthropic models, calls tools on MCP servers that the admin connects, and stores everything in SQLite or Postgres.

What you get

Part What it does
Streaming chat Text, reasoning and tool calls arrive as the model produces them. A stopped or refreshed turn keeps the submitted prompt.
Models Any OpenAI-compatible endpoint (OpenAI, Ollama, vLLM, gateways) or Anthropic. chatz asks each endpoint for its models and merges the lists.
MCP tools The admin adds stdio or HTTP MCP servers. Users turn each server on or off per chat. Stored credentials are encrypted.
Generative UI Models can answer with tables, charts, status panels, log viewers and other components that render inline in the conversation.
Accounts The first user becomes the admin and creates the other accounts. A single-user install can skip the login.
Storage SQLite in one Docker volume, or Postgres for shared and replicated setups. Migrations run on every start.
Demo mode Fixed, paced replies for a set of exact demo prompts, for showing the UI without spending tokens.

Quick start

SQLite in a Docker volume is the shortest path, and it needs no model for the first run:

docker volume create chatz-data

docker run --name chatz --detach --restart unless-stopped \
  --publish 127.0.0.1:8080:8080 \
  --env CHATZ_DB_DRIVER=sqlite \
  --volume chatz-data:/data \
  psyb0t/chatz:latest run

Open http://localhost:8080/setup and create the admin account. The chat works right away, but the model picker stays empty until you connect a model. Getting started has the hardened version of this command, the Docker Compose setup and the first-model steps.

Where to go next

Page What it covers
Getting started Docker and Docker Compose installs, the first admin, the first model, demo mode
Configuration Every environment variable with its default
Models and upstreams The CHATZ_UPSTREAMS format, model metadata, fallbacks, timeouts and health
Chats Chat settings, the history budget, streaming status, retries and search
MCP servers Adding, importing and toggling MCP servers, and how their credentials are kept
Generative UI The component catalog and how models put UI into a reply
HTTP API Authentication, endpoints, the SSE stream and error codes
Deployment Image tags, SQLite or Postgres, upgrades, backups and TLS
Monitoring Health, admin readiness, Prometheus metrics, pprof and logs
Security What chatz protects, and what is left to you
Troubleshooting Startup refusals and common errors with their fixes
Architecture How the binary is put together
Development Building, testing and changing chatz from source