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

What is cadcraft?

CADCraft is an open-source, clean-room reimplementation of Autodesk AutoCAD written in pure Rust, aimed at drafters and developers who want the familiar CAD command-line workflow without a commercial licence.

What it is

CADCraft is a computer-aided design and drafting application built entirely in Rust by the ArtCraft team, and it lives in the desktop and browser application space alongside native builds for macOS, Windows, Linux and FreeBSD as well as a WebAssembly build that runs in the browser. It reproduces the AutoCAD workflow rather than inventing a new one: a command line you type into, object snaps, layers, dimensions, hatches, blocks, and DXF drawings that you already know, with the Apache-2.0 licence covering the whole project.

The concrete problem it addresses is dependency on Autodesk AutoCAD for everyday drafting and for reading and producing the DXF files that circulate between tools and teams. CADCraft opens and works with those drawings directly — the repository ships examples/apartment.dxf, an apartment plan whose walls, pick-point hatching, TrueType MTEXT room labels, TABLE, multileader and architectural dimensions were built entirely from CADCraft commands — so a user can keep the same habits, commands and file formats while running software they can inspect, build and redistribute themselves.

Key capabilities

  • Typed command-line drafting with familiar aliases such as L, plus drawing entities including layers, object snaps, dimensions, hatches, blocks and DXF files.
  • Layouts with paper space, viewports, page setups and PLOT to PDF; double-clicking a viewport lets you work in model space through it.
  • Rich text entities: TEXT and MTEXT with TrueType fonts, a TABLE entity, multileaders, and architectural dimension styles.
  • Custom fonts through STYLE — any .ttf, .otf or .ttc installed in the system font folders can be named by file name (for example Vazirmatn-Regular.ttf) or family name (Vazirmatn), and referenced inline in MTEXT with \fVazirmatn;.
  • Embedded CJK and Arabic coverage via CRAFT_FONTS_DIR, bundling BIZ UDPGothic, BIZ UDMincho, Shippori Mincho and Noto Sans Arabic, with FONTALT/CADCRAFT_FONTALT and FONTFALLBACK/CADCRAFT_FONTFALLBACK settings settable through SETVAR or environment variables to steer substitution.
  • Right-to-left text support: TEXT and MTEXT lines are laid out with the Unicode Bidirectional Algorithm and Arabic-script text is shaped with OpenType contextual forms, ligatures, ZWNJ/ZWJ and mark positioning.
  • Automation through an agents, MCP and CLI interface, plus a native WebAssembly build for running the application in the browser.

Who uses it and how

  • Drafters who already work in AutoCAD keep their command habits — typing L, picking points, working in layers — while producing the same DXF deliverables.
  • Users who need drawings on every machine they own, running natively on macOS, Windows, Linux and FreeBSD from one codebase.
  • Teams that want CAD in a browser session via WebAssembly, where there are no system fonts and only the embedded BIZ UDPGothic Regular and Noto Sans Arabic are available.
  • Designers setting up multilingual drawings who install their own fonts in C:\Windows\Fonts, /Library/Fonts, /usr/share/fonts or ~/.fonts, restart CADCraft to rescan, and reference them from a text style.
  • Developers driving the tool through the MCP and CLI interfaces to script or agent-automate drawing production.

Getting started

Build from source with cargo build --release, which also embeds the bundled fonts; prebuilt binaries are listed under Downloads on the project page at getartcraft.com.

How it compares

Among open-source entries in this registry, no comparable AutoCAD-style drafting applications are listed, so CADCraft stands alone here as the registry's clean-room Rust reimplementation of that workflow.

When to use it — and when not

It is a reasonable choice only if you accept a partially finished text subsystem: SHX fonts, including large ones such as chineset.shx, are not read yet, so text in an SHX style falls back to CADCraft's own stroke font, and any characters that font lacks are drawn from an installed wide-coverage font such as Noto Sans CJK or Source Han Sans. The project also carries 90 open issues, so users who need guaranteed SHX fidelity, or who cannot install and manage system fonts for their scripts, should weigh that against the maturity of a long-established commercial package.

project readme (upstream, from github) — read inline

CADCraft

Computer-aided design and drafting; an open-source, clean-room reimplementation of Autodesk AutoCAD, rebuilt in pure Rust.

A fast, open-source take on the AutoCAD workflow: the command line, object snaps, layers, dimensions, hatches, blocks and DXF drawings you already know. It runs natively on macOS, Windows, Linux and FreeBSD, and in the browser via WebAssembly.
By the ArtCraft team.

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

Join the ArtCraft community on Discord

CADCraft on getartcraft.com · ArtCraft · All Crafting Apps



Apartment plan (examples/apartment.dxf): walls with pick-point hatching, TrueType MTEXT room labels, a TABLE, a multileader and architectural dimensions — built entirely from CADCraft commands.

