designcraft is a free, open source design & prototyping project written in Rust and released under Apache-2.0. It has 2,909 GitHub stars, 1,850 forks and 301 open issues, and was last pushed 5 hours ago. On this registry it ranks #55 of 97 tracked projects in Design & Prototyping, with 5 head-to-head comparisons available.

What is designcraft?

DesignCraft is an open-source, clean-room reimplementation of Adobe InDesign written in pure Rust, aimed at designers and developers who want professional page layout and publishing without a subscription.

What it is

DesignCraft is a page layout and publishing application built by the ArtCraft team, offering the familiar InDesign workflow: spreads and parent pages, frames and threaded stories, the Control panel, paragraph and character styles, swatches and text wrap. It runs natively on macOS, Windows and Linux, and in the browser via WebAssembly, all from a single Rust codebase; the frontend is egui-based, and the engine lives in crates such as crates/engine.

The concrete problem it addresses is that the standard professional layout tool is proprietary and subscription-licensed, with a licence server and telemetry attached. DesignCraft replaces Adobe InDesign's core loop — composing type, threading stories through columns, and exporting print-ready output — with an Apache-2.0 tool that has no subscription, no licence server and no telemetry, a documented native file format, and IDML import and export. Its paragraph output is deterministic: line breaks are identical on screen and in the exported PDF.

Key capabilities

  • A Knuth–Plass paragraph composer (plus single-line mode), dictionary hyphenation using the public-domain Moby word list plus trained patterns, word/letter/glyph-scaling justification, keeps, optical margin alignment, columns, baseline grid, tabs, rules and shading.
  • Full layout furniture: spreads, parent pages with folios, frames, threaded stories flowing through columns, text wrap, paragraph and character styles, named colour swatches and CMYK process swatches.
  • Export to PNG, PDF (PDF/X-4, PDF/A-2b) and EPUB, plus IDML import and export and a documented native format.
  • Multithreaded SIMD rendering with vello_cpu, copy-on-write documents with O(1) undo snapshots, and cached composition.
  • An agent-native control surface: every menu item, tool gesture, panel control and dialog can be driven over a JSON control channel on 127.0.0.1:7979 and through an MCP server, documented in docs/control-protocol.md and docs/mcp.md.
  • A built-in sample magazine laid out from code (crates/engine/src/sample.rs), opened via File → New → Sample Document or the --sample flag, covering full-bleed graphics, justified two-column body text, threaded three-column stories and a wrapped pull quote.
  • Headless operation through designcraft-cli, which can render every page of a document to PNG and list every available command.

Who uses it and how

  • Designers who already know InDesign, since the layout model, tools, menus, panels and shortcuts are deliberately mirrored.
  • Teams driving layout programmatically, sending JSON lines to port 7979 while the app runs, with the protocol described in docs/control-protocol.md.
  • AI agents such as Claude, controlling the application through the MCP server to lay out and edit documents like a designer.
  • Build and CI contributors running cargo xtask ci for formatting, clippy, tests, assets, layering and Wasm checks.
  • Browser-based users, since the same Rust codebase compiles to WebAssembly for deployment on the web.

Getting started

The desktop app is built from source with cargo run --release -p designcraft, requiring Rust 1.95 or newer; add -- --sample to open the sample magazine, or -- --sample --control 7979 to expose the JSON control channel.

How it compares

Among the tools named in its own documentation, DesignCraft's reference point is Adobe InDesign, whose layout model it reproduces while omitting the subscription, licence server and telemetry that come with it. It stands alongside ArtCraft's other Crafting Apps rather than among conventional open-source editors.

When to use it — and when not

A self-hoster must be comfortable building from source with a current Rust toolchain, and should clone storytold/craft-fonts into a sibling directory and set CRAFT_FONTS_DIR to get Japanese text, since it otherwise falls back to system fonts — and to none at all on the web. It is a poor fit for anyone wanting a packaged installer or hosted service without a build step, and with 301 open issues open, prospective users should expect the project to still be settling.

project readme (upstream, from github) — read inline

DesignCraft

Page layout and publishing; an open-source, clean-room reimplementation of Adobe InDesign, rebuilt in pure Rust.

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

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

Join the ArtCraft community on Discord

DesignCraft on getartcraft.com · ArtCraft · All Crafting Apps



Quarterly, Spring Issue: threaded three-column body text, a wrapped pull quote and parent-page folios, all set by DesignCraft's own paragraph composer.

[!NOTE] ArtCraft is a community of artists from all walks of life. Digital, generative, music, games — if you make things, you're one of us. Come say hi on Discord.

The sample magazine · Why DesignCraft · Quick start · Web · Architecture · Downloads · The Crafting Apps · License and credits

