Natural-language monitoring dashboards. Describe what you want to see; a language model authors a validated visualization spec (SQL + chart config) — never the data itself — and Holotable executes the guarded SQL against TimescaleDB and streams the results live. Prometheus-compatible endpoints are sources too, with panels written in guarded PromQL, and so are Loki-compatible ones, in guarded LogQL.
Stack: Next.js 16 (App Router) · TypeScript · Tailwind v4 · Base UI · ECharts ·
TimescaleDB/PostgreSQL · Vercel AI SDK · Keycloak OIDC · Server-Sent Events. One
shared Zod IR (src/lib/ir.ts) is the contract between the model, the API,
persistence and the browser.
Try it in one container, with demo data and no sign-in (or open the public demo):
docker run -p 3000:3000 ghcr.io/jbouder/holotable:quickstartThen open http://localhost:3000. With Docker Compose instead (Keycloak, real
sign-in as demo / demo, your own .env):
cp .env.example .env # then set SESSION_SECRET, AI_MODEL and its key, and
# OIDC_CLIENT_SECRET=holotable-dev-secret (the local realm's)
docker compose up # --profile logs adds Loki and Alloy, for LogQLThe quick start covers both, Helm, and the development loop.
Everything is explained once, on the docs site
(https://holotable-docs.vibeproject.workers.dev, source in docs/):
- Your first dashboard — from an empty install to a live dashboard over your own database.
- How it works — a panel from prompt to live chart.
- Invariants — the guarantees the design rests on.
- Configuration — every environment variable, generated from
src/lib/config.ts. - Keycloak setup — the OIDC client and group mapper.
- API routes and Deploying on Kubernetes.
- Writing specs with Claude Code — the
/holotableskill in.claude/skills/holotable/writes, reviews and fixes dashboard specs from your terminal.
CONTRIBUTING.md— local setup, the checks CI runs, conventions, and the invariants a change must not break.SECURITY.md— the trust model, and how to report a vulnerability privately.- Licensed under the Apache License 2.0; see
NOTICE.
