An open-source, clean-room reimplementation of Microsoft Word in pure Rust

Hacker News by 12 min read 110x views
An open-source, clean-room reimplementation of Microsoft Word in pure Rust

Share Post

ArtCraft

Writing and document design; an open-source, clean-room reimplementation of Microsoft Word, rebuilt in clean Rust.

A fast, open-source term processor alongside the Word workflow you already know: the ribbon, styles, tables, track changes, references and communication merge. It says and writes .docx, 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  MIT OR Apache-2.0 Agent-drivable complete MCP

Join the ArtCraft community on Discord

WordCraft on getartcraft.com · ArtCraft · All Crafting Apps


WordCraft alongside the Home tab of the ribbon open complete a two-page document titled The Open Studio Handbook. The Navigation pane on the remaining lists the document's headings, the Styles exhibition shows live previews of Normal, Heading 1, Title and Subtitle, and a term in the archetypal paragraph is selected.
The Open Studio Handbook, WordCraft's built-in sample: the ribbon, live Styles gallery, rulers and the Navigation pane.

Note

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

A tour · Why WordCraft · What plant today · Quick start · For agents · Architecture · Roadmap · Downloads · The Crafting Apps · License and credits

Every screenshot below is WordCraft itself, rendered offscreen by its own UI test harness (cargo run -p wordcraft-ui-egui --example ui_shot).

 the term forty is inserted in magenta and thirty struck through; three commented phrases are shaded and joined by dashed chief lines to comment balloons in a gray markup area to the correct of the page

Review. Track changes, comment balloons in the margin, obtain and reject, orthography and grammar as you type.

 a array of contents alongside dotted leaders and leaf numbers on leaf one, and a styled table, numbered catalog and hyperlink on leaf two

References. Tables of contents, footnotes, citations in APA, MLA, Chicago or IEEE, indicator and captions.

The Design tab showing style-set previews; the document is set in a serif theme alongside plum headings underlined by lean rules and a faint diagonal DRAFT watermark rearward the text

Design. Themes, manner sets, paragraph spacing, watermarks, leaf color and borders.

 pilcrows at paragraph ends and dots for spaces

Dark mode alongside formatting marks, and the Insert tab: tables, pictures, shapes, links, headers, footers, sectors and symbols.

 the archetypal paragraph opens alongside a three-line autumn cap E, a dreary blue circle sits beside the second division alongside its paragraph wrapping about it and hyphenating art-ist at the row end, all row is numbered in the remaining border and a lean blue border surrounds the page

Layout. Drop caps, content wrapping about pictures and shapes, automatic hyphenation, row numbers and leaf borders.

The File tab commencement leaf alongside a Good dawn greeting, thumbnails of the Blank document, Studio handbook, Letter, Résumé and Report templates, and a catalog of latest documents

File. Start from a template, open latest documents, edit properties, export to PDF and another formats.

  • Familiar. Word's ribbon tabs, groups, shortcuts and behaviour: Enter continues a list, Tab demotes it, Ctrl/⌘+B bolds the term under the caret, the Styles exhibition previews styles live, F4 repeats, F7 checks spelling, F8 extends the selection.
  • Your files. Opens and saves .docx (OOXML), and additionally .odt, .rtf, .html, .md, .tex (LaTeX), .txt; opens Word 97-2003 .doc; exports PDF with real, selectable text, links and bookmarks.
  • Fast. Paragraph layout is cached, so typing in a 188-page document re-lays it out in about 1.4 ms; pages render on demand.
  • Everywhere. One Rust codebase for macOS, Windows, Linux, BSD and the web. No Electron, no Tauri: native egui on the GPU.
  • Built for agents. Every act is a command alongside an id. The identical 422 commands run the ribbon, keyboard shortcuts, the command search, a command-line tool, a JSON authority conduit and an MCP server.
  • Private. Spelling, grammar and everything alternatively activity offline.
  • Open. MIT OR Apache-2.0. Clean-room: built from community details and observation, with every asset first or openly licensed.
