Go to file
Brandon Thomas 488e12de31 Rename SheetCraft to GridCraft everywhere (crates, apps, bundle ids, packaging, docs)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 01:39:08 -04:00
.cargo M13: web app (WASM via trunk), async file open, ROADMAP with parity estimates, parity report, xtask alias 2026-10-06 00:13:02 -04:00
.github/workflows Rename SheetCraft to GridCraft everywhere (crates, apps, bundle ids, packaging, docs) 2026-10-06 01:39:08 -04:00
apps Rename SheetCraft to GridCraft everywhere (crates, apps, bundle ids, packaging, docs) 2026-10-06 01:39:08 -04:00
assets/app-icon Rename SheetCraft to GridCraft everywhere (crates, apps, bundle ids, packaging, docs) 2026-10-06 01:39:08 -04:00
crates Rename SheetCraft to GridCraft everywhere (crates, apps, bundle ids, packaging, docs) 2026-10-06 01:39:08 -04:00
docs Rename SheetCraft to GridCraft everywhere (crates, apps, bundle ids, packaging, docs) 2026-10-06 01:39:08 -04:00
packaging Rename SheetCraft to GridCraft everywhere (crates, apps, bundle ids, packaging, docs) 2026-10-06 01:39:08 -04:00
xtask Rename SheetCraft to GridCraft everywhere (crates, apps, bundle ids, packaging, docs) 2026-10-06 01:39:08 -04:00
.gitignore M0: foundation — core, numfmt, formula, functions (478), model, calc, xlsx/csv, engine 2026-10-05 23:18:10 -04:00
AGENTS.md Rename SheetCraft to GridCraft everywhere (crates, apps, bundle ids, packaging, docs) 2026-10-06 01:39:08 -04:00
ATTRIBUTION.md Rename SheetCraft to GridCraft everywhere (crates, apps, bundle ids, packaging, docs) 2026-10-06 01:39:08 -04:00
CLAUDE.md Rename SheetCraft to GridCraft everywhere (crates, apps, bundle ids, packaging, docs) 2026-10-06 01:39:08 -04:00
Cargo.lock Rename SheetCraft to GridCraft everywhere (crates, apps, bundle ids, packaging, docs) 2026-10-06 01:39:08 -04:00
Cargo.toml Rename SheetCraft to GridCraft everywhere (crates, apps, bundle ids, packaging, docs) 2026-10-06 01:39:08 -04:00
LICENSE-APACHE M0: foundation — core, numfmt, formula, functions (478), model, calc, xlsx/csv, engine 2026-10-05 23:18:10 -04:00
LICENSE-MIT Rename SheetCraft to GridCraft everywhere (crates, apps, bundle ids, packaging, docs) 2026-10-06 01:39:08 -04:00
NOTICE Rename SheetCraft to GridCraft everywhere (crates, apps, bundle ids, packaging, docs) 2026-10-06 01:39:08 -04:00
README.md Rename SheetCraft to GridCraft everywhere (crates, apps, bundle ids, packaging, docs) 2026-10-06 01:39:08 -04:00
ROADMAP.md Rename SheetCraft to GridCraft everywhere (crates, apps, bundle ids, packaging, docs) 2026-10-06 01:39:08 -04:00
clippy.toml M0: foundation — core, numfmt, formula, functions (478), model, calc, xlsx/csv, engine 2026-10-05 23:18:10 -04:00
rustfmt.toml M0: foundation — core, numfmt, formula, functions (478), model, calc, xlsx/csv, engine 2026-10-05 23:18:10 -04:00

README.md

ArtCraft

GridCraft

Spreadsheets and data; an open-source, clean-room reimplementation of Microsoft Excel, rebuilt in pure Rust.

A fast, open-source, clean-room take on the Excel workflow. It runs natively on macOS, Windows, Linux and BSD, and in the browser via WebAssembly.
By the ArtCraft team.

Written in Rust Runs on macOS, Windows, Linux, BSD and the web License: MIT OR Apache-2.0 Agent-drivable over MCP

Join the ArtCraft community on Discord

GridCraft on getartcraft.com · ArtCraft · All Crafting Apps


