Official ClickHouse Agentic Data Stack - self-host with ClickHouse, LibreChat, Langfuse, and ClickHouse MCP.
Shell
110
65 commits
updated Sep 24, 2026
The open-source stack for ClickHouse's suite of agentic analytic tools — your chat, your models, your data.
Powered by ClickHouse, LibreChat, and Langfuse.
Learn more at clickhouse.ai and the Agentic Data Stack blog.
Want to skip the setup and jump straight into adding agentic analytics into your workflow? Choose a Railway template below to spin up a preconfigured instance of the Agentic Data Stack in the cloud.
More details available in the Deploy on Railway section.
This project runs a fully self-hosted agentic analytics environment with Docker Compose. It connects a chat UI (LibreChat) to your data (ClickHouse) via MCP, with full LLM observability (Langfuse) — all in a single docker compose up command.
| Component | Purpose | Port |
|---|---|---|
| LibreChat | Modern Chat UI with multi-model / provider support (OpenAI, Anthropic, Google) | 3080 |
| Admin Panel | Browser-based configuration UI for LibreChat | 3081 |
| ClickHouse MCP | MCP server that gives agents access to ClickHouse | 8000 |
| Langfuse | LLM observability — traces, evals, prompt management | 3000 |
| ClickHouse | World's fastest analytical database | 8123 |
| PostgreSQL | Transactional database for Langfuse | 5432 |
| MongoDB | Transactional database for LibreChat | 27017 |
| MinIO | S3-compatible object storage | 9090 |
| Redis | Caching and queue | 6379 |
| Meilisearch | Full-text search for LibreChat | 7700 |
| pgvector | Vector database for RAG | 5433 |
| RAG API | Retrieval-augmented generation service for LibreChat | 8001 |
One-click deploy of two "Lite" variants of the stack:
Both Railway templates skip Meilisearch, pgvector, and the RAG API for simplicity. The ClickHouse MCP server ships pointed at sql-clickhouse.clickhouse.com so you can chat with the public demo data immediately; the ClickHouse Cloud MCP is also wired up if you want to OAuth into your own Cloud account post-deploy. Prefer to self-host? See Quick Start below.
./scripts/prepare-demo.sh
This is your fastest way to get started with the Agentic Data Stack. It generates a .env file with random credentials for all services, then presents an interactive menu to optionally configure API keys for OpenAI, Anthropic, and/or Google. Any providers you skip will remain as user_provided, letting users enter their own keys in the LibreChat UI.
The script then asks whether LibreChat should send its Langfuse traces to the local Langfuse container (the default) or to a remote Langfuse project. Choose the cloud option to point LibreChat at Langfuse Cloud (or any self-hosted Langfuse) by entering the base URL, public key, and secret key for that project. Choosing local restores the local endpoint and initialized project keys even if a previous run configured a remote project. If LibreChat is already running, the script recreates that service when its Compose configuration changed and verifies the effective runtime target, so new settings take effect immediately. You can change this later by editing LANGFUSE_BASE_URL, LANGFUSE_PUBLIC_KEY, and LANGFUSE_SECRET_KEY in .env, then running scripts/reconcile-demo-runtime.sh.
You can also generate credentials separately and customize the initial administrator account credentials:
USER_EMAIL="you@example.com" USER_PASSWORD="supersecret" USER_NAME="YourName" ./scripts/generate-env.sh
Learn more about configuring your LibreChat instance at https://librechat.ai/docs.
Note: To use LibreChat's file search / RAG features, the RAG API needs a real API key for embeddings —
user_providedwon't work because the RAG API calls the embeddings endpoint directly. IfOPENAI_API_KEYis set touser_provided, setRAG_OPENAI_API_KEYto a valid OpenAI key (it overridesOPENAI_API_KEYfor RAG only). You can also switch embedding providers viaEMBEDDINGS_PROVIDER(openai,azure,huggingface,huggingfacetei,ollama). See the RAG API docs for details.
docker compose up -d
.env under MINIO_ROOT_* fields)An admin user is created automatically on first startup using the credentials from your .env file.