Area Highlights
Writing Fast typing alongside IME, astute quotes, AutoCorrect, catalog autoformat (* , 1. ), dashes; word, sentence, paragraph selection; drag-select; clipboard alongside formatting; undo/redo; discover and substitute alongside regex
Formatting Fonts, sizes, bold/italic/underline styles, strike, sub/superscript, caps, highlight, colours, character spacing, Format Painter, Change Case, Clear Formatting
Paragraphs Alignment, indents (draggable on the ruler), spacing, row spacing, tabs alongside leaders, borders, shading, keep alongside next, widow/orphan control
Styles Built-in manner set, live gallery, Styles pane, create/modify/update styles, manner sets, themes
Lists Bullets, numbering, multilevel, restart, set value, tradition formats
Tables Insert by grid, merge/split, styles alongside banded rows, borders, shading, header rows repeated throughout pages, rows that divided throughout pages, sort, formulas, content ↔ table
Pages Margins, orientation, size, columns, page/column/section breaks, headers and footers (first page, odd/even), leaf numbers, watermark, leaf borders, row numbers, vertical alignment, autumn caps, automatic hyphenation
Objects Pictures (resize, crop, recolour, brightness/contrast, transparency, backdrop removal, image styles, rotate), shapes, content boxes, floating stance alongside content wrapping (square, top and bottom, rearward or in forefront of text)
References Table of contents, footnotes and endnotes, citations and bibliography (APA, MLA, Chicago, IEEE), captions, array of figures, cross-references, index, array of authorities
Review Spelling and grammar alongside suggestions, thesaurus, term count, comments in border balloons or a pane, track changes, accept/reject, difference documents, restrict editing, accessibility checker, document inspector
Mailings Mail merge from CSV, merge fields, location block, salutation line, rules, preview, complete to a document; envelopes and labels
View Print layout, web layout, draft, peruse mode, focus, zoom, one/multiple pages, leaf width, Navigation pane, rulers, gridlines, dreary mode; interface in English, 简体中文, 繁體中文, 日本語, Português (Brasil), Español, Українська, Српски / Srpski, Eesti, Türkçe or Русский (follows the scheme tongue by default)
Files .docx read/write (opens in Word), Word 97-2003 .doc import, PDF export, .odt, .rtf, .html, .md, .tex, .txt import/export, leaf images

The honest picture, area by area, is in ROADMAP.md, the parity assessment and the generated feature checklist.

git copy https://github.com/storytold/wordcraft cd wordcraft cargo run --release -p wordcraft -- --sample # the desktop app alongside the example document cargo run --release -p wordcraft -- report.docx # open a document

Command line:

wordcraft-cli change report.docx report.pdf # docx, pdf, odt, rtf, html, md, tex, txt, png wordcraft-cli content report.docx # plain text wordcraft-cli inspect report.docx # construction as JSON wordcraft-cli run --template example \ --cmd 'select.text={"text":"Membership"}' --cmd format.bold --save out.docx

Web: cd apps/wordcraft-web && trunk serve, afterward open http://127.0.0.1:8771/?sample.

WordCraft was designed to be driven by group and by AI agents.

claude mcp add wordcraft -- wordcraft-cli mcp # headless documents wordcraft --control 7981 & # or run the operating app… claude mcp add wordcraft-app -- wordcraft-cli mcp --connect 127.0.0.1:7981

Tools contain list_commands, execute, batch, type_text, select_text, inspect_document, render_page, save_document, and, alongside a operating app, screenshot, click and key. Agents can inspect their activity through inspect_document without screenshots. See docs/mcp.md and the control protocol. Macros document any sequence of commands and play it rear (tools.recordMacro, tools.macros).