The sample magazine

Every page below was laid out by DesignCraft from code (crates/engine/src/sample.rs) and exported by its own renderer. Try it yourself with File → New → Sample Document, or start the app with --sample.

Cover. A full-bleed graphic frame, display type and an italic deck.

Styles. Kicker rule, headline, deck, caption and justified two-column body.

Threading, columns and text wrap. One story flows through three columns and around the pull quote.

Swatches. Named colors and a CMYK process swatch, laid out as a palette.

Why DesignCraft

  • Familiar. InDesign's layout, tools, menus, panels and shortcuts: spreads and parent pages, frames and threaded stories, the Control panel, paragraph and character styles, swatches, text wrap and more. If you know InDesign, you already know how to use it.
  • Beautiful type. A Knuth–Plass paragraph composer (plus single-line), dictionary hyphenation (the public-domain Moby word list plus our own trained patterns), word, letter and glyph-scaling justification, keeps, optical margin alignment, columns, baseline grid, tabs, rules and shading. Line breaks are identical on screen and in PDF.
  • Fast. Multithreaded SIMD rendering (vello_cpu), copy-on-write documents with O(1) undo snapshots, and cached composition.
  • Open. A documented native format, IDML import and export, and PNG, PDF (PDF/X-4, PDF/A-2b) and EPUB export. No subscription, no licence server, no telemetry.
  • Agent-native. Every menu item, tool gesture, panel control and dialog can be driven over a JSON control channel and an MCP server, so Claude and other agents can lay out and edit documents like a designer. See docs/control-protocol.md and docs/mcp.md.
  • Everywhere. One Rust codebase for desktop and the web.

Quick start

The egui frontend requires Rust 1.95 or newer (including its shared craft-ui components).

cargo run --release -p designcraft                         # desktop app (start screen)
cargo run --release -p designcraft -- --sample             # open the sample magazine
cargo run --release -p designcraft -- --sample --control 7979   # + JSON control channel
cargo run --release -p designcraft-cli -- run --sample --all-pages out/       # headless: render every page to PNG
cargo run --release -p designcraft-cli -- commands         # list every command
cargo xtask ci                                             # fmt, clippy, tests, assets, layering, wasm

Japanese text (UI and documents) uses fonts from storytold/craft-fonts, an optional build input (font files are never committed here; see craftrules standards/fonts.md):

git clone https://github.com/storytold/craft-fonts ../craft-fonts
CRAFT_FONTS_DIR="$PWD/../craft-fonts" cargo run --release -p designcraft   # absolute path

Without it, Japanese falls back to the system's fonts (none on the web). Release builds always include it.

To drive a running app, send JSON lines to 127.0.0.1:7979. The protocol is described in docs/control-protocol.md.

Logs

The desktop app writes its log records to standard error and to logs/designcraft.log in the settings directory, beside ui.json and prefs.json (Linux ~/.config/designcraft/logs/, or $XDG_CONFIG_HOME/designcraft/logs/; macOS ~/Library/Application Support/DesignCraft/logs/; Windows %APPDATA%\DesignCraft\logs\). A start launched from a desktop menu or the Dock has no terminal, so this file is what to attach to a bug report: the crash guard's panic report and a failed crash-recovery save land there. Each launch moves the previous log to designcraft.1.log (and that one to designcraft.2.log), so the log of a run that crashed survives the next start. The file stops growing at 16 MiB. --version writes no file.

Variable Effect
RUST_LOG Log levels for standard error and the log file. Default: info for DesignCraft's own crates, warn for everything else. env_logger-style directives replace that, e.g. RUST_LOG=debug, RUST_LOG=warn,designcraft_render=trace or RUST_LOG=info,wgpu_core=warn; a directive ending in * covers every target starting with it (designcraft*=debug).
WGPU_BACKEND The graphics backend that composites the window: dx12, vulkan, gl or metal (a comma-separated list lets wgpu choose among them). Default: DirectX 12 on Windows, Vulkan on Linux, Metal on macOS, with OpenGL as the fallback. Setting it also turns off the start-up fallback described below.

The logger is apps/designcraft/src/logging.rs; the web build logs to the browser console instead.

Graphics backend