LibreChat connects to ClickHouse through the MCP server, allowing AI agents to query and analyze your data. All LLM interactions are traced in Langfuse for observability, evaluation, and prompt management. The Admin Panel provides a browser-based UI for LibreChat configuration without editing librechat.yaml by hand.
| Script | Description |
|---|---|
scripts/prepare-demo.sh | Generate .env and interactively configure API keys |
scripts/generate-env.sh | Generate .env with random credentials |
scripts/reconcile-demo-runtime.sh | Apply .env changes to a running LibreChat container and verify its Langfuse target |
scripts/reset-all.sh | Stop all containers and wipe all data/volumes |
scripts/create-librechat-user.sh | Manually create a LibreChat admin user |
scripts/init-librechat-user.sh | Auto-init user on container startup (used internally) |
librechat.yaml configures endpoints, MCP servers, and agent capabilities. The Admin Panel (http://localhost:3081) offers a browser-based alternative for most of these settings..env holds all credentials and service configuration (see .env.example for reference).ADMIN_SSO_ENABLED=true after configuring LibreChat OpenID, and set ADMIN_SESSION_COOKIE_SECURE=true whenever the Admin Panel is served over HTTPS.docker-compose.yml includes the four compose files:
langfuse-compose.yml — Langfuse, ClickHouse, PostgreSQL, Redis, MinIOclickhouse-mcp-compose.yml — ClickHouse MCP serverlibrechat-compose.yml — LibreChat, MongoDB, Meilisearch, pgvector, RAG APIadmin-panel-compose.yml — LibreChat Admin PanelTo tear down all containers and delete all data:
./scripts/reset-all.sh
Then set up again and start fresh:
./scripts/prepare-demo.sh
docker compose up -d
50 followers · starred Feb 2026
164 followers · starred May 2026
25 followers · starred Mar 2026
44 followers · starred Feb 2026
Shell
45.0%
TypeScript
42.7%
JavaScript
12.3%
Official ClickHouse Agentic Data Stack - self-host with ClickHouse, LibreChat, Langfuse, and ClickHouse MCP.
Shell
110
65 commits
updated Sep 24, 2026
The open-source stack for ClickHouse's suite of agentic analytic tools — your chat, your models, your data.
Powered by ClickHouse, LibreChat, and Langfuse.
Learn more at clickhouse.ai and the Agentic Data Stack blog.
Want to skip the setup and jump straight into adding agentic analytics into your workflow? Choose a Railway template below to spin up a preconfigured instance of the Agentic Data Stack in the cloud.
More details available in the Deploy on Railway section.
This project runs a fully self-hosted agentic analytics environment with Docker Compose. It connects a chat UI (LibreChat) to your data (ClickHouse) via MCP, with full LLM observability (Langfuse) — all in a single docker compose up command.
| Component | Purpose | Port |
|---|---|---|
| LibreChat | Modern Chat UI with multi-model / provider support (OpenAI, Anthropic, Google) | 3080 |
| Admin Panel | Browser-based configuration UI for LibreChat | 3081 |
| ClickHouse MCP | MCP server that gives agents access to ClickHouse | 8000 |
| Langfuse | LLM observability — traces, evals, prompt management | 3000 |
| ClickHouse | World's fastest analytical database | 8123 |
| PostgreSQL | Transactional database for Langfuse | 5432 |
| MongoDB | Transactional database for LibreChat | 27017 |
| MinIO | S3-compatible object storage | 9090 |
| Redis | Caching and queue | 6379 |
| Meilisearch | Full-text search for LibreChat | 7700 |
| pgvector | Vector database for RAG | 5433 |
| RAG API | Retrieval-augmented generation service for LibreChat | 8001 |
One-click deploy of two "Lite" variants of the stack:
Both Railway templates skip Meilisearch, pgvector, and the RAG API for simplicity. The ClickHouse MCP server ships pointed at sql-clickhouse.clickhouse.com so you can chat with the public demo data immediately; the ClickHouse Cloud MCP is also wired up if you want to OAuth into your own Cloud account post-deploy. Prefer to self-host? See Quick Start below.
./scripts/prepare-demo.sh
This is your fastest way to get started with the Agentic Data Stack. It generates a .env file with random credentials for all services, then presents an interactive menu to optionally configure API keys for OpenAI, Anthropic, and/or Google. Any providers you skip will remain as user_provided, letting users enter their own keys in the LibreChat UI.
The script then asks whether LibreChat should send its Langfuse traces to the local Langfuse container (the default) or to a remote Langfuse project. Choose the cloud option to point LibreChat at Langfuse Cloud (or any self-hosted Langfuse) by entering the base URL, public key, and secret key for that project. Choosing local restores the local endpoint and initialized project keys even if a previous run configured a remote project. If LibreChat is already running, the script recreates that service when its Compose configuration changed and verifies the effective runtime target, so new settings take effect immediately. You can change this later by editing LANGFUSE_BASE_URL, LANGFUSE_PUBLIC_KEY, and LANGFUSE_SECRET_KEY in .env, then running scripts/reconcile-demo-runtime.sh.
You can also generate credentials separately and customize the initial administrator account credentials:
USER_EMAIL="you@example.com" USER_PASSWORD="supersecret" USER_NAME="YourName" ./scripts/generate-env.sh
Learn more about configuring your LibreChat instance at https://librechat.ai/docs.
Note: To use LibreChat's file search / RAG features, the RAG API needs a real API key for embeddings —
user_providedwon't work because the RAG API calls the embeddings endpoint directly. IfOPENAI_API_KEYis set touser_provided, setRAG_OPENAI_API_KEYto a valid OpenAI key (it overridesOPENAI_API_KEYfor RAG only). You can also switch embedding providers viaEMBEDDINGS_PROVIDER(openai,azure,huggingface,huggingfacetei,ollama). See the RAG API docs for details.
docker compose up -d
.env under MINIO_ROOT_* fields)An admin user is created automatically on first startup using the credentials from your .env file.

