Power BI Alternative: Open-Source Analytics for B2B Products

Looking for a Power BI alternative with open-source licensing, multi-tenancy, and AI agent support? Bonnard is the semantic layer built for shipping analytics to customers.

8 min read

Power BI is built for internal business intelligence. Connect to data, build reports, share with your team. It does this well, especially in Microsoft shops. But if you're building a B2B product that ships analytics to customers, Power BI becomes the wrong tool: expensive embedded licensing, limited multi-tenancy, locked to the Microsoft ecosystem, and no support for AI agents.

Bonnard takes a different approach. Instead of a BI tool with embedding bolted on, it's a governed analytics layer designed for B2B products. Define metrics once in YAML, ship them to your customers via React SDK, MCP for AI agents, REST API, markdown dashboards, or TypeScript SDK. Multi-tenancy and row-level security from bon init.

Bonnard vs Power BI at a glance

Feature Power BI Bonnard
Primary use case Internal BI and reporting Customer-facing analytics for B2B
Semantic layer DAX measures (locked to Power BI) YAML cubes + views (open, portable)
AI agent support Copilot (internal only) MCP server with publishable keys per tenant
Multi-tenancy Row-level security (complex setup) Built-in (security context, publishable keys)
Embedded analytics Power BI Embedded (capacity-based pricing) React SDK (Apache 2.0, free)
Dashboards Power BI Desktop / Service Markdown dashboards, CLI-deployed
SDKs JavaScript embed SDK React, TypeScript, REST, SQL
Pre-aggregation / caching Import mode or aggregations Built-in pre-aggregation cache
Metric governance DAX in .pbix files YAML in Git with PR reviews
RBAC Azure AD integration Built-in security context
Self-host pricing Not available (cloud only) Free (Apache 2.0, all features)
License Proprietary (Microsoft) Apache 2.0 (server), MIT (CLI)
Ecosystem lock-in Microsoft (Azure, Teams, Excel) Warehouse-agnostic, tool-agnostic

Where Power BI falls short for B2B products

Embedded pricing is complex and expensive

Power BI Embedded uses capacity-based pricing. You buy a fixed amount of compute (A/EM/P SKUs), and your embedded analytics runs on that capacity. If your customers generate more load than the capacity handles, performance degrades. Scale up means paying for a higher SKU.

The pricing model wasn't designed for multi-tenant B2B products with unpredictable per-tenant usage patterns. One customer running a heavy report can affect all other customers sharing the same capacity. You end up over-provisioning to avoid this, which means paying for capacity you don't use.

With Bonnard, the React SDK queries the semantic layer directly. Pre-aggregation caching handles performance. There's no capacity SKU. Self-host for free or use Cloud with usage-based pricing that scales with actual queries, not reserved compute.

The Microsoft ecosystem lock-in

Power BI's strength is Microsoft integration: Azure AD for auth, Excel for exports, Teams for sharing, SharePoint for embedding. If you're a Microsoft shop, this is convenient.

If you're not, it's friction. Your B2B product probably doesn't run on Azure. Your customers probably don't have Azure AD. Your frontend is React, not SharePoint. Every integration point between Power BI and your non-Microsoft stack is custom work.

Bonnard is warehouse-agnostic (Snowflake, BigQuery, PostgreSQL (including Supabase, Neon, and RDS), Databricks, Redshift, DuckDB (including MotherDuck)) and tool-agnostic. The React SDK works in any React app. The REST API works with any HTTP client. MCP works with any compatible AI agent.

Semantic layer is locked to Power BI

Power BI's DAX measures are its semantic layer. You define calculations in DAX, and they're available within Power BI. But DAX measures don't leave Power BI. Your React app can't query them. Your AI agent can't discover them. Your REST API returns raw data, not governed metrics.

With Bonnard, the semantic layer is standalone infrastructure. Metrics defined in YAML are served to every consumer: dashboards, React components, AI agents, APIs, TypeScript SDK. The semantic layer isn't embedded in a tool. It is the tool.

Multi-tenancy requires Azure expertise

Power BI supports row-level security (RLS), but setting it up for multi-tenant embedded scenarios requires:

  1. Azure AD app registration
  2. Service principal configuration
  3. DAX-based RLS rules
  4. Token generation per tenant via the Power BI REST API
  5. Embed token management and refresh logic

