Make teaching animations with Manim on this computer: derivations, geometry, plots and algorithm steps, at no generation cost.
Teaching animations with Manim Community — the community edition of the engine behind 3Blue1Brown's maths videos: derivations, geometry, function plots, algorithm steps, code walk-throughs and physics diagrams. Rendered on your computer, with no video generation model and no per-video cost.
| Tool | What it does | Enabled by default |
|---|---|---|
Prepare Manim manim_setup | Creates the Python environment, installs Manim, checks for LaTeX, test-renders a frame; tells you item by item how to install anything missing | Yes |
Manim explainer manim_explainer | Makes an explainer video from structured content, no code needed | Yes |
Manim custom animation manim_animation | Takes a piece of Manim scene code; draw anything | No |
Manim still manim_still | Same as above, but only the last frame (PNG) | No |
All four tools report progress as they run (the workflow run panel shows something like "Part 2/5: Pythagorean theorem"); when you cancel from a workflow or task, Manim stops together with the LaTeX processes it started.
The first time, run "Prepare Manim" once from the plugin page. The rendering tools do not install the environment on the side: an install takes one to several minutes, while the rendering tools are budgeted around "an agent waits at most 180 seconds per call".
Title page → step-by-step explanation → key takeaways. Each step can have:
sin(x) + x^2/8, with the axis ranges chosen automatically and breaks at asymptotes), or code (syntax highlighted, boxing the lines being explained in order, e.g. [2, "4-6", 9]).Aspect ratios 16:9 / 9:16 / 1:1 / 4:3 / 3:4, quality 480p–4K, dark / light theme, custom accent color and font. The steps in the result are the start and end times each step actually rendered at; turning on subtitles also returns an .srt split by sentence — handy for voicing the narration or syncing subtitles.
Content is never spliced into code: the scene is a fixed file shipped with the plugin, and the content is handed to it as JSON. Text goes into Text (plain text); formulas first have constructs that read or write files or define commands, such as \input, \write18 and \def, blocked; function expressions are evaluated from a syntax tree (not via eval; only numbers, x, arithmetic and whitelisted functions are accepted).
from manim import *
from mosael import DATA # the data passed with the call
class Sorting(Scene):
def construct(self):
values = DATA.get("values", [5, 2, 4, 1, 3])
bars = VGroup(*[Rectangle(width=0.8, height=v * 0.6, fill_opacity=0.8, color=BLUE) for v in values])
bars.arrange(RIGHT, buff=0.2, aligned_edge=DOWN)
self.play(FadeIn(bars))
self.play(Swap(bars[0], bars[1]))
self.wait()When the code contains only one scene class, scene can be left empty. Formats are mp4 / webm / mov / gif, with optional transparent background (mp4 is switched to mov). Errors point to which statement on which line (Line 12 self.play(Swapp(a, b)): NameError: …), so fix it and call again; syntax errors are reported before Manim is even started.
Custom animations and stills execute arbitrary Python code, running on this computer as you. So:
"effects": "local-code" in the manifest), stating
"This runs code on your computer" along with the start of the code, and it only runs once you approve; on the plugin page they are marked "Asks first";open, exec and __import__ are not allowed, nor are things like os.system or np.save, nor reading local files into the picture without open (SVGMobject / ImageMobject reading by path, Code(code_file=…), \input in formulas). The guardrail stops out-of-bounds code written carelessly or induced by a web page; it is not a sandbox;Explainer videos do not execute any code you give them, and are enabled by default.
Manim needs Python 3.11+ (the plugin uses the Python that ships with Mosael, so you don't install it), plus:
| System | Needed before installing Manim | LaTeX (optional, for typesetting formulas) |
|---|---|---|
| Windows | Nothing — all dependencies have prebuilt binary packages | MiKTeX; allow it to install missing packages automatically during setup |
| macOS | brew install cairo pkg-config (pycairo has no macOS binary package and must be compiled), plus xcode-select --install | MacTeX, or brew install --cask mactex-no-gui |
| Linux | Debian/Ubuntu: sudo apt install build-essential pkg-config libcairo2-dev libpango1.0-dev; Fedora: sudo dnf install gcc pkg-config cairo-devel pango-devel | sudo apt install texlive texlive-latex-extra dvisvgm |
a² + b² = c², (-b ± √(b²-4ac))/(2a)) and still produce the video, noting this in the result; MathTex / Tex in custom animations will not work, and you get a "LaTeX is not installed" message with install instructions. If you want the slimmed-down TinyTeX, the Manim docs list the packages to install.plugin-data/dev.mosael.manim in the Mosael data directory. Plugin updates do not reinstall it; uninstalling the plugin deletes it too. When a Mosael upgrade moves its bundled Python, the environment is taken over automatically; if the minor version changes (e.g. 3.13 → 3.14), the rendering tools say so clearly — run "Prepare Manim" again to rebuild for the new version.process:spawn: starts Python / Manim / LaTeX, and executes custom animation code.network:pypi: installs Manim from PyPI when preparing the environment. Rendering itself does not go online (the request Manim makes after rendering to check for new versions is turned off).filesystem:write: writes to the plugin's own data directory.Manim 0.21.0 (pinned to the exact version; when a plugin upgrade changes the version, the rendering tools remind you to run "Prepare Manim" again, which reinstalls the new version). Manim Community is MIT licensed; the plugin does not distribute Manim's code but installs it from PyPI on your computer.
manim_setupCreates a Python environment in the plugin's data directory, installs the pinned Manim, checks LaTeX and renders a test frame; anything missing (cairo on macOS, dev packages on Linux, LaTeX) comes back with how to install it. The first run takes a few minutes; later runs are near-instant. The render tools do not install anything, so run this first.
manim_explainerTurns structured teaching content into a Manim explainer video (mp4, into the asset library), no code needed: a title card, then steps (each with a title, narration captions, points revealed one by one, plus one visual: LaTeX formulas, a function plot or code highlighted stop by stop), then key takeaways. Step length follows the narration's reading time; returns each step's actual start and end (steps) and optionally an .srt file to sync a voice-over. Without LaTeX on this computer formulas are shown as plain text. 720p by default; avoid production / 4k when called by the agent.
manim_animationRenders a Manim (Community 0.21) scene from Python code (into the asset library). Define class Name(Scene) and self.play(...) in construct(self); from manim import * is enough, and the data given here is from mosael import DATA. By default only drawing modules (manim, math, numpy …) may be imported and files or processes are off limits. Errors point at the line and code, so fix and call again. Runs Python code on this computer; off by default. Prefer the explainer tool for lesson-style content.
manim_stillSame scene code as the custom animation tool, but only the last frame (PNG, into the asset library): diagrams, plots, covers. Supports a transparent background. Also runs code on this computer; off by default.
Permissions are granted one by one: before installing, the app lays out everything the plugin declares. Local scripts run with your user's permissions, so only install sources you trust.
Move files between Baidu Netdisk and the asset library: import from the netdisk, or save assets to it.
Connect a ComfyUI server: its saved workflows become generation models and tools, and you manage its models and workflows from Mosael.
Parse PDFs, Office files and images into Markdown with MinerU, accurate even on scans and complex layouts.