# EffectCraft: a Rust compositor for motion graphics and agents

> EffectCraft is an open-source After Effects-style compositor built in Rust for motion graphics, titles, visual effects and automated workflows. Its readable JSON projects, built-in Lottie interchange and command surfaces are notable, but the project labels itself young and moving fast.

**storytold/effectcraft** — EffectCraft: An open-source motion graphics and compositing tool written by scratch in pure Rust

- Repository: https://github.com/storytold/effectcraft
- Website: https://getartcraft.com/apps/effectcraft
- Stars: 7,763 · Forks: 4,154
- Language: Rust
- License: Apache-2.0
- Published: 2026-10-16 · Updated: 2026-10-16 · Language: en
- Canonical page: https://hysenlabs.com/projects/storytold-effectcraft

## EffectCraft's compositor scope and target artist

EffectCraft addresses animated titles, motion graphics and visual-effects compositing, the work commonly associated with Adobe After Effects. Its intended users include motion designers, digital artists and teams that need to construct compositions from footage, text, shapes, solids, nested compositions and generated material. The README also positions it for music, games and generative work, while its automation interfaces target users who need applications and agents to drive editing operations.

The interface deliberately follows familiar concepts: Project, Composition, Timeline, Effect Controls, Properties and Effects & Presets panels. Layers can be dragged into the composition viewer or placed in the Timeline at a selected time. Properties can be animated with several interpolation modes, including linear, Bezier, hold, auto Bezier and continuous Bezier. The README also documents a Graph Editor, exact frame timing, track mattes, parenting, motion blur and all 38 blend modes.

That familiarity reduces the conceptual cost of moving from After Effects, but it should not be confused with full project or plug-in compatibility. The README does not claim to import ordinary After Effects projects. It describes a clean-room reimplementation with matching workflow ideas, 306 effects and an After Effects object model for JavaScript expressions. Teams with extensive `.aep` archives or custom effects must verify their actual files before assuming a straightforward migration path.

## Layer, keyframe and render architecture in EffectCraft

The documented composition model is built around layers and animated properties. Supported layer types include solids, shapes, text, footage, nested compositions, nulls, adjustment layers, cameras and lights. Effects are stacked on layers, while masks, shape operations, text animators, expressions and transform properties modify their output. The Graph Editor represents changing values and speeds, and interpolation dialogs expose how keys move between frames.

EffectCraft separates many implementation concerns into Rust workspace crates. `effectcraft-project` handles project data, while `effectcraft-keyframe`, `effectcraft-model`, `effectcraft-engine` and `effectcraft-render` represent distinct parts of the composition and rendering system. Other crates cover geometry, rasterization, color, paths, text, effects, tracks, expressions, Lottie, SVG, PSD, PDF and automation. Media and encoder crates include VP9, AV1, HEVC and Opus paths. This layout makes the architecture visible in the repository even though the README does not provide a complete execution trace.

Projects use versioned JSON with the `.ecproj` extension. That choice makes textual diffs and version-control workflows possible, unlike an opaque binary project container. Media decoding and encoding are described as pure Rust implementations, with no FFmpeg dependency. EffectCraft supports native macOS, Windows and Linux operation as well as browser use, according to the README. These are meaningful design choices for a compositor, but the README does not document codec compatibility matrices, memory limits or production render performance.

## 306 effects and JavaScript expressions in EffectCraft

EffectCraft documents 306 effects spanning blur, sharpening, channels, color correction, distortion, generation, keying, mattes, noise, grain, perspective and simulation. Examples include Curves, Levels, Hue/Saturation, Lumetri Color, Warp, Bulge, Turbulent Displace, Fractal Noise, Gradient Ramp, Stroke, CC Particle World, CC Rainfall, Shatter and Card Dance. It states that its effect set covers all 298 effects listed for After Effects and adds eight more.

That count is a scope statement, not proof of behavioral parity. The README does not provide a per-effect compatibility report, identify unsupported third-party plug-ins or describe how proprietary formats are handled. A visual match and a correctly named parameter are not enough to establish identical edge handling, precision or render output. Particular effects should therefore be checked against representative production assets rather than inferred from the total.

Expressions use JavaScript and the documented After Effects object model. The README specifically names `wiggle`, `loopOut`, `thisComp.layer("…")` and vector math on arrays. Expressions can be edited inline, and the pick-whip links an expression to scene properties. Puppet tools add Position, Advanced, Bend, Starch and Overlap pins, mesh-based control, pin recording, null-driven rigs and follow-through for hair or cloth. The breadth is substantial, but the README does not document expression sandboxing, error reporting or differences from After Effects semantics.

## EffectCraft installation and first composition workflow