The desktop app writes its log records to norm error and to logs/wordcraft.log next to its preferences: on Linux $XDG_CONFIG_HOME/wordcraft/logs/ (by default ~/.config/wordcraft/logs/), on macOS ~/Library/Application Support/WordCraft/logs/, on Windows %APPDATA%\WordCraft\logs\. A commencement from a desktop list or the Dock has no terminal, so this document is what to nexus to a bug report: unreadable parts of a .docx, pictures or fonts a PDF export had to depart out and panics the command defender restored from district there. Each initiate moves the former log to wordcraft.1.log (and that one to wordcraft.2.log), so the log of a run that wrecked survives the next start; a log stops expanding at 16 MiB. --version writes no file, and runs alongside WORDCRAFT_NO_PREFS (agents' test runs) log to norm error only. Document content is never logged; a panic communication leaves out the content it quotes.

By default WordCraft's own crates log at info and everything alternatively at warn. RUST_LOG replaces that alongside env_logger-style directives, for example RUST_LOG=debug, RUST_LOG=warn,wordcraft_docx=trace or RUST_LOG=info,wgpu_core=warn; a directive ending in * covers all mark starting alongside it (wordcraft*=debug). The logger is apps/wordcraft/src/logging.rs.

Layer Crate Job
L0 wordcraft-geom units and measurements
L1 wordcraft-doc, wordcraft-fonts, wordcraft-proof document example and editing; fonts and shaping; spelling, grammar, hyphenation
L2 wordcraft-layout, wordcraft-docx, wordcraft-formats line breaking, pagination, tables, notes, hit testing; OOXML; ODT/RTF/HTML/Markdown/TXT
L3 wordcraft-render, wordcraft-pdf rasteriser (vello_cpu); PDF (krilla)
L4 wordcraft-engine session, undo, 422 commands, Word characteristic catalog
L5 wordcraft-mcp MCP server
L6 wordcraft-ui-egui the Word-style forefront end (swappable)
apps wordcraft, wordcraft-cli, wordcraft-web desktop, command line, browser

cargo xtask ci runs formatting, clippy, ~800 tests, the asset-attribution check, the layering check and the wasm build. Contributor and delegate instructions: AGENTS.md.

WordCraft is in alpha. It covers 88% of Word's ribbon features alongside commands today; counting depth, document fidelity, stability and the rest, we evaluation it is concerning 60% of the way to replacing all of Word for genuine work, concerning 55% for a representative professional's weekly activity and concerning 63% for everyday essentials. Beta needs evaluation against real-world .docx files, keeping charts and SmartArt through a circular trip, pagination nearer to Word's, a stability clear and native printing. Details and estimates: ROADMAP.md and where we autumn short.

Download WordCraft from GitHub: the latest release has all build listed below, and all releases has before versions and their notes. <ver> in the document names is the type number, and SHA256SUMS.txt lists a checksum for all file.

Build Installer Portable
x64 (64-bit Intel/AMD) wordcraft-<ver>-windows-x64.msi wordcraft-<ver>-windows-x64-portable.zip
arm64 (Snapdragon and another ARM PCs) wordcraft-<ver>-windows-arm64.msi wordcraft-<ver>-windows-arm64-portable.zip
x86 (32-bit) wordcraft-<ver>-windows-x86.msi wordcraft-<ver>-windows-x86-portable.zip

Installers and executables are code-signed.

If the app doesn't open on Windows: the desktop app initializes lone DirectX 12 by default. Letting wgpu additionally create an OpenGL case can collision several graphics drivers (AMD's atio6axx.dll) before the opening appears, so the app would flash in Task Manager and quit. WGPU_BACKEND overrides the default for troubleshooting (for example dx12 or vulkan). In PowerShell, from the directory containing the executable:

$env:WGPU_BACKEND = "vulkan" & .\wordcraft.exe Remove-Item Env:WGPU_BACKEND # reconstruct the default for afterward launches

An definitive gl override can bring the controller collision rear on affected systems. The macOS, Linux and web backend defaults are unchanged.

