Skip to content
storytoldPublic

About

AniCraft: An open-source 2D animation editor written from scratch in pure Rust.

Resources

Stars

96 stars

Watchers

5 watching

Forks

Repository files navigation

ArtCraft

AniCraft

2D vector animation studio; an open-source, clean-room reimplementation of Adobe Animate, rebuilt in pure Rust.

A native 2D vector animation editor with timeline, layers, keyframes, classic and shape tweens, onion skinning, and an egui stage. It runs natively on macOS, Windows, Linux and FreeBSD, and in the browser via WebAssembly.
By the ArtCraft team.

100% Rust egui macOS · Windows · Linux · FreeBSD · Web License: MIT OR Apache-2.0 Status: early alpha

Join the ArtCraft community on Discord

AniCraft on getartcraft.com · ArtCraft · All Crafting Apps


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.

Why AniCraft · Features · Build and run · Headless & Agents · Architecture · Status · Downloads · Crafting Apps · Discord


🎛️ Familiar by design

Stage, tools, timeline, layers, keyframes, properties and library are where your hands expect them. If you know Adobe Animate or Flash, you already know AniCraft.

⚡ Native and fast

A pure Rust engine with a deterministic analytic anti-aliasing CPU oracle renderer, GPU-ready via wgpu / egui, and rayon row parallelism. No Electron, no webview, no waiting.

🎞️ Vector tweens

Classic tweens with easing presets and shape tweens with arbitrary contour morphing (geom::morph). The document is plain data, and the picture at a frame is a pure function evaluate(doc, frame).

🤖 Headless first

Every action is an engine command. Drive the exact same engine from the UI, the CLI or the JSON-lines agent channel.

Why AniCraft

AniCraft is a clean-room, native 2D vector animation studio designed for animators, motion designers, and game developers. Built from scratch in pure Rust, it delivers a modern, lightweight, high-performance alternative to Adobe Animate with zero runtime bloat:

  • Pure Rust & memory safe: No webviews, no Electron, and no unsafe code (unsafe_code = "forbid").
  • Deterministic CPU oracle renderer: Analytic anti-aliasing via signed-area coverage accumulation, non-zero and even-odd fill rules, linear and radial gradients, round-join strokes, and multi-threaded band rendering.
  • Non-destructive & live: Edits render live in the same frame. Layered architecture with structural sharing (Arc) keeps undo and history instant and memory-proportional.
  • Interchange ready: Open Adobe Animate documents (.fla, .xfl, XFL folders), import SVG drawings straight to the stage, export PNG frames and sequences, animated GIFs with palette quantization, and SVG vector frames.

Features

Stage and Drawing Tools

  • Selection & Subselection: Select, move, nudge with arrow keys, anchor and Bézier handle editing on paths (Subselection (A)), add and delete points.
  • Vector Drawing: Pen (P) with smooth handles and corner conversion, Pencil (Shift+Y) with Schneider curve fitting and smoothing, Rectangle (with corner radii), Oval, PolyStar, and Line tools.
  • Free Transform (Q): Interactive scaling, corner/edge handles with proportional Shift and centre Alt modifiers, and rotation with 15° snapping.
  • Fills and Strokes: Paint Bucket (K) with smart gap closure detection, Ink Bottle (S), solid colors, linear/radial gradients, and stroke styling.
  • Arrangement & Alignment: Align left/center/right/top/middle/bottom (with stage alignment support), distribute, rotate 90° CW/CCW, and horizontal/vertical flipping.

Timeline & Animation

  • Layers & Organization: Normal layers, guide layers, and mask layers (stencil grouping where masked layers clip cleanly under the mask).
  • Frame Management: Keyframes (F6), blank keyframes (F7), frame insertion (F5), frame span dragging, multi-frame selection across layers, and cut/copy/paste frames.
  • Classic & Shape Tweens: Classic tweens with 8 easing presets and custom ease curves; shape tweens morphing between arbitrary vector contours.
  • Onion Skinning: Visual range before and after the playhead for precise in-betweening.
  • Symbols & Instances: Graphic symbols with nested timelines, independent loop modes (Loop, Play Once, Single Frame), and first-frame offsets.

