Open-source Semantic Layer analytics for cubes — drag-and-drop in the browser, SQL through Mondrian + Calcite, and a typed REST surface so AI agents can query without ever seeing MDX.
saiku.bi · Live demo · Issues · Discussions
docker run -d -p 8080:8080 --name saiku ghcr.io/spiculedata/saikuThen open http://localhost:8080/ui/ and log in with admin / admin. The
container ships with a self-contained H2 + FoodMart demo cube — drag fields
onto rows, columns, or filters and the SPA writes MDX for you.
A hosted instance is always live at https://demo.saiku.bi (auto-reset nightly).
Saiku started in 2010 as an open-source OLAP browser for Mondrian. In 2026 it was rebuilt as a modern Semantic Layer on top of:
- Mondrian 4.8.1.x (Spicule fork) — with a Calcite-based SQL planner
alongside the legacy
SqlQuerybuilder. Calcite is the default; force legacy with-Dmondrian.backend=legacy. - Apache Arrow wire format for cellsets, so the browser and any programmatic consumer share a zero-copy result envelope.
- Jetty 12 EE10 + Jersey 3.1 + Spring 6 + Spring Security 6.5 in a single-JAR Picocli launcher.
- SvelteKit 5 + Vite for the SPA (separate repo, served from inside
the same JAR at
/ui/).
Saiku 4.x exposes a typed REST surface — /rest/saiku/api/ai/* — designed
for LLM agents. Hierarchies, levels, measures and synonyms are discoverable
via /ai/cubes and /ai/schema, and a single POST /ai/query translates
a JSON description of a question into validated MDX, runs it, and returns
typed {value, formatted, unit} cells. Every validation failure carries
a {status, field, available} envelope so an agent can self-correct
without scraping logs.
The container also bundles saiku-mcp, a stdio
Model Context Protocol wrapper so Claude
Desktop / Cursor / Cline can wire to a running Saiku with one line of
config:
{
"command": "docker",
"args": ["exec", "-i", "saiku", "saiku-mcp"]
}See docs/AI-QUERY-API.md and
docs/schema-annotations.md for the typed
contract and the saiku.semantic.* annotation namespace cubes use to
describe themselves to agents.
JDK 21 + Maven 3.9+ required.
# Compile, unit tests, Spotless format check (CI gate):
mvn verify
# Build the runnable fat-JAR:
mvn -pl saiku-launcher -am -Dmaven.test.skip=true package
# Run:
java -jar saiku-launcher/target/saiku-*.jar serve --port 8080 --home ./saiku-homeWhole-API integration tests (boots Jetty + the launcher's WAR in-process against the seeded FoodMart H2 datasource):
mvn verify -P integrationSee CLAUDE.md for the full layout, the dependency catalog
(saiku-bom), and the GitHub Packages auth gotcha for local builds.
saiku-bom/ # central dependency-version catalogue
saiku-core/
saiku-olap-util/ # olap4j helpers
saiku-service/ # Semantic Layer service, AI Query, schema gen, async, cache
saiku-semantic/ # YAML semantic layer
saiku-web/ # JAX-RS REST resources
saiku-webapp/ # Servlet webapp (Spring XML wiring)
saiku-launcher/ # Picocli CLI + embedded Jetty serving the WAR
saiku-mcp/ # stdio JSON-RPC MCP wrapper
saiku-ui/ # SvelteKit SPA (independent versioning)
The SvelteKit SPA lives in saiku-ui/ and is built independently; the
launcher serves the static dist/ under /ui/.
- Bugs and feature requests: open an issue.
- Questions, ideas, walkthroughs: GitHub Discussions.
- Stack Overflow tag:
saiku. - Commercial support, hosted, training: hello@saiku.bi.
The old groups.google.com/a/saiku.meteorite.bi lists and ##saiku IRC
channel are no longer monitored.
See CONTRIBUTING.md. Short version:
feature/<name>branch offdevelopment— see the Gitflow note in CLAUDE.md.- Run
mvn spotless:applybefore committing (a pre-commit hook is available via./scripts/install-hooks.sh). - Tests live in
**/src/test/java/; integration tests insaiku-launcher/src/test/java/org/saiku/launcher/it/. - Open the PR against
development, notmain.mainis the release branch — only release/* and hotfix/* PRs go there.
Saiku is dual-licensed under Apache 2.0 and EPL 1.0. See
LICENSE.txt. A summary lives at
https://saiku.bi/#license.
The original Saiku project was started by Tom Barber and Paul Stoellberger in 2010 at Meteorite BI and now lives at Spicule. Contributors are listed on the GitHub contributors page.
For release notes see Releases.