bflatasticandClaude Opus 5.5 9f3b992ecc EPS import: other apps' EPS open as vectors, a preview that stands in says why
Discord feedback: "EPS files are always rasterized: they open as bitmaps, in
other programs as vectors". Every EPS saved by Illustrator 2026 fell back to
its TIFF preview (`gcheck` was unknown), and cairo/Inkscape files stopped at
their first image (`status`), dropped masked images (ImageType 3) and failed
on mesh gradients; the warning didn't say where the program failed.

Fallback never silent:
- The warning names the PostScript error, the operator that raised it and
  the named procedures it ran in, innermost first ("a PostScript error
  (typecheck in `add`), in `inner` in `outer`"); errors caught by `stopped`
  aren't reported. It reaches the status bar, document.open, app.open and
  file.open (which now return document.open's result, so MCP's open_file over
  the control channel gets it), and `vectorcraft-cli info` ("warnings").
- A file whose PostScript can't be read opens as its TIFF preview, else its
  Windows metafile preview (as vectors, scaled to the bounding box), else its
  EPSI bitmap. es @msg rows for the new messages.

Interpreter:
- Operators programs probe or use: gcheck/scheck, rootfont,
  currentcolorrendering, currenthsbcolor, status, token, read,
  bytesavailable, fileposition/setfileposition, resetfile, write*, pdfmark
  (marks dropped, as Ghostscript does), execform, nulldevice, strokepath,
  pathforall, user paths (ufill/ueofill/ustroke/uappend/upath/setbbox, the
  encoded form too), setcachedevice2, findcolorrendering, cache, device and
  VM queries, revision; (%stdout) (w) file gives a sink.
- `//name` is replaced by its value when read, inside procedures too.
- Tiling patterns become pattern swatches (their PaintProc drawn in pattern
  space, one cell; uncoloured ones in the colour under them; makepattern
  copies share one swatch); nested patterns stop at 8 levels.
- Type 3 fonts draw their glyphs (BuildGlyph/BuildChar, widths from
  setcachedevice/setcharwidth) as outlines grouped per string, spaced by
  ashow/widthshow/awidthshow/xshow/yshow/xyshow/kshow; glyphshow and
  stringwidth/cshow use them.
- Shadings of types 1 and 4-7 become gradient meshes (data from arrays,
  strings or files, packed or not, flags sharing edges), as fills through a
  shading pattern too; sampled functions (type 0) are evaluated;
  GradientMesh::coons/triangle are shared with PDF import.
- ImageType 3 masked images, interleaved by sample, by row or in separate
  sources; ReusableStreamDecode reads its data when made; Flate/LZW PNG and
  TIFF predictors.
- Bounded: DeviceN at 32 inks, sampled functions at 2^24 samples and 32
  outputs, 4096 patches a shading, strokepath ignores dashes finer than 1e5
  pieces, Type 3 glyphs nest 8 deep (a glyph that shows itself overflowed the
  stack before the limit), 64-bit index maths for 32-bit targets.

Tests: a synthetic program per generator (cairo/Inkscape, its Type 3 fonts,
matplotlib, CorelDRAW, Affinity, LibreOffice, Ghostscript eps2write,
Illustrator procsets), meshes and function shadings, masked images, fault
messages, probing operators, metafile/EPSI previews, `//name`, user paths,
hostile patterns/glyphs/shadings (run against main, 12 of the 14 generator
and feature tests fail; CorelDRAW- and LibreOffice-style programs already
read there). The import fuzz vocabulary covers the new operators. Checked
against real files made here with Inkscape 1.4 (cairo) and Illustrator 2026
(its own format and the CS-to-CC compatibility formats; all fell back or
stopped early on main and open as vectors now; its Illustrator 8 format
needs the next commit); those files aren't committed.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-08 18:23:36 +07:00

ArtCraft

VectorCraft

Vector illustration; an open-source, clean-room reimplementation of Adobe Illustrator, rebuilt in pure Rust.

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

Status: in active development Written in pure Rust Runs on macOS, Windows, Linux, FreeBSD and the web MCP server for agents License: MIT OR Apache-2.0

Join the ArtCraft community on Discord

VectorCraft on getartcraft.com · ArtCraft · All Crafting Apps


VectorCraft editing the Neon Drive poster: the title is selected, the Appearance panel shows the settings of its live Outer Glow, and the Properties panel shows its character settings
Neon Drive: a Pathfinder-cut sun, live Outer Glow on the type and grid, and clipping masks · examples/neon-drive.vectorcraft

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.

A look around · Made in VectorCraft · Why VectorCraft · Quick start · Status · The Crafting Apps · License

A look around

Three live blend ribbons clipped to the artboard, one selected with its key paths showing; the Layers panel lists the clip group, the blends and the selected blend's two key paths

Live Blends and Layers: editable key paths, smooth colour, every object a row

Direct Selection tool showing anchor points and Bézier handles on a crescent built with Pathfinder, with the contextual task bar below it

Pen and Direct Selection: real Bézier anchors and handles, plus a contextual task bar

Two lit building facades drawn on the left and right planes of a two-point perspective grid at sunset, with the Perspective Selection tool and the Plane Switching Widget

Perspective Grid: art attached to its planes stays editable in perspective · examples/perspective-city.vectorcraft

Four artboards in the light UI theme: Pathfinder, Gradient Mesh, radial Repeat and Envelope Distort

Multiple artboards, light theme: Pathfinder · Gradient Mesh · live radial Repeat · Envelope Distort · examples/feature-sheet.vectorcraft

Made in VectorCraft

Every piece below was built entirely through VectorCraft's command API, the same one the MCP server exposes to agents, and exported by VectorCraft's own renderer. The source files are in examples/.

Neon Drive synthwave poster: a striped orange sun setting between purple mountains over a glowing pink grid

Neon Drive: synthwave poster with glowing type and grid

Dusk poster: a gradient sky with stars and birds, a glowing sun behind layered purple mountains and pine trees

Dusk: gradient sky, glowing sun, layered mountains

Live Blends: three wide ribbons blending yellow to pink and teal to purple, crossing over a dark background

Live Blends: 70 steps, smooth colour, editable spines

Radial Repeat mandala: teal petals around a coral center, ringed by yellow dots

Radial Repeat: a live mandala

Envelope Distort: rainbow stripes and the word WARP bent into a waving flag

Envelope Distort: striped type warped into a flag

Gradient Mesh: three softly shaded purple, pink and cyan spheres on a dark background

Gradient Mesh: shaded spheres

Pathfinder: a purple gradient crescent moon and three orange stars on a peach background

Pathfinder: a crescent and stars from exact booleans

Why VectorCraft

  • Familiar. Illustrator's layout, tools, menus, panels and shortcuts: the Pen, Direct Selection, Pathfinder, Smart Guides, Appearance, Swatches, Layers and more. You already know how to use it.
  • Fast. Multithreaded SIMD rendering off the UI thread. 20,000 shapes render in about 27 ms at full retina resolution while the interface stays at 120 fps.
  • Robust. Exact curve booleans (no "cannot perform operation"), unlimited undo via structural sharing, and property-tested file round trips.
  • Open. A documented native format (.vectorcraft, JSON), first-class SVG, PDF (and PDF-compatible .ai) import and export, PNG/JPEG/WebP export, Export for Screens, and SVGZ, templates, GIF, TIFF and BMP on open.
  • Agent-native. Every menu item, tool gesture, panel and dialog can be driven over a JSON control channel and an MCP server, so Claude and other agents can draw, edit and export the way a person does.
  • Everywhere. One codebase for the desktop apps and the same UI in the browser.

Quick start

cargo run --release -p vectorcraft                          # desktop app
cargo run --release -p vectorcraft -- examples/dusk-poster.vectorcraft
cargo run --release -p vectorcraft -- --control 7979        # + JSON control channel
cargo run --release -p vectorcraft-cli -- mcp               # MCP server (stdio)
cargo run --release -p vectorcraft-cli -- run --in examples/ribbons.vectorcraft --export out.pdf   # headless batch
cargo run --release -p vectorcraft-cli -- bench examples/neon-drive.vectorcraft                   # render timing
cargo xtask bundle                                        # dist/VectorCraft.app (macOS)
cd apps/vectorcraft-web && trunk build --release            # web build → dist/web
cargo xtask ci                                            # fmt, clippy, tests, layering, wasm, vendor names

Japanese fonts come from storytold/craft-fonts, an optional build input (releases always use it): CRAFT_FONTS_DIR="$PWD/../craft-fonts" cargo run --release -p vectorcraft (an absolute path). Without it, Japanese text uses the installed system fonts. See docs/development.md.

On laptops with two graphics processors, VectorCraft uses the power-saving (integrated) one by default. To use the discrete one, choose Preferences › Performance › Graphics Processor › High Performance and restart, or start the app with WGPU_POWER_PREF=high (see docs/development.md).

Use it from Claude Code and other agents

Register the MCP server with Claude Code:

claude mcp add vectorcraft -- /path/to/vectorcraft-cli mcp

The details are in docs/mcp.md and docs/control-protocol.md.

For the experimental, unsupported 64-bit Windows 7 build, see Windows 7 instructions.

Status

VectorCraft is under active development. ROADMAP.md covers what ships today, the milestones, and honest time-to-parity estimates.

Where we are (2026-10-07): roughly 69–75% of Illustrator's features exist and work, and about 40–55% of "a power user can't tell the difference". Everyday vector illustration is close to usable: drawing and path tools, Pathfinder and Shape Builder, paint, gradients, appearance and transparency, type with styles, threading and Hebrew/Arabic bidirectional layout, and files (SVG, PDF and PDF-compatible .ai with PDF/X, EPS, DXF, EMF/WMF, raster formats and PSD, Print, Package). The interface speaks English, Japanese, Traditional and Simplified Chinese and Spanish (and Czech and Brazilian Portuguese in the menus). The scores are self-assessed, so the honest assessment explains how far to trust them.

What's missing:

  • 3D and Materials;
  • the Photoshop-style raster effects (Effect Gallery);
  • CJK composition for vertical type (vertical type itself has initial support, with a Japanese interface);
  • Variables and scripting;
  • an interaction-fidelity pass covering every tool's modifiers and small behaviours;
  • packaging for Windows and Linux.

Where we're going: next is the interaction-fidelity pass alongside the raster-effects package, then 3D and advanced type, then hardening and packaging for 1.0. The prioritized list is in Where we're lacking.

Workspace: crates/{geom, color, doc, pathops, text, effects, trace, brush, render, svg, pdf, eps, cad, metafile, format, tools, engine, ui-egui, mcp, testkit} and apps/{vectorcraft, vectorcraft-cli, vectorcraft-web}. The egui frontend is its own crate, so the UI can be swapped without touching the engine.

Agent and contributor rules (clean-room, the asset policy, no panics in shipped code, quality gates) are in AGENTS.md; docs/development.md explains how VectorCraft avoids crashing, and docs/releasing.md how releases are built, signed and published. Every bundled asset is listed with its licence in ASSETS.md.

The Crafting Apps

VectorCraft 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 · you are here 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

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 · VectorCraft

Star history

Star History Chart

License and credits

VectorCraft is dual-licensed under MIT or Apache-2.0, at your option. Copyright (c) 2026 ArtCraft Team and the VectorCraft 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. Release builds also embed the fonts of craft-fonts (Japanese, Simplified Chinese and Arabic faces; SIL Open Font License 1.1).

The app icon (an engraved dragon on VectorCraft red, #e8573f) is the owner's original artwork; its palette and files are in assets/app-icon/.

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 VectorCraft, 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. VectorCraft 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.

ArtCraft
Made by the ArtCraft team and community.

Languages
Rust 99.7%
Shell 0.2%