v0.3 rebuilds the dashboard on TanStack Start, ships a pluggable authentication system, and delivers monitoring and UI improvements accumulated during the v0.2 cycle.
New framework (TanStack Start)
The dashboard is rewritten on TanStack Start with Vite as the build tool. Every page is pre-rendered at build time so the initial shell loads from cache before ClickHouse is contacted.
- Static prerender for all 75+ dashboard pages.
- TanStack Query replaces SWR for client-side data fetching.
- Cloudflare Workers and Docker/Node builds from the same source.
NEXT_PUBLIC_*env vars renamed toVITE_*; old names still work as a fallback.
See Migrate to v0.3 for upgrade steps.
Pluggable authentication
A new server-side auth layer replaces the previous Clerk-only approach. Set CHM_AUTH_PROVIDER to choose how requests are authenticated:
| Provider | Description |
|---|---|
none | Default. Dashboard is open — no login required. |
clerk | Clerk browser sessions — same as v0.2. |
proxy | Trust a reverse proxy: Cloudflare Access JWT or a trusted header + shared secret. |
An always-on API key layer (CHM_API_KEY_SECRET) issues signed chm_ Bearer tokens for scripts and MCP clients, independent of the active provider.
See Authentication for setup details.
Cluster topology visualization
The /cluster page now shows a live topology diagram.
- Shard and replica nodes drawn with distinct shapes and the ClickHouse logo.
- Physical cluster groupings shown with labeled hull overlays.
- Nodes sized and colored by live metrics.
- Nodes can be toggled on/off; the diagram adjusts height to the data.
Query page improvements
- Running queries split into a live “Running” table and a “Recently completed” table with animated row transitions.
- Slow, expensive, and failed query pages redesigned with expand panels, per-column filters, and highlighted columns.
- EXPLAIN tree — the Explain page renders the query plan as an interactive tree. Five explain modes (Plan, Pipeline, AST, Syntax, Estimate).
- Request Info dialog redesigned with formatted SQL and metadata badges.
Table/card layout for all data pages
Every data table now has a card grid view alongside the standard table view. Toggle between them per page; cards default on narrow screens.
- Rolled out across all 54 query-config pages (tables, merges, replication, system, diagnostics, keeper, and more).
- Rich expandable rows for SQL, metadata, and related actions inline.
- Mobile layout uses SQL-hero cards.
New monitoring views
Added from ClickHouse system tables:
- Kafka consumers —
system.kafka_consumersat/kafka-consumers. - Part log —
system.part_logredesigned with lifecycle charts, KPIs, and a filterable events table. - Query metric log —
system.query_metric_logat/query-metric-log. - User processes —
system.user_processeswith formatted badges and memory bars. - Moves —
system.movesat/moves. - Dropped tables —
system.dropped_tablesat/dropped-tables. - Warnings —
system.warningsat/warnings. - Replicated fetches —
system.replicated_fetchesat/replicated-fetches. - Replicated MergeTree settings — at
/replicated-merge-tree-settings.
AI agent improvements
- Conversation titles auto-generated from the first message.
- Findings — the agent records and lists persistent findings across sessions.
- Workflow harness — dynamic workflow templates for multi-step analysis (incident-investigation, health-check, query-optimization, capacity-planning, replication-triage, migration-safety).
- Multi-provider LLM config (
LLM_API_KEY,LLM_API_BASE,LLM_MODEL) plus a redesigned chat UI with model selector.
MCP server improvements
- Clerk OAuth login/consent flow for MCP clients — authenticate with a browser OAuth flow instead of a
chm_key. - In-process MCP route in the TanStack app; no separate worker required.
Deployment
- Helm chart — production-ready Helm chart in
deploy/helm/alongside kustomize bases. - Health alerting — cron-based health sweep runs automatically and can post alerts to Slack or Discord.
- CSV export — export any chart card’s data to CSV.
- Auto-refresh interval persisted to localStorage across reloads.
- Time range persisted to localStorage and synced to the URL.
Breaking changes
See Migrate to v0.3 for upgrade steps. The only required action for most self-hosters is a redeploy. The NEXT_PUBLIC_* → VITE_* rename is optional — old names still work.