Skip to content
Projects

Jxck-S/dashcraft has 29 GitHub stars and 2 forks. GitHot measured +1 stars in 24 hours. Last checked 2026-11-15 05:50 UTC. Last push 2026-11-12.

How these counts are measured

29 stars2 Forks +1 in 24h

What you can do

  • Interact with the report. Slicers, cross-filtering per the report's interactions, tooltips, Back and page-navigation buttons, and "View as" a role to check row-level security. - See the data. M queries refresh offline, PBIX data decodes from VertiPaq, and a virtualized grid sorts, filters with SQL and exports to CSV or Parquet.
  • Understand the model. Tables, relationships, measures, calculation groups, roles and descriptions, as a diagram and as a tree, with a 17-rule broken-reference linter. - Query with DAX. 299 DAX functions with filter and row context, calculation groups and many-to-many relationships; run EVALUATE queries in the DAX query view.
  • PBIP projects (TMDL or model.bim; PBIR or PBIR-Legacy) - Model, data through M refresh or .pbi/cache.abf, every report page
  • PBIX and PBIT files - Model, embedded VertiPaq data (PBIX), every report page

Measured star growth

in 24h
+1
in 7 days
Collecting history
in 15 days
Collecting history
in 1 month
Collecting history

Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.

About

DashCraft: BI dashboards and data models; an open-source, clean-room Power BI file explorer and report renderer, written from scratch in Rust. Open PBIX, PBIP, PBIT, TMDL and model.bim offline on macOS, Windows and Linux. No Power BI Desktop, no VM, no cloud login.

Developer Tools

README.md

Original

DashCraft icon: a bar chart with a trend line on a teal tile

DashCraft

Open Power BI files anywhere, offline, in a native app and CLI written in Rust.
PBIP, PBIX and PBIT reports with their data, DAX and Power Query M engines, and interactive report pages,
on macOS, Windows and Linux. No Power BI Desktop, no Windows VM, no sign-in.

CI Rust macOS · Windows · Linux License: MIT OR Apache-2.0 Status: viewer, early editing


DashCraft showing the Executive Summary page of the synthetic Acme Outfitters report: Year and Region slicers, KPI cards, sales against target, a monthly trend against last year, sales by category, channel and region, and the Data pane with row counts
The Executive Summary page of the synthetic Acme Outfitters example, rendered and evaluated entirely by DashCraft.

Features · Agents · Under the hood · Get started · Status · Documentation


Familiar layout

The ribbon, view rail, Filters, Visualizations and Data panes and page tabs sit where Power BI Desktop puts them. Commands DashCraft can't run yet are shown, disabled.

Real engines

Its own DAX and Power Query M engines, a clean-room VertiPaq decoder and an Arrow + DataFusion storage engine load and evaluate the model offline.

Interactive reports

Slicers, cross-filtering, tooltips, scrolling tables and expandable matrices, drawn by built-in Rust visuals with bundled fonts, identically on every OS.

Agent-ready

Every capability is a typed command, so the app, the CLI, a JSON-RPC server and an MCP server for AI agents all run the same code.

Features

Every screenshot is the real app on the synthetic Acme Outfitters example in this repository.

The Store Performance page with the West region selected: clicking Seattle Flagship in the stores table cross-filters the cards and charts and shows its tooltip
Interact with the report. Slicers, cross-filtering per the report's interactions, tooltips, Back and page-navigation buttons, and "View as" a role to check row-level security.
Table view of the Orders table, 3,900 rows, with the SQL filter bar above the grid
See the data. M queries refresh offline, PBIX data decodes from VertiPaq, and a virtualized grid sorts, filters with SQL and exports to CSV or Parquet.
Model view diagram of the 11 Acme Outfitters tables and their 8 relationships
Understand the model. Tables, relationships, measures, calculation groups, roles and descriptions, as a diagram and as a tree, with a 17-rule broken-reference linter.
DAX query view: a SUMMARIZECOLUMNS query of total sales, order count and margin by region, and its five-row result
Query with DAX. 299 DAX functions with filter and row context, calculation groups and many-to-many relationships; run EVALUATE queries in the DAX query view.

Opens Notes
PBIP projects (TMDL or model.bim; PBIR or PBIR-Legacy) Model, data through M refresh or .pbi/cache.abf, every report page
PBIX and PBIT files Model, embedded VertiPaq data (PBIX), every report page
.bim, TMDL folders, .abf, Power Pivot workbooks, .vpax, .pq/.pqt, dataflows, .rdl, .pbids Model, data or outline, depending on the format

Everything else, from the per-visual support matrix to the DAX and M coverage, is in docs/FEATURES.md; the full format matrix is in FORMATS.md.

Built for agents

Every capability is a command in one registry (doc.open, measures.values, dax.query, render.page, security.viewAs, …) with JSON Schemas for its parameters and results. The CLI, the app, a JSON-RPC server and an MCP server are thin adapters over it.

# Every measure's value on a report, as JSON
dashcraft run measures.values --doc model.pbip -p report=Overview

# Render every page of a report to PNG
dashcraft render report.pbix --all-pages --out-dir pages/

# The command catalog with its schemas
dashcraft commands --json --schemas

# Let an AI agent use DashCraft over MCP, confined to read and write roots
dashcraft mcp --read-root ./reports

# DAX, M and TMDL help in your editor (Language Server Protocol)
dashcraft lsp --model model.pbip

AI features are opt-in and off by default: with AI off, DashCraft makes no network requests at all (docs/AI.md). The MCP server is described in docs/MCP.md, every CLI flag in docs/CLI.md.

Under the hood

  • Pipeline: containers → format readers → a TOM-like model → session (M refresh, VertiPaq decoding, DAX) → visual queries → Power BI-shaped DataViews → visuals → scene graph → SVG and PNG (docs/ARCHITECTURE.md).
  • Layered crates: 15 crates, layering enforced in CI by cargo xtask layers; UI-toolkit crates stay in the app, network crates in the opt-in AI layer.
  • Built to edit: lossless TMDL, TMSL and PBIR readers and writers and undoable document commands, the groundwork for Power BI Desktop-style editing.
  • Untrusted input: parsers never panic, unsafe is denied, archives are capped and guarded against zip-slip, 17 fuzz targets run nightly, and embedded scripts and custom visuals are never executed (docs/SECURITY.md).
  • Deterministic and fast: bundled fonts only, the same bytes on every OS; performance budgets checked by cargo xtask perf (docs/perf.md).
  • Clean-room: implemented from public documentation and observed behaviour, with no Microsoft code, icons or assets (ADR-0003).

Get started

git clone https://github.com/Jxck-S/dashcraft
cd dashcraft
cargo build --release -p dashcraft-cli                     # the dashcraft CLI
target/release/dashcraft inspect path/to/report.pbix

cd app && npm install
npm run tauri dev -- -- path/to/report.pbix              # the desktop app

Try it on the example in this repository: open reference/examples/acme-outfitters/AcmeOutfitters.pbip with DASHCRAFT_BLOB_MAP=reference/examples/acme-outfitters/blob-map.json set, so its data loads offline. Prerequisites, every build and test command and the test-data rules: docs/DEVELOPMENT.md. Using the app and the CLI: docs/USER-GUIDE.md. Contributors and AI agents: start with AGENTS.md.

Installers for macOS, Windows and Linux are built by the release workflow (docs/packaging.md); they are unsigned until signing certificates exist.

Status

[!IMPORTANT] DashCraft is mainly a viewer today. It opens, refreshes, queries and renders Power BI files, and makes a first set of undoable edits (tables, columns, measures, relationships, renames, descriptions, visual position and size) that it saves back to PBIP projects; report authoring, the modeling editors and Power Query editing are not there yet. The goal is a full Rust reimplementation of Power BI Desktop.

  • Released: v0.1.0 (Data Explorer), v0.2.0 (Report Renderer, remaining formats, installers) and v0.3.0 (editing and save, language services and the formula bar, recovery and external changes, reading-view parity); later work is in main under [Unreleased] in the CHANGELOG.
  • Where it stands: each area is scored 0–5 against Power BI Desktop in docs/GAPS.md. The viewer scores 3–5; editing, modeling and Power Query, 0–1.
  • Where it is going: milestones M6 to M31, from editable documents to 1.0, in docs/DESKTOP-PLAN.md; releases, acceptance criteria and the next items in docs/ROADMAP.md.

Documentation

Using DashCraft User guide · Features · CLI · Commands · MCP · AI
Support matrices Formats · Visuals · DAX functions · Lint rules
Project Roadmap · Desktop plan · Gaps · Changelog · Dev log
Contributing AGENTS.md · Development · Architecture · Decisions · Performance · CI · Packaging · Security
App and data App · Desktop UI reference · Test fixtures · VertiPaq notes

License and notices

DashCraft is open source under either the MIT License or the Apache License, Version 2.0, at your option. Bundled assets: the Selawik and Carlito fonts (SIL OFL 1.1, unmodified) and Fluent UI System Icons (MIT); no Power BI icons, images or CSS. The XPress9, ABF and VertiPaq decoders are clean-room implementations; shipping PBIX data decoding in a release needs the legal review recorded in ADR-0003. Third-party attributions: THIRD_PARTY_NOTICES.md.

DashCraft is an independent project, not affiliated with, endorsed or sponsored by Microsoft. "Power BI" and "Microsoft" are trademarks of Microsoft, used only to say which files DashCraft opens. It is not affiliated with storytold/ArtCraft or with other products named "DashCraft". See NOTICE and ADR-0009.