The canvas is rendered on the CPU; the GPU only composites the interface, through wgpu. A graphics driver that faults takes the process down before any Rust code can catch it, so the backend is chosen before the window exists, and a start that never showed a frame is remembered: gpu.json in the settings directory records the backend being tried until the first frame has been presented. A record left behind means that backend crashed (or the app was killed) at start-up, so the next start tries the next one (DirectX 12, Vulkan, then OpenGL on Windows; Vulkan, then OpenGL on Linux) and says so in the status bar. The list starts over once every backend has failed, or with a new DesignCraft version; delete the file or set WGPU_BACKEND to start afresh. Seen in the wild: on an AMD hybrid-graphics laptop (a Radeon RX 6800M beside an integrated Radeon) the AMD Vulkan driver faulted at the first present, which is why DirectX 12 is the Windows default. The code is apps/designcraft/src/gpu.rs.

Web

cd apps/designcraft-web && trunk build --release          # → dist/web (serve it with any static server)
cd apps/designcraft-web && trunk serve --release          # http://127.0.0.1:8767

You need trunk and the wasm32-unknown-unknown target. The same app runs through eframe's web runner on WebGPU, falling back to WebGL2 (?webgl forces it; ?sample opens the sample magazine). Open and Place use the browser's file picker, and dropping files works too. Save and Export download the file. The web build has no control channel.

Architecture

DesignCraft 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 geom (paths, units & measurement parsing, corner options) · color (CMYK/RGB/Lab, swatches, tints, gradients)
L1 doc (spreads, pages, parents, layers, frames, stories, styles) · fonts (font DB, shaping, outlines)
L2 compose (the text engine)
L3 render (vello_cpu)
L4 tools (pointer events → commands + overlays)
L5 engine (session, history, command registry)
L6 ui-egui (InDesign-style UI, control channel)
L7 apps/designcraft, apps/designcraft-cli, apps/designcraft-web

Downloads

New to DesignCraft? Download it from the DesignCraft page on getartcraft.com. That's the easiest way to install it.

Want a specific build or format? On GitHub, the latest release has every build listed below, and all releases has earlier versions and their notes. `` in the file names is the version number, and SHA256SUMS.txt lists a checksum for every file.

Windows

Build Installer Portable
x64 (64-bit Intel/AMD) designcraft--windows-x64.msi designcraft--windows-x64-portable.zip
arm64 (Snapdragon and other ARM PCs) designcraft--windows-arm64.msi designcraft--windows-arm64-portable.zip
x86 (32-bit) designcraft--windows-x86.msi designcraft--windows-x86-portable.zip

Installers and executables are code-signed.

macOS

Build File Notes
App, universal (Apple silicon + Intel) designcraft--macos-universal.dmg Signed and notarized
Command-line tool, universal designcraft-cli--macos-universal.zip Signed and notarized

Linux

Format x86_64 aarch64 (ARM64) Notes
AppImage designcraft--linux-x86_64.AppImage designcraft--linux-aarch64.AppImage Runs anywhere; updates itself with AppImageUpdate (.zsync files)
Flatpak designcraft--linux-x86_64.flatpak designcraft--linux-aarch64.flatpak Sandboxed; flatpak install --user
Debian/Ubuntu designcraft--linux-x86_64.deb designcraft--linux-aarch64.deb
Fedora/RHEL/openSUSE designcraft--linux-x86_64.rpm designcraft--linux-aarch64.rpm
Tarball designcraft--linux-x86_64.tar.gz designcraft--linux-aarch64.tar.gz Unpack anywhere

RISC-V (riscv64): designcraft--linux-riscv64.tar.gz only, cross-compiled; needs glibc 2.39+ (Ubuntu 24.04 or newer).

FreeBSD

Build File
x86_64 designcraft--freebsd-x86_64.tar.gz

Web (WebAssembly)

Build File Notes
Static site designcraft-web-.zip Runs in a modern browser; host it on any static server

The Crafting Apps

DesignCraft 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
PdfCraft Reading, organizing and protecting PDFs GitHub Website
EffectCraft Motion graphics and visual effects GitHub Website
DesignCraft Page layout and publishing · 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 · DesignCraft

License and credits

DesignCraft is dual-licensed under MIT or Apache-2.0, at your option. Copyright (c) 2026 ArtCraft Team and the DesignCraft 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 ASSETS.md.

The bundled fonts, and the craft-fonts fonts embedded by release builds, are under the SIL Open Font License; all UI icons are drawn in code and are original.

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 DesignCraft, under docs/brand/LICENSE-brand.txt. Forks and modified versions must remove them.

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 other countries. DesignCraft is an independent, open-source project and is not affiliated with, sponsored by or endorsed by Adobe Inc.; these names are used only to describe the workflows it is compatible with.



Made by the ArtCraft team and community.

Frequently asked questions

Is designcraft free to use?

designcraft is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does designcraft do?

designcraft is an open source project.

What is designcraft written in?

designcraft is primarily written in Rust. Its source is publicly available at https://github.com/storytold/designcraft, and it has 2,909 GitHub stars.