[!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.

Screenshots · Why CADCraft · What works today · Quick start · Agents, MCP and the CLI · Architecture · Roadmap · Downloads · The Crafting Apps · License and credits

Screenshots

Layouts: paper space with viewports, page setups and PLOT to PDF. Double-click a viewport to work in model space through it. Mounting bracket: a two-view part drawing with centre lines, hidden lines, an ANSI31 section hatch and a title block.

Why CADCraft

  • The workflow you know. Type L, click two points, type @5 cargo build --release) also embed its fonts: BIZ UDPGothic, BIZ UDMincho and Shippori Mincho (Japanese) and Noto Sans Arabic (the web build, which has no system fonts, only BIZ UDPGothic Regular and Noto Sans Arabic). A text style can use them by family name, and they draw characters a text's font lacks when no installed wide-coverage CJK font has them. Without CRAFT_FONTS_DIR nothing is embedded. SHX fonts (including big fonts such as chineset.shx) aren't read yet: text in an SHX style is drawn with our own stroke font, and any character a text's font lacks (CJK, for example) is drawn from an installed font that has it, preferring wide-coverage fonts such as Noto Sans CJK, Source Han Sans, WenQuanYi, PingFang or Microsoft JhengHei. Two settings, set with SETVAR or (for every run) an environment variable, steer this:
Variable Environment Meaning
FONTALT CADCRAFT_FONTALT Font used instead of a text style font that can't be found (an SHX file, a missing TTF), by file or family name, e.g. Noto Sans CJK TC. Empty (default) = our stroke font.
FONTFALLBACK CADCRAFT_FONTFALLBACK Fonts tried first for characters a text's font lacks, comma-separated, e.g. Noto Sans CJK TC, msjh.ttc.

. clears either one.

Your own fonts. Any .ttf, .otf or .ttc font works: install it in the system font folder (Windows C:\Windows\Fonts or per-user fonts, macOS /Library/Fonts or ~/Library/Fonts, Linux and the BSDs /usr/share/fonts, /usr/local/share/fonts, ~/.local/share/fonts or ~/.fonts) and name it in a text style (STYLE, or style {"name":"FA","font":"Vazirmatn"}) by file name (Vazirmatn-Regular.ttf) or family name (Vazirmatn), or inline in MTEXT with \fVazirmatn;. Restart CADCraft after installing a font: the font folders are scanned once.

Right-to-left text (Persian, Arabic, Urdu, Hebrew). TEXT and MTEXT lines are laid out with the Unicode Bidirectional Algorithm (the paragraph direction comes from its first letter, so numbers and Latin words inside Persian text keep their own order), and Arabic-script text is shaped with OpenType (contextual letter forms, lam-alef and other ligatures, ZWNJ / ZWJ, mark positioning). Justification (left, centre, right, MTEXT attachment and wrapping) still refers to the text's box. Our stroke font has no Arabic letters, so Persian in a stroke-font style is drawn from an installed font that has them: Vazirmatn, Noto Naskh Arabic, Noto Sans Arabic, Segoe UI, Tahoma, Arial and DejaVu Sans are looked for first. To choose the font, install a free Persian font such as Vazirmatn (SIL Open Font License) and either use it in the text style or set FONTFALLBACK (CADCRAFT_F). Formatting changes inside a word (an MTEXT colour change in the middle of a Persian word) break the joining at that point.

Logs

