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.
AniCraft on getartcraft.com · ArtCraft · All Crafting Apps
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
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).
Sample animation: classic tweens with easing, symbols with their own timelines, 48 frames at 24 fps
- 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
unsafecode (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.
- 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.
- 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.
- 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.
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 cratesThe 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.
Register the MCP server with Claude Code:
claude mcp add anicraft -- /path/to/anicraft-cli mcpThe details, including the server entry for other MCP clients, are in docs/mcp.md.
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.
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.
| 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.
| 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 |
| 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.
| Build | File |
|---|---|
| x86_64 | anicraft-<ver>-freebsd-x86_64.tar.gz |
| Build | File | Notes |
|---|---|---|
| Static site | anicraft-web-<ver>.zip |
Runs in a modern browser; host it on any static server |
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.
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
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.
Made by the ArtCraft team and community.





