Skip to content
storytoldPublic

About

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

Resources

Accessibility

Stars

171 stars

Watchers

9 watching

Forks

Repository files navigation

ArtCraft

AniCraft icon: an engraved rabbit on a yellow tile

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. Built by the ArtCraft team.

Status: early alpha Written in pure Rust Runs on macOS, Windows, Linux, FreeBSD and the web MCP server for agents License: MIT OR Apache-2.0
Scanned by SonarCloud Reviewed by CodeRabbit

Join the ArtCraft community on Discord

AniCraft on getartcraft.com · ArtCraft · All Crafting Apps


AniCraft with the sample animation open: the stage shows a ball, a star and a sun over hills at dusk; the timeline below has five layers with violet classic-tween spans, and the Properties panel shows the selected tween's easing curve
The sample animation: stage, tools, timeline with classic tweens, and Properties with the easing curve · cargo run

Note

ArtCraft is a community of artists from all walks of life. Painters, animators, filmmakers, illustrators, game makers — if you make things, you're one of us. Come say hi on Discord.

A look around · Made in AniCraft · Why AniCraft · Features · Quick start · Status · Downloads · The Crafting Apps · License

A look around

The Subselection tool showing anchor points and Bézier handles on a blue shape, next to a wavy line drawn with the Pencil; the Properties panel shows the shape's position, scale, fill and stroke

Subselection, Pen and Pencil: real Bézier anchors and handles, curve-fitted freehand lines

A block of frames selected across three layers in the timeline, with the ball squashed mid-tween on the stage

Timeline: frame ranges across layers, keyframes you drag, classic and shape tweens

Free Transform on the ball with corner and edge handles; the Properties panel shows the symbol instance's position, scale, rotation, alpha and looping

Free Transform and symbols: scale, rotate and move instances with nested timelines

The command palette open over the stage, searching for key and listing the keyframe commands with their shortcuts

Command palette: every engine command, one search away (Ctrl+K)

The Keyboard Shortcuts editor listing essentials and tools with their keys, a filter box and reset buttons

Shortcut editor: rebind, add or clear the key for any command or tool (F1)

The Preferences window with interface and data fonts, interface scale, stage rendering mode, timeline, file dialog and safety settings

Preferences: fonts, interface scale, stage rendering and confirmations

Made in AniCraft

The sample animation, exported as an animated GIF by AniCraft's own renderer from the command line (anicraft-cli gif --sample --out sample.gif --scale 0.5).

The sample animation: a ball bounces and squashes across hills at dusk while a star spins and the sun pulses
Sample animation: classic tweens with easing, symbols with their own timelines, 48 frames at 24 fps

Why AniCraft

  • Familiar. 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.
  • Fast. A pure Rust engine with a deterministic, analytic anti-aliasing CPU renderer, band-parallel rendering, a tiled stage and a background render worker. No Electron, no webview, no waiting.
  • Robust. No unsafe code (unsafe_code = "forbid"), no panics on input, every command fuzzed, and undo with structural sharing (Arc), so history stays instant and memory-proportional.
  • Time is a function. The document is plain data, and the picture at a frame is a pure function, evaluate(doc, frame). Classic tweens with easing presets and shape tweens with contour morphing.
  • Open. A documented native format (.anicraft, JSON). Opens Adobe Animate documents (.fla, .xfl, XFL folders), imports SVG to the stage, and exports PNG frames and sequences, animated GIF, SVG frames, sprite sheets, Lottie, and WebM/MP4 through your own ffmpeg.
  • Agent-native. Every action is an engine command. Drive the same engine from the UI, the CLI, a JSON-lines channel or the MCP server, so Claude and other agents can draw, animate and export.

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, Line and Text (T).
  • 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 gap closing, Ink Bottle (S), solid colours, linear/radial gradients, bitmap fills and stroke styling.
  • Arrangement & alignment: align left/center/right/top/middle/bottom (with stage alignment), distribute, rotate 90° CW/CCW, and horizontal/vertical flipping.