Workflow & Customization

  • Shortcut Editor (F1): Interactive keymap editor to customize, rebind, or clear any tool or command shortcut.
  • Command Palette (Ctrl+K): Quick fuzzy search and execution of all engine commands.
  • Safety & Recovery: Tiered confirmation for destructive actions, unsaved changes guards, and non-overwriting untitled imports.

Build and run

cargo build                       # whole workspace
cargo run                         # desktop app with the sample animation
cargo run -- --screenshot shots/now.png   # draw ~120 frames, save the window, exit
cargo test                        # all crates

Headless / agents

AniCraft is headless first: every action in the UI is an engine command, accessible through the CLI or over JSON-lines.

cargo run -p anicraft-cli -- info --sample
cargo run -p anicraft-cli -- render --sample --frame 12 --out frame12.png
cargo run -p anicraft-cli -- render-seq --sample --out-dir frames --scale 0.5
cargo run -p anicraft-cli -- gif --sample --out animation.gif --fps 24
cargo run -p anicraft-cli -- commands                 # the registry as JSON
cargo run -p anicraft-cli -- exec --sample draw.rect '{"x":10,"y":10,"w":80,"h":40}' --save out.anicraft
cargo run -p anicraft-cli -- serve --sample           # JSON-lines on stdin/stdout
cargo run -p anicraft-cli -- mcp --sample             # MCP server for AI assistants (docs/mcp.md)

The serve protocol accepts one JSON request per line:

{"id": 1, "cmd": "timeline.insert_keyframe", "params": {"frame": 10}}

And returns structured status:

{"id": 1, "ok": true, "result": {}, "revision": 7, "frame": 0}

Send {"cmd": "quit"} to exit.

Architecture

The codebase enforces strict downward-only layering:

crates/geom     L0  Vec2, Affine (decompose/compose), Rect, Path, flattening, hit testing
crates/xml      L0  Bounded XML element reader shared by the importers (XFL, SVG)
crates/doc      L1  Document model, easing, timeline evaluation, sample scene
crates/text     L1  Fonts on this computer, shaping and line layout into outlines (ADR 0012)
crates/render   L2  CPU oracle renderer (coverage accumulation, paints, strokes, PNG)
crates/xfl      L2  XFL/FLA import: own XML + zip readers, edges → paths (ADR 0009)
crates/svg      L2  SVG import: shapes, groups, use, styles, transforms, gradients → shapes
crates/engine   L3  Session, undo (with gesture coalescing), command registry, .anicraft format
crates/cli      L4  anicraft-cli: info/render/render-seq/commands/exec/run/new/serve/mcp
src/            L5  egui shell (app, menus, stage, timeline, panels, theme)

No code below src/ depends on egui, eframe, or windowing libraries.

Documents

Status

Important

Status: Early Alpha (Not yet for public consumption). AniCraft is under active early development. The core document model, vector rendering oracle, egui shell, classic and shape tweens, and initial XFL/SVG imports are functional, but it is not yet ready for production animation work. See docs/roadmap.md for milestones M0–M8 and honest progress.

Downloads

On GitHub, the latest release has every build listed below, and all releases has earlier versions and their notes. <ver> 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) anicraft-<ver>-windows-x64.msi anicraft-<ver>-windows-x64-portable.zip
arm64 (Snapdragon and other ARM PCs) anicraft-<ver>-windows-arm64.msi anicraft-<ver>-windows-arm64-portable.zip
x86 (32-bit) anicraft-<ver>-windows-x86.msi anicraft-<ver>-windows-x86-portable.zip

Installers and executables are code-signed.

macOS

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

Linux

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

RISC-V (riscv64): anicraft-<ver>-linux-riscv64.tar.gz, a tarball only.

FreeBSD

Build File
x86_64 anicraft-<ver>-freebsd-x86_64.tar.gz

Web (WebAssembly)

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

The Crafting Apps

AniCraft 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 GitHub Website
AniCraft 2D vector animation studio · 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 · AniCraft


License and credits

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

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

Adobe, Animate and Flash are trademarks or registered trademarks of Adobe Inc. in the United States and/or other countries. AniCraft 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 and file formats it is compatible with.

ArtCraft
Made by the ArtCraft team and community.

About

AniCraft: An open-source 2D animation editor written from scratch in pure Rust.

Resources

Stars

96 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages