Serving and enforcing are different jobs
| Dimension | What headless BI gives you | What it does not give you |
|---|---|---|
| Definition | One place to define a metric | A guarantee the query is built correctly |
| Delivery | An API any consumer can call | A permission model on that API |
| Reach | Dashboards, notebooks, apps, agents | Equal features when you self-host |
| Governance | Usually a runtime check | A check before the plan is built |
The first column is the pitch and it is real. The second column is where production deployments fail, and it is what this scorecard measures. Our comparisons and evaluations hub covers the architecture debate behind it.
The scorecard
Authentication and parity claims come from each vendor's own documentation. Directional, not lab numbers.
| Tool | Serves | Auth on the agent API | Governance timing | Self-hosted parity |
|---|---|---|---|---|
| Colrows | BI, apps, agents | Governed by the graph | Before execution | On-premise supported |
| Cube | BI, apps, agents | OAuth, Premium and above | At execution | Core open, MCP is cloud |
| dbt Semantic Layer | BI, notebooks, agents | Cloud-only APIs | At execution | MetricFlow open, APIs are not |
| GoodData | BI, apps, agents | Bearer token | At execution | Container option |
| Lightdash | BI, agents | Personal access token | At execution | No MCP when self-hosted |
| Malloy Publisher | Apps, agents | None by default | Network placement only | Full, and unauthenticated |
| AtScale | BI, Excel, apps | Enterprise SSO | At execution | Self-managed |
Fix the Context, Not the Model. A well-governed semantic layer that understands business context creates more reliable AI-driven analytics than fine-tuning the model itself. Serving that context over an API is the easy half. Deciding who may receive it is the half that decides whether you can ship.
The seven, by what they serve
1. Colrows - governed before the query exists
Colrows serves one compiled definition to BI tools, applications, and agents across 16 or more engines. The permission check runs at compile time, so the API cannot return a plan the caller was never allowed to request. Colrows supports on-premise deployment for estates that cannot send questions to a vendor cloud.
2. Cube - the reference headless implementation
Cube exposes REST, GraphQL, and a SQL API that speaks the Postgres wire protocol. That last detail is why so many BI tools connect to it without a custom driver. Cube Core is Apache 2.0 and free to self-host. Cube gates the MCP server, and its 23 documented tools, to Premium and Enterprise. The agent path is therefore not part of the open core.
3. dbt Semantic Layer - open definitions, closed serving
dbt Semantic Layer is the clearest example of the split. MetricFlow became Apache 2.0 in October 2025, so anyone can compile the definitions. The Service Layer and the GraphQL and JDBC APIs that actually serve them stay cloud-only. Self-hosting gives you the modelling, not the serving.
4. GoodData - API-first with a caching engine
GoodData serves 22 documented data sources through a REST API, React and Python SDKs, and an MCP server that reached general availability in January 2026. GoodData publishes rate limits for about twenty endpoints and withholds them for the rest. That gap matters when you size an agent workload.
5. Lightdash - dbt-native, with a cloud boundary
Lightdash builds its semantic layer directly from dbt YAML, which makes adoption cheap for dbt teams. Two boundaries matter before you commit. Lightdash offers the MCP server to cloud users and does not support it self-hosted. Its docs also warn that the permission model does not cover agent knowledge documents.
6. Malloy Publisher - powerful language, unguarded server
Malloy is a genuine modelling language with an active release cadence, now a Linux Foundation project rather than a Google one. Publisher is the part that serves models to agents, and its own documentation is candid. It ships with no authentication and binds all interfaces by default. Anyone who can reach the port can run queries through any configured connection. Treat it as an authoring tool behind a firewall rather than a governed serving layer.
7. AtScale - headless for the Excel estate
AtScale is headless in the sense that matters to large finance teams. It serves live aggregates to Excel over MDX as well as to BI over SQL, across 11 supported platforms. There is no public list price, and aggregate design is a services line.
Three questions to ask before you commit
Does the open-source version include the agent API? For most of this list the answer is no. The core is open and the serving layer or the MCP server is commercial, which changes the build-versus-buy maths entirely.
When does the permission check run? Every tool here except one checks at execution, after the query already exists. Compile-time enforcement is the difference between a blocked query and an impossible one. We set out that argument in governing AI agents that query enterprise data.
What happens under agent load? Vendors sized these APIs for dashboards refreshing on a schedule. An agent asking multi-step questions changes both the request pattern and the bill. We cover that in the semantic layer pricing comparison and agentic BI tools.
The limits that bite under agent load
Headless vendors publish generous-sounding row caps and then quietly withhold the number that matters. Three published limits are worth reading before you size anything.
- Cube caps the API at 100 requests per second per deployment and returns 429 above it. Its default query row limit is 50,000, and the Starter tier tops out at 50,000 queries a day.
- GoodData publishes limits for about twenty endpoints and states that the rest vary by region and capacity. You cannot size an agent workload against a number the vendor declines to give.
- Lightdash caps MCP SQL results at 500 rows by default, configurable to 5,000. Its embedded CSV export sits at a hardcoded 500 rows, and Lightdash closed the request to make that configurable as not planned.
None of these are unreasonable for dashboards. They become the binding constraint when one business question turns into twenty API calls, which is the pattern agentic BI tools describes.
Where the open core stops
Most of this category markets itself as open source. The open part is usually the modelling, and the part an agent needs is usually not.
| Tool | Open source | Commercial |
|---|---|---|
| Cube | Cube Core, Apache 2.0 | MCP server, Premium and above |
| dbt Semantic Layer | MetricFlow, Apache 2.0 | Service Layer and all serving APIs |
| Lightdash | Core, MIT | MCP server, cloud only |
| Malloy | Language and Publisher | Nothing, and no vendor either |
Malloy is the honest edge case. Everything is open, including the serving layer, and there is no commercial entity behind it. The project is active and the release cadence is fast. What you do not get is authentication, a support contract, or anyone to call.
How to choose
- Embedded analytics inside your own product: Cube, for the API breadth and the wire-protocol compatibility.
- A dbt team that wants BI without a second modelling language: Lightdash, if cloud hosting is acceptable.
- Excel is the real front end: AtScale.
- You need an open language and control the network: Malloy, placed carefully.
- Agents query regulated data: require compile-time governance and reproducible SQL first, then compare the rest.
A note on the claims
Authentication behaviour, plan gating, and self-hosted parity come from each vendor's own documentation as of late August 2026. Where a vendor states a limitation plainly, we quote the substance rather than paraphrase it. Preview and beta status in this category changes quickly. Colrows sells a competing product, and we wrote the sections above with that disclosed. We review this page quarterly.
Frequently asked questions
What is headless BI?
Headless BI separates metric definitions from the tool that displays them. The definitions live in one service, which serves them over an API to dashboards, notebooks, applications, and AI agents. Nothing renders a chart unless you ask it to. The point is that the definition outlives any one dashboard, and every consumer gets the same number.
What is the difference between headless BI and a semantic layer?
A semantic layer is the set of definitions. Headless BI is the delivery model that serves those definitions over an API instead of rendering its own dashboards. Every headless BI product contains a semantic layer. A semantic layer can also sit inside a warehouse or a BI tool, where only that platform reads it.
Is headless BI secure by default?
Not necessarily, and the difference between tools is large. Malloy Publisher documents that it ships with no authentication and binds all interfaces by default. Governance then depends entirely on where you place it on the network. Lightdash warns that agent knowledge documents are not covered by its permission model. Ask each vendor when the permission check runs, not whether permissions exist.
Can I self-host headless BI and still get the agent features?
Often not. Lightdash makes its MCP server available to cloud users and does not support it self-hosted. Cube gates its MCP server to Premium and Enterprise plans. dbt keeps MetricFlow open under Apache 2.0 but keeps the serving APIs cloud-only. If self-hosting matters, confirm agent-feature parity before you choose, because the open-source core rarely includes the agent surface.