The desktop app writes its log records to standard error and to logs/cadcraft.log in the settings directory (Linux and the BSDs ~/.config/cadcraft/logs/, or $XDG_CONFIG_HOME/cadcraft/logs/; macOS ~/Library/Application Support/CADCraft/logs/; Windows %APPDATA%\CADCraft\logs\; or under CADCRAFT_CONFIG_DIR). A start from a desktop menu or the Dock has no terminal, so this file is what to attach to a bug report. Each launch moves the previous log to cadcraft.1.log (and that one to cadcraft.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
CADCRAFT_CONFIG_DIR Use this directory instead of the platform settings directory (the log goes to its logs/)
RUST_LOG Log levels for standard error and the log file. Default: info for CADCraft's own crates, warn for everything else. env_logger-style directives replace that, e.g. RUST_LOG=debug, RUST_LOG=warn,cadcraft_io=trace or RUST_LOG=info,wgpu_core=warn; a directive ending in * covers every target starting with it (cadcraft*=debug). cadcraft_engine=debug also logs every command-line message.

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

Drive it from agents, MCP and the CLI

# MCP server on stdio, headless:
cadcraft-cli mcp
# …or bridged to the running app (start it with --control 7979):
cadcraft-cli mcp --connect 127.0.0.1:7979

# One-shot headless runs:
cadcraft-cli run --sample --script 'CIRCLE 22,3 1\n' --save out.dxf --export out.png
cadcraft-cli info drawing.dxf
cadcraft-cli convert drawing.dxf drawing.svg

# Frame part of the drawing (model space, drawing units, lower-left corner first):
cadcraft-cli convert drawing.dwg detail.png --window 0,0,20000,15000
cadcraft-cli run drawing.dwg --cmd 'zoom {"mode":"window","p1":[0,0],"p2":[20000,15000]}' --export detail.png
cadcraft-cli run drawing.dwg --cmd 'select {"window":[[0,0],[20000,15000]]}' --cmd 'zoom {"mode":"object"}' --export sel.png

How image exports (PNG 2400×1600, SVG, PDF) are framed: convert fits the model-space extents. run --export shows the current view when the script or commands changed it (zoom, pan, view.set, …) and otherwise fits the extents too. --window x0,y0,x1,y1 shows exactly that rectangle, centred and scaled without distortion; --view extents or --view current forces either framing. To frame a selection set, zoom {"mode":"object"} after selecting.

MCP tools include command_line (type at the prompt), execute (any command with JSON), inspect_drawing, query_entities, render (returns a PNG) and, when connected to the app, screenshot and ui_click. The desktop app's JSON control channel is documented in docs/control-protocol.md.

Architecture

geom ─┐                       f64 geometry: arcs, bulges, splines, intersections, offsets
dxf   │  (standalone)         DXF tag reader/writer
color ┤                       colour index, true colour
doc   ┤                       drawing database, copy-on-write entity store (cheap undo)
fonts ┤ render               stroke font + TEXT/MTEXT layout │ display lists, linetypes, hatches, dims, CPU raster
io    ┤                       DXF mapping, SVG/PNG export
engine┤                       sessions, commands, command line + prompts, snaps, selection, undo
ui-egui · mcp                 the swappable egui front end · MCP server
apps: cadcraft · cadcraft-cli · cadcraft-web

Nothing below ui-egui knows about egui, so the front end can be replaced. cargo xtask ci checks formatting, clippy, tests, asset attribution, the crate layering and the wasm build.

Drafting and layer-palette icon buttons use the pinned craft-ui button component for interaction, accessible labels and keyboard focus. CADCraft keeps its multicolor icon painter, dark palette, disabled tint and tool commands. The native host saves workspace visibility and toolset choices atomically; CADCRAFT_CONFIG_DIR selects an isolated profile. Compact toolbar groups move into a More menu, and status readouts truncate with a full-value tooltip before they reach layout tabs. Painted toolbar and tab controls have accessible labels and visible keyboard focus. Property controls remain application-specific.

Accessibility

Over the drawing area CADCraft hides the system cursor and draws its own crosshair. Tools that follow the system cursor (Windows Magnifier set to follow or centre the mouse pointer, other screen magnifiers, screen recorders, remote desktops) lose track of it there. Turn on View ▸ Accessibility ▸ Show System Cursor to keep a small system crosshair visible at the centre of the drawn one, or start CADCraft with the environment variable CADCRAFT_SYSTEM_CURSOR=1 (on Windows, set it once with setx CADCRAFT_SYSTEM_CURSOR 1 and start CADCraft again). Agents can switch it with the control channel: ui.set {"systemCursor": true}.

Roadmap

See ROADMAP.md for the stage, measured parity and the estimate of remaining work, and docs/gaps.md for everything still missing.

Downloads

Download CADCraft from 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) cadcraft--windows-x64.msi cadcraft--windows-x64-portable.zip
arm64 (Snapdragon and other ARM PCs) cadcraft--windows-arm64.msi cadcraft--windows-arm64-portable.zip
x86 (32-bit) cadcraft--windows-x86.msi cadcraft--windows-x86-portable.zip

Installers and executables are code-signed.

The installer adds CADCraft to the Start menu and asks whether to add a desktop shortcut too (unticked by default). For a silent install with the desktop shortcut: msiexec /i cadcraft--windows-x64.msi /qn DESKTOPSHORTCUT=1.

If the app doesn't open on Windows: the desktop app initializes only DirectX 12 by default. Letting wgpu also create an OpenGL instance can crash some graphics drivers (AMD's atio6axx.dll) before the window 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 folder containing the executable:

$env:WGPU_BACKEND = "vulkan"
& .\cadcraft.exe
Remove-Item Env:WGPU_BACKEND                     # restore the default for later launches

An explicit gl override can bring the driver crash back on affected systems. The macOS, Linux and web backend defaults are unchanged.

macOS

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

Linux

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

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

FreeBSD

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

Web (WebAssembly)

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

The Crafting Apps

CADCraft 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 GitHub Website
CADCraft Computer-aided design and drafting · 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 · CADCraft

License and credits

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

CADCraft's icons, its single-stroke drafting font, its hatch patterns and its linetypes are all original work, drawn or defined in code. The sample drawings are generated in code too.

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

Autodesk, AutoCAD and DWG are trademarks or registered trademarks of Autodesk, Inc. in the United States and/or other countries. CADCraft is an independent, open-source project and is not affiliated with, sponsored by or endorsed by Autodesk, Inc.; these names are used only to describe the workflows and file formats it is compatible with.


Made by the ArtCraft team and community.

Tool Sets, Layers, and Properties can be regrouped, split, floated within the app window, closed, and reopened. The drawing canvas stays visible and cannot be closed or turned into a tab. Drag a panel header to a target edge or another header. Its context menu offers Float panel, Move to group, and Close panel. Existing panel toggles reopen panels at their saved location; Reset Panel Layout restores the app layout. Floating panels remain inside the current app window.

Frequently asked questions

Is cadcraft free to use?

cadcraft 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 cadcraft do?

CADCraft: computer-aided design and drafting — an open-source, clean-room AutoCAD-style app in pure Rust

What is cadcraft written in?

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