It works, but it's complex. Many teams spend weeks getting multi-tenant embedding right with Power BI. And the RLS is DAX-based, tied to the Power BI semantic model.

Bonnard's multi-tenancy is structural. Add a security context to your YAML schema. Create a publishable key per tenant in Settings > API Keys in the Bonnard dashboard. Done. Every query through that key is automatically scoped. No Azure AD, no service principals, no embed token management.

No AI agent support

Power BI has Copilot, which lets internal users ask natural language questions about their reports. It's useful for internal BI. But Copilot doesn't work with external AI agents. Your customers can't connect Claude, Cursor, or their own tools to Power BI data.

Bonnard's MCP server lets any MCP-compatible AI agent discover and query governed metrics. Generate a publishable key per customer, share the MCP connection config, and their agents get scoped access to their data.

No self-hosting option

Power BI is cloud-only (Power BI Service). There's no self-hosted option. For organizations with data residency requirements, compliance constraints, or a preference for infrastructure they control, this is a blocker.

Bonnard self-hosts under Apache 2.0 with all features included. Install with npm install -g @bonnard/cli and run npx @bonnard/cli init --self-hosted followed by docker compose up -d to get started. Run it in your VPC, your data center, or your preferred infrastructure.

How Bonnard differs

One schema, every surface

Define total_revenue in YAML. Query it from an AI agent via MCP, render it in a React BarChart, display it on a markdown dashboard, or fetch it from the TypeScript SDK. Same number everywhere. The semantic layer serves all consumers, not just one tool.

Customer-facing from day one

Publishable keys per tenant. MCP configs per customer. Row-level security on every query. Built for shipping analytics to your B2B customers, not just your internal team.

Open source, all features

Apache 2.0. Self-host for free. MCP, React SDK, multi-tenancy, pre-aggregation, RBAC, admin UI, CLI. No feature gating. No enterprise license for embedding.

Full CLI workflow

bon init scaffolds your project and generates agent configs for Claude Code, Cursor, and Codex. bon deploy pushes schema and dashboards. bon diff previews changes before deploying. bon schema explores deployed measures and dimensions. bon pull downloads deployed models to your local project. bon mcp outputs MCP connection configs for your agents. bon docs browses documentation from the CLI. Ship from the terminal, review metric changes in pull requests, roll back with git revert.

Who should stay with Power BI

Power BI is the right tool if:

  • You're in the Microsoft ecosystem (Azure, Teams, Excel, SharePoint)
  • Internal business intelligence is the primary use case
  • Your users need drag-and-drop report building and ad-hoc exploration
  • You don't need to embed analytics in a product or serve AI agents
  • Data residency in Azure regions meets your requirements

If you're evaluating other tools alongside Power BI, see our comparisons with Metabase, Looker, Tableau, and dbt Metrics.

FAQ

Is Bonnard free to self-host?

Yes. Apache 2.0 with all features. Install with npm install -g @bonnard/cli and run npx @bonnard/cli init --self-hosted followed by docker compose up -d to get started. For Cloud, use bon init instead.

Can I migrate from Power BI?

Bonnard isn't a drop-in replacement for Power BI's report builder. It's a semantic layer that governs metrics and serves them to multiple surfaces. If you're looking to add governed metrics, multi-tenancy, or AI agent support alongside or instead of Power BI, Bonnard handles that. Your DAX measure logic translates into YAML cube definitions.

Does Bonnard have a visual report builder?

No. Bonnard focuses on governed metric serving. The React SDK provides chart components. The admin UI provides schema browsing and testing. For ad-hoc visual exploration, AI agents become the query interface.

What about Power BI's natural language Q&A?

Power BI's Q&A lets users ask questions in English and get visualizations. It's text-to-SQL with a DAX layer. Bonnard's approach is different: agents query governed metric definitions via MCP, not generated SQL. The results are deterministic and auditable. See text-to-SQL vs semantic layer for why this matters.

Analytics your customers can query.

Governed metrics, multi-tenant access control, and MCP for AI agents. Self-host free or use Bonnard Cloud.