Skip to content

Welcome

ManimGX

Blazingly fast 3D animation engine for agents, compatible with Manim CE's API.
Powered by Rust and wgpu. Install with a prompt or pip. Run in the browser.

Documentation · Quickstart · Examples · API Reference

Test coverage PyPI version npm version PyPI total downloads npm monthly downloads

The quadratic formula: completing a square by moving colored rectangles and equation terms Fourier series: a chain of rotating arrows draws the outline of π A matrix moves the plane: a grid, basis arrows and a unit square transform together
A tangent slides along a curve as its slope traces the derivative Complex functions bend a grid into parabolas, circles and rays The Lorenz attractor: nearby trajectories separate as they trace a butterfly in three dimensions
Three spinning tops precess and nod as their axes trace curves on glass spheres The Hopf fibration: colorful linked circles form nested tori as beads travel along them A rainbow helicoid bends into a catenoid while preserving its intrinsic curvature

36.2 seconds of video, rendered in 3.08 seconds. Across five scenes at 1080p60 on an Apple M4 Pro, ManimGX is 90.6× faster than ManimCE, 11.5× faster than ManimGL, and 18.7× faster than Blender Workbench, from launch to finished MP4. How it was measured: the scenes, the settings and every run.

Total render times: ManimGX 3.08 s, ManimGL 35.28 s, Blender Workbench 57.61 s, ManimCE 278.83 s, Blender EEVEE 601.40 s

All engines use the fastest encoding preset available. Lower is better.

Compare the same scene. Linked rings at 2.5 seconds, rendered by each engine.

ManimGX ManimCE ManimGL Blender Workbench Blender EEVEE
Eight linked rings rendered by ManimGX at 2.5 seconds Eight linked rings rendered by ManimCE at 2.5 seconds Eight linked rings rendered by ManimGL at 2.5 seconds Eight linked rings rendered by Blender Workbench at 2.5 seconds Eight linked rings rendered by Blender EEVEE at 2.5 seconds

Get started

With a prompt. Paste into Claude Code, Codex, or Cursor. Your agent handles setup:

Follow https://manimgx.academa.ai/llms.txt.
Install ManimGX, make a 3D animation of the solar system, and open it.

With pip. Install on macOS, Linux or Windows with Python 3.13+:

pip install manimgx

Fonts, typesetting and video encoding are included. For editor setup and a guided first animation, follow the Quickstart.

From Python to MP4

Save this as scene.py:

import manimgx as m


class Hello3D(m.ThreeDScene):
    def construct(self) -> None:
        self.set_camera_orientation(phi=65 * m.DEGREES, theta=-45 * m.DEGREES)
        self.begin_ambient_camera_rotation(rate=0.5)
        cube = m.Cube(side_length=3, fill_opacity=0.3, stroke_width=2)
        self.play(m.Create(cube), run_time=2)
        self.wait(4)

Render it:

manimgx render scene.py

You get Hello3D.mp4, a 1080p60 video:

A blue cube is drawn as the camera circles it

Why ManimGX?

An API for 3D video in the age of agents. Your agent writes Python using Manim CE's API. ManimGX's Rust + wgpu engine renders the MP4, blazingly fast.

  • Fully statically typed. Keyword arguments and .animate chains included.
  • 2D and 3D together. Surfaces, meshes and moving cameras alongside text, equations and plots.
  • Runs in the browser. npm install manimgx. Pyodide runs Python in a Web Worker; WebGPU renders the scene. Embed a scene with no render server.
  • Agent feedback. manimgx inspect: storyboards and 2D layout checks, at play endings or times you choose.
  • Text and math. Write LaTeX or Typst. No LaTeX installation needed.
  • Speech in sync. Match animations to spoken words with self.say().

Documentation

manimgx.academa.ai has the guides, rendered examples with source code, and API reference:

  • Quickstart: install, set up your editor, and render your first scene.
  • User Guide: learn scenes, animations, 3D, text and sound, one idea at a time.
  • Examples: watch complete films and read the Python that makes them.
  • API Reference: look up classes, methods and their typed parameters.
  • Coming from Manim CE: adapt existing scenes and check where behavior differs.

For agents, llms.txt provides setup instructions and links to the documentation as Markdown.

On the shoulders of giants

Grant Sanderson created Manim. ManimGX targets the API of Manim Community Edition, the widely used community-maintained fork.

The Rust renderer uses wgpu for native GPU rendering and WebGPU in the browser. Its 3D lighting is adapted from Google's Filament: physically based materials, image-based lighting, ambient occlusion, bloom and AgX tone mapping. Typst typesets text and math, with mitex translating LaTeX input to Typst. x264 encodes native video exports as H.264; FFmpeg decodes imported audio, using libopus for Opus.

Pyodide runs Python scenes in a browser worker. Linux wheels bundle Mesa's lavapipe for Vulkan rendering on the CPU when no suitable GPU is available.

Community

Questions, bug reports and feature requests start with an issue. To contribute, read Contributing and the Developer Guide.

Changelog · Citing ManimGX

Everyone participating follows the Code of Conduct. Report vulnerabilities privately through the security policy.

License

ManimGX's own code is MIT-licensed. Native wheels include x264 and are GPL-3.0-or-later as a whole.

Bundled components retain their licenses: see the third-party notices, Linux renderer notices, and the Noto and Noto CJK font licenses.

This software uses code of FFmpeg licensed under LGPL-2.1-or-later. Complete source, including FFmpeg, is in manimgx-X.Y.Z-source.tar.xz on each GitHub release.