GridCraft showing a quarterly sales dashboard: a styled table with banded rows, filter buttons, a totals row, data bars, arrow icons and sparklines, next to a clustered column chart and a pie chart
Quarterly Sales Dashboard: a table with a totals row, conditional formatting, sparklines and two live charts — built entirely from GridCraft commands (File → New → Sample).

[!NOTE] ArtCraft is a community of artists from all walks of life. Painters, photographers, filmmakers, illustrators, designers, animators, hobbyists, and people who picked up a pencil last week. If you make things, you're one of us. Come say hi on Discord.

A look around · Why GridCraft · Quick start · For agents · Architecture · Roadmap · The Crafting Apps · License and credits

A look around

A household budget with accounting number formats, red highlights for overspent categories, a green-yellow-red colour scale on the percent-used column, a totals row with a double border, and a horizontal bar chart comparing budget with actual

Formatting. Accounting formats, cell styles, conditional rules and colour scales, frozen headers and a bar chart.

A gradebook table with averages and letter grades computed with IFS, green highlights on A grades and data bars, with the Formulas ribbon tab open showing the function library

Formulas. 500+ functions, dynamic arrays, LET and LAMBDA, structured table references.

The sales dashboard in dark mode with the Insert ribbon tab open, showing PivotTable, Table, Pictures, Shapes, chart, sparkline, link, comment, text box and symbol buttons

Dark mode and the Insert tab: tables, charts, sparklines, pictures, shapes, links and comments.

Close-up of the sales dashboard

Charts. Column, bar, line, area, pie, doughnut, scatter, bubble, radar, histogram, waterfall, funnel, treemap, sunburst, box & whisker, stock and combo.

Why GridCraft

  • Familiar. Excel's ribbon, formula bar, Name Box, sheet tabs, keyboard shortcuts, fill handle, point-mode formula entry with coloured references, Format Cells, Paste Special, conditional formatting, tables, charts and more. If you know Excel, you already know GridCraft.
  • Compatible. XLSX is the native format: styles, themes, formulas (including dynamic arrays), tables, conditional formats, validation, comments, hyperlinks, charts, pictures, sparklines and print settings round-trip. CSV and TSV too.
  • Capable. A dependency-graph calculation engine with dynamic arrays and spilling, 478 worksheet functions plus LET, LAMBDA, MAP, REDUCE, SCAN, BYROW, BYCOL and MAKEARRAY, structured table references, Excel's full number-format language, sort and AutoFilter, Flash Fill, data validation, outlining and subtotals.
  • Fast. Copy-on-write workbooks (undo snapshots are nearly free), incremental recalculation, and a virtualised grid that only lays out what's on screen.
  • Agent-native. Every ribbon button, menu item, dialog, keystroke and mouse gesture is a command that agents can run over a JSON control channel, an MCP server, or the CLI.
  • Everywhere. One Rust codebase for desktop and the web. No subscription, no licence server, no telemetry.

Quick start

cargo run --release -p gridcraft                              # desktop app
cargo run --release -p gridcraft -- --sample sales            # open a sample (sales, budget, grades)
cargo run --release -p gridcraft -- book.xlsx                 # open a workbook
cargo run --release -p gridcraft -- --sample sales --control 7979   # + JSON control channel
cargo xtask ci                                                 # fmt, clippy, tests, assets, layering, wasm

Web

cd apps/gridcraft-web && trunk build --release     # → dist/web (serve it with any static server)
cd apps/gridcraft-web && trunk serve --release     # http://127.0.0.1:8771  (?sample=sales opens a sample)

You need trunk and the wasm32-unknown-unknown target. Open uses the browser's file picker (dropping files works too) and Save downloads the workbook.

For agents: MCP, CLI and the control channel

claude mcp add gridcraft -- gridcraft-cli mcp                 # headless MCP server
gridcraft-cli mcp --connect 7979                               # MCP bridged to a running window
gridcraft-cli eval '=XLOOKUP("b",{"a","b"},{1,2})'             # → 2
gridcraft-cli run --sample budget --cmd 'home.bold={"range":"B4:F4"}' --out budget.xlsx
gridcraft-cli cat budget.xlsx --range B4:F15                   # aligned text table
gridcraft-cli commands --search chart                          # every command and its params

