The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the DataRaum listing page.
The understanding layer that grounds an organization's operating model in its own data.
A semantic layer tells BI tools what columns are called. DataRaum learns what they mean — the concepts, relationships, rules, and measures of the organization — and grounds each one in the actual data, with a measured confidence behind it. See the docs for the full picture.
Each package has its own README. Start there if you're working in a specific package.
DataRaum runs as a multi-container platform, isolated per workspace:
add_source, begin_session, operating_model) and writes metadata to the workspace's Postgres schema.Each workspace runs its own pair of those two containers. In front of them sit the portal (the cockpit image in a second role — login, membership routing, workspace provisioning) and Caddy, which serves the portal on the parent domain and each workspace on its own subdomain.
They share one substrate: Postgres (metadata + cockpit state + catalogs), an S3 object store (the DuckLake data lake + uploads), and Temporal (durable orchestration). No HTTP seam between engine and cockpit — the integration surface is Postgres + Temporal. See the platform architecture.
Caddy routes by hostname: the parent domain serves the portal (login + your workspaces),
and each workspace has its own subdomain (http://ws1.dataraum.localhost). localhost:3000
is published for debugging only — the session cookie is scoped to the parent domain, so a
browser there is redirected to the portal and a script gets 401.
The thing that bites on a first run: Caddy binds port 80. If something already holds it
(macOS ships Apache), up fails at container start and the portal never comes up — set
CADDY_HTTP_PORT and a matching DATARAUM_PORTAL_ORIGIN to move it. (*.localhost needs
no /etc/hosts entry.)
Compose defines exactly one workspace pair — bootstrap scaffolding, so a fresh install
has something to log into and something for the provisioner to clone. Every other workspace
is created from the portal (New workspace) or bun run workspace:create; compose does
not grow a service per workspace.
Full walkthrough, including troubleshooting: Running the stack.
For UI iteration, run the cockpit dev server outside docker for hot reload — see packages/cockpit/README.md.
The quick start above builds the engine and cockpit from source. To run the published release images instead — a deploy host, no build toolchain — layer the release overlay and name the version:
This pulls ghcr.io/dataraum/{dataraum, dataraum-cockpit, dataraum-cockpit-migrate} at
that tag. See Deployment for the images, schema/migration
handling, and the per-workspace topology.
cd packages/engine && uv sync --group dev && uv run pytest --testmon tests/unit -q. See packages/engine/README.md and packages/engine/CLAUDE.md.cd packages/cockpit && bun install && bun --bun run dev (the --bun flag is required). See packages/cockpit/README.md and packages/cockpit/CLAUDE.md.cd packages/cockpit && DATARAUM_WORKSPACE_ID=<id> METADATA_DATABASE_URL=<url> bun run db:pull:metadata. Re-run after the engine adds/changes SQLAlchemy models.Platform docs live in docs/ (workspace root) and are published via Zensical. Start at
docs/index.md, or serve the site locally:
Apache 2.0 — see LICENSE.