Installation
Install Murali Kit. That is the usual authoring path, and it pulls in a compatible engine:
python3 -m pip install murali-kit
Then:
from murali_engine import Scene
from murali_kit.themes import DarkTheme
scene = Scene()
scene.apply_theme(DarkTheme())
scene.preview()
Pinned versions:
python3 -m pip install murali-engine==0.3.0
python3 -m pip install murali-kit==0.3.0
murali-kit depends on murali-engine>=0.3.0,<0.4.0. Installing the engine alone does not install
the kit.
What you get​
| Package | Import | Role |
|---|---|---|
murali-kit | murali_kit | Themes, named colors, teaching views, examples |
murali-engine | murali_engine | Scene, primitives, timeline, preview, export |
Python 3.10 or newer. A GPU-capable graphics environment for preview. ffmpeg if you want MP4 or
GIF export. latex and dvisvgm only if you use Latex. Typst is embedded; it does not need a
system install.
Prebuilt wheels​
murali-engine ships prebuilt wheels for:
- macOS arm64 and x86_64
- Linux x86_64 and aarch64
- Windows x86_64
Those installs do not need a local Rust toolchain. Other platforms can still build from the source distribution if Rust 1.85+ is available.
Preview vs export​
Preview (scene.preview()):
- needs a working graphics environment
- does not require
ffmpeg
Export:
scene.save_png(path)always writes a PNGscene.export_video(path)usesffmpegto assemble MP4 or GIF- if
ffmpegis missing, Murali still writes frames and tells you where they landed
preview(), save_png(), export_video(), and export() consume the scene. Call one of them at
the end of the script.
Local engine development​
Only if you are changing the engine itself, from a checkout of this repository:
python3 -m venv .venv
.venv/bin/python -m pip install maturin
.venv/bin/maturin develop --features python
.venv/bin/python python/examples/hello_shapes.py
Kit examples live in the murali-kit repository.
Develop against an adjacent engine checkout with that repo's requirements-local.txt.
Core Rust Engine​
Use this path when you are working on the runtime, not when you are writing new scenes. For
Rust-authored animations on a frozen API, pin murali 0.2.4
and follow the 0.2.4 docs. Current crate versions keep Rust as the engine only.
You need Rust 1.85 or newer, cargo, and a graphics environment for preview.
[dependencies]
murali = "0.3.0"
anyhow = "1"
glam = "0.33"
git clone https://github.com/murali-engine/murali
cd murali
cargo run --example hello_shapes --release -- --preview
The published crate excludes examples/**. Reference examples are in the GitHub repository.
Some Rust APIs are feature-gated. The linear-algebra visual toolkit currently needs experimental:
[dependencies]
murali = { version = "0.3.0", features = ["experimental"] }
cargo run --features experimental --example linear_algebra_vectors
See Experimental Features and Your First Scene (Rust).
Project config​
Murali looks for a nearby murali.toml. A minimal config:
[preview]
fps = 60
[export]
fps = 60
width = 1920
width is the output width in pixels. Height follows the scene's landscape, portrait, or square
video format. The repo includes murali.toml.example.