Timeline and animation

  • Layers & organization: normal, guide, motion-guide and mask layers, and nestable layer folders.
  • Frame management: keyframes (F6), blank keyframes (F7), frame insertion (F5), 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: a visual range before and after the playhead for in-betweening.
  • Symbols & instances: graphic symbols with nested timelines and loop modes (Loop, Play Once, Single Frame), movie clips, filters and blend modes, and scenes.

Workflow and 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, crash-recovery autosave, and non-overwriting untitled imports.

Quick start

git clone https://github.com/storytold/anicraft
cd anicraft

cargo run --release                                     # desktop app with the sample animation
cargo run --release -- --screenshot shots/now.png       # draw ~120 frames, save the window, exit
cargo run --release -p anicraft-cli -- info --sample
cargo run --release -p anicraft-cli -- render --sample --frame 12 --out frame12.png
cargo run --release -p anicraft-cli -- render-seq --sample --out-dir frames --scale 0.5
cargo run --release -p anicraft-cli -- gif --sample --out animation.gif
cargo run --release -p anicraft-cli -- commands         # the command registry as JSON
cargo run --release -p anicraft-cli -- exec --sample draw.rect '{"x":10,"y":10,"w":80,"h":40}' --save out.anicraft
cargo run --release -p anicraft-cli -- serve --sample   # JSON-lines on stdin/stdout
cargo test                                              # all crates

The interface typefaces (Inter and JetBrains Mono) come from storytold/craft-fonts, an optional build input: CRAFT_FONTS_DIR="$PWD/../craft-fonts" cargo run --release (an absolute path). Without it, AniCraft uses egui's built-in fonts. See docs/development.md.

The serve protocol takes one JSON request per line, {"id": 1, "cmd": "timeline.insert_keyframe", "params": {"frame": 10}}, and answers with its status, {"id": 1, "ok": true, "result": {}, "revision": 7, "frame": 0}. Send {"cmd": "quit"} to exit.

Use it from Claude Code and other agents

Register the MCP server with Claude Code:

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

The details, including the server entry for other MCP clients, are in docs/mcp.md.

Status

Important

Early alpha: not yet for production animation work. The core document model, vector renderer, egui shell, classic and shape tweens, and the first XFL and SVG imports work; much is still to come.

docs/roadmap.md has the honest status by dimension, milestones M0–M8 and what's next.

What's missing: audio layers, ActionScript (frame scripts are counted on import but not kept yet, ADR 0013), motion tweens from XFL, a GPU renderer, and macOS and Linux CI runners (AniCraft is verified on Windows so far).

Workspace: strict downward-only layering, checked by cargo test:

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.

Agent and contributor rules (clean room, the asset policy, no panics in shipped code) are in AGENTS.md. docs/requirements.md has the scope, docs/architecture.md the design, docs/product-principles.md the design and user experience principles, docs/accessibility.md keyboard, screen-reader, high-contrast and scaling support, and docs/development.md the setup, testing and build hygiene. Every bundled asset is listed with its licence in ATTRIBUTION.md.

Downloads

New to AniCraft? Download it from the AniCraft 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. <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
FigCraft Interface design and prototyping GitHub Website
WordCraft Word processing and documents GitHub Website
SoundCraft Audio recording and editing GitHub Website
DeckCraft Presentations and slide decks GitHub Website
CADCraft Computer-aided design GitHub Website
GridCraft Spreadsheets and data GitHub Website
TextureCraft 3D texture painting GitHub Website
Craft Anything See how any software works, then build your own GitHub Website
AniCraft 2D vector animation · you are here GitHub Website
SolidCraft Parametric 3D CAD by Tangency Labs (community app) GitHub

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

Star history

Star History Chart

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 app icon (an engraved rabbit on AniCraft yellow, #dac604) 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 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

Accessibility

Stars

171 stars

Watchers

9 watching

Forks

Releases

Packages

Used by

Contributors

Languages