Ready-made layouts
Use layouts for text, statistics, lists, comparisons, images, browser frames, device frames, photos, and maps.
Agent Effects turns a YAML project into video. It renders each frame in native Rust, so it does not need browser screenshots or new code for every video.
agent-effects validate launch.afx.yamlProject valid6 scenes · 18 beats · 00:42
agent-effects render launch.afx.yaml --backend gpuCold openheadline · words-rise
doneThe bottleneckstatistic · count-up
doneNative pipelinecomparison · reveal
renderingLIVE OUTPUT Deterministic frames stream directly to FFmpeg.
The pipeline
Agents build scenes from clear, named parts. They can check the project and inspect still frames before they render the full video.
Write the story, scenes, layouts, and timing in one readable .afx.yaml project.
Find broken timing, missing assets, and invalid scene settings before you render the video.
Render one frame, a contact sheet, or a quick preview. Check what the video looks like, not only the source file.
Send CPU or Vulkan frames straight to FFmpeg without holding the whole video in memory.
Current capabilities
Agents can start with ready-made layouts and animation presets. They can also use layers and keyframes when they need exact control.
Use layouts for text, statistics, lists, comparisons, images, browser frames, device frames, photos, and maps.
The CLI includes help, a full schema, searchable examples, named presets, and error messages that explain how to fix a problem.
Render single frames, contact sheets, and quick previews. The CLI can also review a project and open a local review screen.
Get repeatable CPU output or use Vulkan on a supported GPU. Frames stream straight to FFmpeg.
Quick start
Clone the source, create a project, check it, and render one still frame before you make the full video.
Read the project documentation ↗# Clone the renderer
$ git clone https://github.com/dunctk/agent-effects.git
$ cd agent-effects
# Create and validate a project
$ cargo run -- init project.afx.yaml
$ cargo run -- validate project.afx.yaml
# Inspect, then render
$ cargo run -- frame project.afx.yaml --time 2 --output frame.png
$ cargo run -- render project.afx.yaml --output output.mp4
Build in the open