The README does not include concrete installation commands, package names, download filenames or platform-specific build steps. It directs readers to the EffectCraft page at `https://getartcraft.com/apps/effectcraft` and includes a Downloads section in its navigation. The repository also contains `xtask`, `packaging/` and a Rust workspace, but those entries do not by themselves establish a supported installation procedure. There is no justified command block to provide here.

The first documented work is a GUI composition workflow. Create a composition, add a solid, shape, text, footage or nested composition as a layer, and animate the relevant properties by creating keyframes. Effects can then be dragged from Effects & Presets onto a layer. The Composition panel displays the result, the Timeline organizes layers and keys, and the Properties panel exposes settings for the selected object. The README also describes a Render Queue, but it does not provide its format options, destination behavior or failure handling.

Before using a downloaded build, the first practical checks are whether it starts on the intended system, whether the expected fonts are installed for shaped text, and whether a small test composition previews and renders. After Effects-style menus and shortcuts can help experienced users orient themselves, yet the interface being familiar does not guarantee that every project asset will open. The README does not document a rollback procedure.

## Lottie, JSON projects and scripted control

Lottie import and export are built into EffectCraft, without a separately documented plug-in step. This is one of the clearest reasons to consider the compositor for web and app animation. The workflow described by the README is to send animations into those targets through Lottie, while `.ecproj` files retain compositions as versioned JSON. Designers can therefore inspect project structure through source control and review changes as text rather than treating the project as an opaque format.

Scripting is implemented through a shared command registry. The README states that every menu item, timeline drag and property edit passes through this registry, making the same actions available from a command line, a JSON control channel and an MCP server for agents. The repository includes `crates/effectcraft-automation`, `crates/effectcraft-script` and `.mcp.json`, which is consistent with that interface design. The README does not document exact CLI syntax, authentication for remote control, MCP configuration or permission boundaries, so those details cannot be assumed.

These capabilities change how EffectCraft fits into a pipeline. An artist can retain a structured project file while another process performs repeatable edits. The JSON control surface may also suit tool authors and agent workflows. However, external programmability increases the importance of stable command identifiers, validation and backward-compatible project schemas. The `.ecproj` extension establishes a format, but the README does not state its schema compatibility guarantees across releases.

## EffectCraft release risk, licensing and upgrade work

The repository is not archived, and its last push was on 2026-10-15. Releases include v0.10.0 on 2026-10-14, v0.9.2 on 2026-10-12 and v0.8.0 on 2026-10-11. This recent activity does not erase the README's explicit description of EffectCraft as young and moving fast. It instead shows that change is occurring quickly, which can mean frequent improvements and a correspondingly high cost of validating upgrades.

The repository identifies Apache-2.0, while `Cargo.toml` declares `MIT OR Apache-2.0`, and the repository contains both `LICENSE-MIT` and `LICENSE-APACHE`. The README badge also displays `MIT OR Apache-2.0`. This is a licensing choice with obligations, not legal advice. Distribution, linking and notice requirements should be reviewed against the exact files included in a chosen build or deployment.

Upgrade work cannot be estimated from the release cadence alone. The README does not document migration automation, project conversion, plug-in versioning, deprecation periods or rollback. Teams using `.ecproj` files in version control can inspect textual changes, but effect semantics may still change. A production adoption decision should therefore treat a representative composition as a regression fixture and verify it against the exact EffectCraft release under consideration.

## Conclusion

EffectCraft fits artists who want After Effects-style compositing, readable project files and programmatic control, especially when Lottie export or agent access matters. It is a poor default for a production team that requires a documented migration path from existing After Effects projects, extensive external plug-in compatibility or a proven release process. Verify project compatibility, effect parity, export quality and the operating-system build before adoption. The deciding fact is that EffectCraft is young and moving fast rather than an established After Effects replacement.

## FAQ

### Does EffectCraft support After Effects projects?

The README describes EffectCraft as a clean-room reimplementation with familiar panels, keyframe behavior, effects and an After Effects expression object model. It does not document import of standard After Effects `.aep` projects.

### Can EffectCraft export animations for the web?

Yes. The README states that Lottie import and export are built in, without a plug-in, for animations intended for the web and apps.

### Can scripts or agents control EffectCraft?

The documented command registry makes menu, timeline and property actions reachable from a command line, a JSON control channel and an MCP server. The README does not provide exact MCP setup instructions.

## Sources

- [License: Apache-2.0](https://github.com/storytold/effectcraft/blob/main/LICENSE)
- [Project website](https://getartcraft.com/apps/effectcraft)
- [README](https://github.com/storytold/effectcraft/blob/main/README.md)
- [Releases](https://github.com/storytold/effectcraft/releases)
- [storytold/effectcraft on GitHub](https://github.com/storytold/effectcraft)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/storytold-effectcraft