The MCP server offers tools such as read_range, write_range, set_cell, evaluate_formula, format_range, insert_chart, create_table, sort_range, filter and execute_command (which reaches every one of GridCraft's commands). The desktop app's control channel adds real pointer and keyboard input, dialogs and screenshots. See docs/mcp.md, docs/cli.md and docs/control-protocol.md.

Architecture

GridCraft is an engine-first Cargo workspace with enforced layering (cargo xtask layers). The egui frontend is a separate crate, so the UI can be swapped without touching the engine.

Layer Crates
L0 core (addresses, values, errors, dates, input parsing) · numfmt (number format codes)
L1 formula (lexer, parser, printer, reference adjustment) · functions (worksheet function library)
L2 model (workbook, sheets, copy-on-write cells, styles, tables, charts…) · calc (dependency graph, evaluator, dynamic arrays) · xlsx (XLSX and CSV)
L3 chart (toolkit-free chart layout and rendering)
L5 engine (session, commands, history, clipboard, fill, sort, filter, file I/O)
L6 ui-egui (Excel-style UI, control channel) · mcp (MCP server)
L7 apps/gridcraft, apps/gridcraft-cli, apps/gridcraft-web
  • Contributor and agent rules (clean-room, asset policy, never-crash, quality gates): AGENTS.md
  • Bundled assets: each one is listed with its licence in ATTRIBUTION.md
  • Releases: signed macOS, Windows, Linux, BSD and web builds; see docs/releasing.md

Roadmap

GridCraft is pre-alpha and moving fast. Today it covers 60% of Excel's ribbon and menu commands (docs/parity.md) and about 93% of its worksheet functions. PivotTables, printing and PDF, page layout view, deeper chart formatting and scripting come next. The plan and estimates are in ROADMAP.md.

The Crafting Apps

GridCraft is one of the Crafting Apps: free, open-source creative tools from the ArtCraft team, each written from scratch in Rust and each able to stand on its own.

App What it's for Code Learn more
PhotoCraft Image editing: layers, masks, type and real PSD files GitHub Website
VectorCraft Vector illustration GitHub Website
FilmCraft Video editing, color and sound GitHub Website
LightCraft Photo library and raw development GitHub Website
PrintCraft Reading, organizing and protecting PDFs GitHub Website
EffectCraft Motion graphics and visual effects GitHub Website
DesignCraft Page layout and publishing GitHub Website
GridCraft Spreadsheets and data · you are here GitHub Website

And ArtCraft itself, our AI image and video studio for artists who want real control.


Join the ArtCraft community on Discord

Come make things with us

Our Discord is where artists of every kind hang out: people who paint, shoot, draw, cut film, set type, and people still figuring out what they like to make. Share what you're working on, ask for help, tell us what's broken, or tell us what you wish these tools could do. Whatever your medium and however long you've been at it, you're welcome here.

discord.gg/artcraft · getartcraft.com · The Crafting Apps · GridCraft

License and credits

GridCraft is dual-licensed under MIT or Apache-2.0, at your option. Copyright (c) 2026 ArtCraft Team and the GridCraft contributors. Required notices are in NOTICE.

Bundled fonts, icons, images and other assets keep their own open licenses; each one is listed with its author, source and license in ATTRIBUTION.md.

All UI icons are drawn in code and are original; the sample workbooks and every screenshot in this README were made with GridCraft itself. GridCraft bundles no fonts: it uses the fonts installed on your system.

The ArtCraft name, wordmark and logos in docs/brand/ are trademarks of the ArtCraft Team and are not covered by this license. They may be used only unmodified, and only as part of this repository and GridCraft, under docs/brand/LICENSE-brand.txt. Forks and modified versions must remove them.

Microsoft, Excel and Microsoft 365 are trademarks or registered trademarks of Microsoft Corporation in the United States and/or other countries. GridCraft is an independent, open-source project and is not affiliated with, sponsored by or endorsed by Microsoft Corporation; these names are used only to describe the workflows it is compatible with.


ArtCraft
Made by the ArtCraft team and community.