LibreChat connects to ClickHouse through the MCP server, allowing AI agents to query and analyze your data. All LLM interactions are traced in Langfuse for observability, evaluation, and prompt management. The Admin Panel provides a browser-based UI for LibreChat configuration without editing librechat.yaml by hand.
| Script | Description |
|---|---|
scripts/prepare-demo.sh | Generate .env and interactively configure API keys |
scripts/generate-env.sh | Generate .env with random credentials |
scripts/reconcile-demo-runtime.sh | Apply .env changes to a running LibreChat container and verify its Langfuse target |
scripts/reset-all.sh | Stop all containers and wipe all data/volumes |
scripts/create-librechat-user.sh | Manually create a LibreChat admin user |
scripts/init-librechat-user.sh | Auto-init user on container startup (used internally) |
librechat.yaml configures endpoints, MCP servers, and agent capabilities. The Admin Panel (http://localhost:3081) offers a browser-based alternative for most of these settings..env holds all credentials and service configuration (see .env.example for reference).ADMIN_SSO_ENABLED=true after configuring LibreChat OpenID, and set ADMIN_SESSION_COOKIE_SECURE=true whenever the Admin Panel is served over HTTPS.docker-compose.yml includes the four compose files:
langfuse-compose.yml — Langfuse, ClickHouse, PostgreSQL, Redis, MinIOclickhouse-mcp-compose.yml — ClickHouse MCP serverlibrechat-compose.yml — LibreChat, MongoDB, Meilisearch, pgvector, RAG APIadmin-panel-compose.yml — LibreChat Admin PanelTo tear down all containers and delete all data:
./scripts/reset-all.sh
Then set up again and start fresh:
./scripts/prepare-demo.sh
docker compose up -d
50 followers · starred Feb 2026
164 followers · starred May 2026
25 followers · starred Mar 2026
44 followers · starred Feb 2026
Shell
45.0%
TypeScript
42.7%
JavaScript
12.3%