Skip to main content

Murali

Murali is a Rust-based animation engine for semantic graphics and mathematical scenes. It is built around deterministic timelines, a frontend scene model, CPU-side projection, and a GPU-backed runtime.

Documentation and cookbook

Goals

  • Predictable, explicit animation behavior
  • World-space authoring instead of pixel-first APIs
  • Clear separation between authored scene state and render/runtime state
  • A modern GPU path built on wgpu

Building Blocks And Comfort Tattvas

Murali is primarily a framework of building blocks. The stable core should make primitives, text, timelines, layouts, camera movement, and rendering expressive enough that users can assemble most visual elements on the fly.

Murali also intentionally includes a small number of opinionated composite tattvas. These are comfort tattvas: higher-level components that make common video-making scenes easier to author, especially for AI explainers, mathematical storytelling, and reusable visual UI.

That convenience has a cost. Too many composites can make the library bloated or too prescriptive, so new opinionated components usually live in beta first. They may change quickly, move, be renamed, or be removed while their ergonomics and visual language are tested in real productions. Components are promoted into stable sections only after they prove mature and broadly useful.

Current Shape

  • src/frontend/ contains user-facing tattvas, animations, layout helpers, and scene authoring APIs
  • src/projection/ contains backend-neutral render primitives and meshes
  • src/backend/ contains the sync boundary, ECS cache, and renderer
  • src/engine/ contains scene ownership, app lifecycle, timeline stepping, export, and config
  • docs/ contains the longer-form documentation site
  • examples/ contains the reference runnable examples for the crate

Getting Started

The public authoring path is Python. Install Murali Kit, which pulls in a compatible engine:

python3 -m pip install murali-kit==0.3.0
from murali_engine import Circle, Label, Scene, Timeline
from murali_kit.colors import GREEN_D, WHITE
from murali_kit.themes import DarkTheme, apply_theme

scene = apply_theme(Scene(), DarkTheme())
scene.add(Label("Hello Murali", height=0.38, color=WHITE), at=(0.0, 2.4, 0.0))
scene.add(Circle(radius=1.2, color=GREEN_D).with_stroke(0.04, WHITE))
scene.preview()

Prebuilt murali-engine wheels cover macOS arm64 and x86_64, Linux x86_64 and aarch64, and Windows x86_64. Those installs do not need a local Rust toolchain.

python3 -m pip install murali-engine==0.3.0

Python examples live in murali-kit. Docs: muraliengine.com.

Local engine development

python3 -m venv .venv
.venv/bin/python -m pip install maturin
.venv/bin/maturin develop --features python
source .venv/bin/activate
python python/examples/hello_shapes.py

Rust crate

Use the murali crate when you are working on the runtime:

[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 Rust examples are in this repository. You need Rust 1.85 or newer, a graphics environment for preview, and ffmpeg for video export.

Some in-progress APIs are feature-gated. For example, the linear-algebra visual toolkit currently requires the experimental feature:

[dependencies]
murali = { version = "0.3.0", features = ["experimental"] }

Repository examples that use that API should be run with the feature enabled:

cargo run --features experimental --example linear_algebra_vectors

Quickly inspect a GLB/GLTF asset before using it in a scene:

cargo run --example model_inspector -- demo-apple
cargo run --example model_inspector -- /absolute/path/to/model.glb --rot-x -20

The inspector centers and frames the model automatically. Pass --help to see scale, rotation, camera, and continuous-preview controls.

Some useful places to start:

Who It's For

Murali is for people who want authored, programmatic control over mathematical, AI, and explainer-style visuals in Rust.

If you like the kind of mathematical storytelling associated with Manim and want a Rust-native workflow, Murali is built in that spirit.

Murali is also being grown as a long-term AI visualization engine. The collection category architecture names the math, probability, statistics, calculus, optimization, information theory, deep learning, LLM, and agentic-AI components that will be developed steadily through the end of 2030.

Preview And Export Config

Murali looks for the nearest murali.toml next to a Cargo.toml. If no config file is present, sensible defaults are used.

Example config:

[preview]
fps = 60

[export]
fps = 60
width = 1920

The scene owns its aspect ratio. Landscape is the default; portrait and square scenes are explicit:

let portrait = Scene::new().with_frame(Frame::portrait());
let square = Scene::new().with_frame(Frame::square());

Export width is literal pixel width. Murali derives height from the scene frame, so a portrait scene at width = 1080 exports at 1080 × 1920.

A sample file is included at murali.toml.example.

Examples

Shapes

Watch the video

Animation showcase

Watch the video

Status

Murali is under active development. The repository already includes:

  • scene and timeline infrastructure
  • preview and headless export paths
  • text, LaTeX, and Typst support
  • primitives, layout helpers, tables, graph tattvas, and utility tattvas
  • write/unwrite, transform, text, and surface animation building blocks
  • semantic tensor snapshots, operations, slicing, transitions, and versioned AI trace ingestion
  • context-window, next-token sampling, KV-cache, and LayerNorm/RMSNorm teaching views

License

Murali is dual-licensed under either the MIT License or the Apache License, Version 2.0.

Release files for murali-engine 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for murali-engine 0.3.0
File Size Uploaded
murali_engine-0.3.0.tar.gz 4.9 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for murali-engine 0.3.0
File
murali_engine-0.3.0-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
murali_engine-0.3.0-cp310-abi3-manylinux_2_28_x86_64.whl CPython 3.10 abi3 Linux glibc 2.28+ x86-64 Details
murali_engine-0.3.0-cp310-abi3-manylinux_2_28_aarch64.whl CPython 3.10 abi3 Linux glibc 2.28+ ARM64 Details
murali_engine-0.3.0-cp310-abi3-macosx_11_0_x86_64.whl CPython 3.10 abi3 macOS 11.0+ x86-64 Details
murali_engine-0.3.0-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details

Total release size: 145.0 MB

Release files / murali_engine-0.3.0.tar.gz

Download URL murali_engine-0.3.0.tar.gz
Size 4.9 MB
Tags Source
SHA-256 checksum
How to use checksums
b661aa741dea038cd8bf97b049e5d3624278defce1992b0c2c4af7d4d3bf1471
BLAKE2b-256 checksum
How to use checksums
2a49184b6492106fbb23f98c14118f788302384bb00a3ae09f51b09b7af124bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / murali_engine-0.3.0-cp310-abi3-win_amd64.whl

Download URL murali_engine-0.3.0-cp310-abi3-win_amd64.whl
Size 26.8 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
2e47e985ac9554d99cc5c1a808ce1a1f5aac135516a404395bf63c2d728af997
BLAKE2b-256 checksum
How to use checksums
f6190a6b7b2dc776f5bb046537163ce4bb75e6be54a8cc6edfe17c62c183e9dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / murali_engine-0.3.0-cp310-abi3-manylinux_2_28_x86_64.whl

Download URL murali_engine-0.3.0-cp310-abi3-manylinux_2_28_x86_64.whl
Size 29.3 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
a9b385abafab7ab469ebd5611df5532a00c001c82b5c0785e3be1e01c8f7ffc0
BLAKE2b-256 checksum
How to use checksums
9bbaccff76d69ef37895a19fc6d9825e5b2be4b29a74ad4e9850356c3f880bd7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / murali_engine-0.3.0-cp310-abi3-manylinux_2_28_aarch64.whl

Download URL murali_engine-0.3.0-cp310-abi3-manylinux_2_28_aarch64.whl
Size 30.3 MB
Tags CPython 3.10 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
e0d278596601228fed48b31fbdf219037a7047a0da5592c2f3b01d4620b6931d
BLAKE2b-256 checksum
How to use checksums
994f0035455f0951358c5bff51fd98518245dccf3e05ec01d1e90bee27a9bc18
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / murali_engine-0.3.0-cp310-abi3-macosx_11_0_x86_64.whl

Download URL murali_engine-0.3.0-cp310-abi3-macosx_11_0_x86_64.whl
Size 27.1 MB
Tags CPython 3.10 abi3 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
8f987c0836e2d78b490d1880b32a1fd7a876d3a971d95b94d60058c7cbfd46ac
BLAKE2b-256 checksum
How to use checksums
9828dbfd228a0bf7bc8113829a469a9991ae27b5588720b353c47cb58b7af742
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / murali_engine-0.3.0-cp310-abi3-macosx_11_0_arm64.whl

Download URL murali_engine-0.3.0-cp310-abi3-macosx_11_0_arm64.whl
Size 26.6 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a9c47ed91fe262adb2638c70f7f2f00b8ffded1c776fed65d3172923fabdeed4
BLAKE2b-256 checksum
How to use checksums
dafa4d5e14a675e39d2be4b5d417d3a6d4803cd29d66bafb12a49074ec861dc3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

0.3.0 This release

6 release files

0.2.5

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page