manim-marimo brings Manim animations to marimo notebooks through marimo-studio. The notebook computes the values. A Manim scene in a Studio view animates them, and Studio renders the movie again whenever a value changes.
import numpy as np
from manimlib import Scene, ShowCreation, VMobject
from manim_marimo import value
class Animation(Scene):
def construct(self):
points = np.asarray(value("trajectory", default=[[0, 0], [1, 1]]), dtype=float)
curve = VMobject()
curve.set_points_as_corners(np.column_stack((points, np.zeros(len(points)))))
self.play(ShowCreation(curve), run_time=3)
trajectory is a variable in the notebook. The view's page plays the movie
beside the notebook's live controls, and output() and cell() place notebook
figures inside the scene.
Get started
manim-marimo renders scenes in the notebook's pixi environment, which installs the OpenGL and Pango libraries ManimGL renders with from conda-forge. Declare it in the notebook's script metadata:
# /// script
# requires-python = ">=3.10,<3.15"
# dependencies = [
# "manim-marimo[render]",
# ]
#
# [tool.pixi.workspace]
# channels = ["conda-forge"]
#
# [tool.pixi.dependencies]
# manimpango = ">=0.6"
# ///
uvx --with manim-marimo marimo edit analysis.py --sandbox=pixi --watch
In Studio, click Add view and choose Manim animation. Getting started shows the complete metadata, including the Mesa tables that render on Linux servers without a display.
Author with a coding agent
manim-marimo ships an agent skill beside marimo-studio's. Paste this into Claude Code, Codex, or another terminal agent:
Read the marimo-studio and manim-marimo skills with
`uvx --with manim-marimo agent-plugins read <name>`,
then create a notebook that explains Fourier series and an Animation view
that draws a square wave from rotating vectors.
Examples
- A notebook is a dataflow graph: the notebook parses a small notebook, sorts its cells topologically, and finds what each slider reruns. The scene draws those results.
- Fourier drawing: rotating vectors draw manim-marimo's mark and TeX's italic m from Fourier coefficients the notebook computes.
- Convolution of dice: a joint probability table folding into the distribution of a sum, ending on the notebook's own chart.
- Simulating an epidemic: two hundred people simulated in the notebook, after 3Blue1Brown's Simulating an epidemic. Pause the movie and point at anyone to trace them to the notebook row that simulated them.
pixi run edit dataflow
Documentation
Guide · Examples · Reference · Contributing
License
Apache License 2.0. The epidemic example's
scene.py adapts code from
3b1b/videos and shares its
CC BY-NC-SA 4.0 license.
Metadata
Release files for manim-marimo 0.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| manim_marimo-0.0.1.tar.gz | 62.8 kB | Without provenance | Details for manim_marimo-0.0.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| manim_marimo-0.0.1-py3-none-any.whl | Python 3 | none | any | Details for manim_marimo-0.0.1-py3-none-any.whl |
Total release size: 129.4 kB
Release files / manim_marimo-0.0.1.tar.gz
| Download URL | manim_marimo-0.0.1.tar.gz |
|---|---|
| Size | 62.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1130180842570993434b6bbcd529503d7f044ab86a71976befe706afdba4e040
|
|
BLAKE2b-256 checksum How to use checksums |
57027b494d977a6decfdcb8e7e0f103337b7023c94b5decb5014bb320ce458bc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / manim_marimo-0.0.1-py3-none-any.whl
| Download URL | manim_marimo-0.0.1-py3-none-any.whl |
|---|---|
| Size | 66.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1f9c8f9e0559e5904011c3f7918c8e209e1dfda58e065fdbebbb92d094ebceb8
|
|
BLAKE2b-256 checksum How to use checksums |
56337bd1963b60ca9d5383810c5b46bc28d6deb6ac3accbac04ad29bbc4f5397
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for manim-marimo 0.0.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.