Draft
A 2D drafting tool with the feel of a professional CAD command line, built to run properly on Linux, macOS and Windows alike — and priced for a person rather than a firm.
Draft is a drafting application. You type L, pick two points, and get a line — the same way you would in any established CAD package, with the same command line, the same object snaps, the same F-key toggles and the same grips.
What is different is where it runs and what it costs. The established packages ship either no Linux build at all or a feature-reduced one, and they are priced for firms rather than for individuals. Draft is full-featured on all three platforms at an individual-reasonable price, and that gap is the entire product thesis.
The familiarity principle#
Drafters arrive with existing muscle memory, and the goal is that an experienced one is productive within minutes without being taught. That does not mean Draft reimplements forty years of accumulated CAD convention. It sorts inherited behaviour into three tiers.
Tier 1 — inherit. The interaction grammar: command line with aliases, Space-as-Enter, keyword prompts, OSNAP, ortho and polar tracking, grips, window versus crossing selection, noun-verb and verb-noun order, the F-key toggles. This is where the muscle memory actually lives, it costs little to match, and getting it wrong is what makes a tool feel foreign.
Tier 2 — cover. The commands people actually reach for. Breadth beats depth: a drafter blocked by a missing HATCH or DIMLINEAR stops evaluating, but almost nobody misses the long tail. Where a command has five modes and two are used in practice, Draft ships the two.
Tier 3 — drop or modernize. Forty years of backwards compatibility left a lot of scaffolding that exists only because removing it would break old drawings. Draft has no old drawings.
What Draft deliberately does not inherit#
| Legacy | What Draft does instead |
|---|---|
.pgp / .cuix customization | VS Code-style JSON: settings.json, keybindings.json |
Cryptic sysvars as the primary interface (PDMODE, LTSCALE, MIRRTEXT…) | Named, documented settings in JSON. The classic names still work as command-line aliases, so typing LTSCALE still gets you there |
PDMODE numeric shape codes | Named point styles: dot, cross, x, circle-cross, square |
MIRRTEXT as a global toggle | Readable-text-on-mirror is simply the behaviour; literal glyph mirroring is a per-command option |
| Classic TRIM/EXTEND (pick boundaries first) | Quick mode only — every visible entity is an implicit boundary |
UNDO's Mark/Back/Control/Auto option set | U and UNDO are one single-step command; multi-step rollback lives in an undo history panel |
| Separate TEXT and MTEXT | One text command. Single-line is just text with no wrap width |
.lin / .pat as the internal format | Internal definitions are Draft's own; .lin and .pat import so firms can bring office standards |
The test applied to every divergence: would a competent drafter, on encountering this, be annoyed for ten seconds and then prefer it — or be confused and reach for the manual? The first is fine. The second is not.
What is in the box#
- Drawing — line, polyline, circle, arc, rectangle, ellipse, point, spline, construction lines, polygon, divide and measure.
- Modifying — erase, move, copy, rotate, scale, mirror, stretch, offset, trim, extend, fillet, chamfer, array, break, join, lengthen, explode, match properties, and full grip editing.
- Precision — a constraint pipeline of grid snap → ortho/polar → object snap, with ten-plus snap types ranked in tiers so a Nearest snap can never swallow an Endpoint.
- Structure — layers, linetypes, lineweights, blocks with attributes, external references, hatching, groups and WBLOCK.
- Annotation — text, dimension styles, the full dimension family (linear, aligned, angular, radial, diameter, ordinate, continued, baseline), leaders, tables and annotative scaling.
- Sheets — model space plus layouts with viewports, page setups, plot styles, and plotting to PDF at true paper size.
- Three dimensions — a 3D pane, UCS, named views, visual styles, solid primitives, profiles-to-solids and booleans.
- Interoperability — DXF read and write, DWG read through an external converter, SVG import, PDF plot output.
Platform and technology#
Draft is a desktop application built on Tauri v2 with a React 19 + TypeScript frontend. All three desktop platforms are first-class — single-platform quality is precisely what Draft competes against — and Linux is the primary development and test target because it is the one nobody else serves.
2D geometry renders to Canvas 2D across three stacked layers, with an R-tree for culling. The 3D pane renders on three.js. The geometry kernel — the part that does intersections, offset, trim and fillet — is Draft's own, written in plain TypeScript with no DOM dependency, because that is where CAD clones die and it has to be unit-testable in isolation.
Draft is under active development and is not yet generally available. Every page marks what is shipped and what is designed, and The roadmap is the full list.
Where to go next#
Getting started
Your first drawing, and the ten minutes of orientation an experienced drafter needs.
CorePrecision drafting
Coordinate input, the constraint pipeline, object snaps, ortho and polar, and selection.
ReferenceCommand reference
Every alias, every function key, and what each command asks you for.