← App store
Cube icon

Cube

Open-source semantic layer that turns your data warehouse into one consistent metrics API for BI, embedded analytics, and AI.

by Cube Dev

Get your box

Overview

Cube is a headless semantic layer that sits in front of a data warehouse you already run, such as Postgres, MySQL, ClickHouse, BigQuery, or Snowflake. Define your metrics, dimensions, and access rules once, in version-controlled data models, then serve them through a single consistent REST, GraphQL, and SQL API. Every dashboard, embedded chart, and AI agent that queries Cube gets the same definition of "revenue" or "active users."

Features

  • One consistent metrics API for dashboards, embedded analytics, and AI agents
  • REST, GraphQL, and SQL access to the same data models
  • Bundled Cube Store handles caching and pre-aggregations, so heavy queries stay fast without hammering your warehouse
  • Version-controlled, config-as-code data models

Setting up

Enter your warehouse connection (type, host, port, database, user, password) in this app's configuration form at install or later under settings. Data models are config-as-code, so write them by editing files under the app's data directory rather than through an in-app editor.

Cube's API is authenticated with a signing secret malmo generates for you. Find it in the app's settings to mint signed tokens for clients that query the API.

Good to know

Cube runs in production mode on malmo, the secure way to self-host it: the Developer Playground (Cube's in-browser data model builder) only works in development mode, which turns off API authentication, so malmo doesn't enable it. Cube here is an API service, not a browsable dashboard.

Warehouses with their own credential model, such as BigQuery service-account JSON or Snowflake account/warehouse variables, aren't covered by the configuration form yet. Host-based warehouses (Postgres, MySQL, ClickHouse, Redshift, Materialize) work fully.