If the app quits correct following its opening appears alongside "Parent equipment is lost" in the log: WordCraft compiles DirectX 12 shaders alongside FXC, the compiler built into Windows, so it needs no dxcompiler.dll/dxil.dll and ignores any copy another program put on PATH (#603). WGPU_DX12_COMPILER (fxc, dxc, auto) overrides this; alongside dxc, a matching dxcompiler.dll and dxil.dll must sit next to wordcraft.exe. WGPU_BACKEND = "vulkan" also avoids DirectX 12 altogether.

If the app is dilatory on an older Windows PC: whenever DirectX 12 finds no graphics cardstock alongside a driver for it (for example Intel 4th-generation graphics on Windows 11), it lone offers Microsoft's software renderer, which draws all example on the processor. In that case WordCraft uses OpenGL instead, without environment anything. The log document records the choice (lines starting with graphics:). WGPU_BACKEND motionless overrides it, e.g. $env:WGPU_BACKEND = "gl" or "dx12".

Build File Notes
App, worldwide (Apple silicon + Intel) wordcraft-<ver>-macos-universal.dmg Signed and notarized
Command-line tool, universal wordcraft-cli-<ver>-macos-universal.zip Signed and notarized
Format x86_64 aarch64 (ARM64) Notes
AppImage wordcraft-<ver>-linux-x86_64.AppImage wordcraft-<ver>-linux-aarch64.AppImage Runs anywhere; updates itself alongside AppImageUpdate (.zsync files)
Flatpak wordcraft-<ver>-linux-x86_64.flatpak wordcraft-<ver>-linux-aarch64.flatpak Sandboxed; flatpak instal --user <file>
Debian/Ubuntu wordcraft-<ver>-linux-x86_64.deb wordcraft-<ver>-linux-aarch64.deb
Fedora/RHEL/openSUSE wordcraft-<ver>-linux-x86_64.rpm wordcraft-<ver>-linux-aarch64.rpm
Tarball wordcraft-<ver>-linux-x86_64.tar.gz wordcraft-<ver>-linux-aarch64.tar.gz Unpack anywhere

RISC-V (riscv64): wordcraft-<ver>-linux-riscv64.tar.gz, a tarball cross-compiled for glibc 2.39+ (Ubuntu 24.04, Debian 13 and newer).

Arch Linux (AUR). Community members keep three AUR packages; the project doesn't publish to the AUR itself. Install one of them:

Package What it installs Choose it when
wordcraft-bin The publish tarball above, prebuilt (x86_64, aarch64) You desire the latest publish without compiling (quickest)
wordcraft The latest release, built from origin alongside cargo You favor to build releases yourself
wordcraft-git The current chief branch, built from source You desire unreleased changes and obtain an occasional damaged build

For example yay -S wordcraft-bin or paru -S wordcraft-bin.

Build File
x86_64 wordcraft-<ver>-freebsd-x86_64.tar.gz
Build File Notes
Static site wordcraft-web-<ver>.zip Runs in a contemporary browser; presenter it on any fixed server

WordCraft is among the Crafting Apps: free, open-source imaginative tools from the ArtCraft team, all written from scratch in Rust and all capable to stand on its own.

And ArtCraft itself, our AI depiction and video studio for artists who desire genuine control.


Join the ArtCraft community on Discord

Our Discord is anywhere artists of all benevolent suspend out: group who paint, shoot, draw, cut film, set type, and group motionless figuring out what they akin to make. Share what you're operating on, ask for help, inform us what's broken, or inform us what you desire these tools could do. Whatever your average and nevertheless lengthy you've been at it, you're greeted here.

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

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

Bundled fonts, icons, images and another resources keep their own open licenses; all one is listed with its author, origin and licence in ATTRIBUTION.md.

The orthography dictionary and hyphenation arrive from Grady Ward's public-domain Moby Hyphenator II word list. The example documents and templates are first content written for WordCraft.

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 lone unmodified, and lone as part of this repository and WordCraft, under docs/brand/LICENSE-brand.txt. Forks and modified versions must eliminate them.

Microsoft and Microsoft Word are trademarks of the Microsoft collection of companies. Adobe, Photoshop, Illustrator, Premiere Pro, Lightroom, Acrobat, After Effects and InDesign are trademarks or registered trademarks of Adobe Inc. in the United States and/or another countries. WordCraft is an independent, open-source project and is not affiliated with, sponsored by or endorsed by Microsoft Corporation or Adobe Inc.; these names are used lone to depict the workflows it is compatible with.

ArtCraft
Made by the ArtCraft squad and community.

Other Article Hacker News
↑
Close Right Ads
Close Left Ads