Skip to content

Build and validate a minimal Manim Studio runtime image #28

Description

@alonshoa

Problem

The current Manim Studio runtime inherits from:

manimcommunity/manim:v0.20.1

The upstream image includes a broad interactive Manim environment, including Jupyter-related and other packages that are not required for the normal Studio CLI, MCP, and render workflow.

A Docker Scout scan of the experimental 0.0.1 image reported:

  • image size: approximately 1.5 GB
  • packages: 817
  • 2 critical vulnerabilities
  • 65 high vulnerabilities
  • 63 medium vulnerabilities
  • 257 low vulnerabilities
  • 63 unspecified vulnerabilities

Most findings originate from the upstream image, Debian packages, Jupyter components, and the broad LaTeX/font environment rather than Manim Studio code.

Goal

Investigate and validate a smaller purpose-built runtime containing only the dependencies required by Manim Studio.

Possible base:

python:3.11-slim-bookworm

Expected capabilities to preserve:

  • Manim 0.20.1
  • Manim Slides
  • Studio CLI
  • local MCP server
  • Cairo/Pango text rendering
  • images and video
  • MathTex/LaTeX
  • XeLaTeX where required
  • Hebrew and RTL fonts
  • named beats
  • review artifacts
  • PPTX export
  • external-project mounts

Proposed approach

  • Build a separate experimental runtime target.
  • Keep the existing community-based runtime as the baseline.
  • Define small capability-oriented smoke scenes.
  • Compare image size, package count, Scout results, and runtime behavior.
  • Consider an automated build/test minimization harness rather than manual package removal.
  • Do not replace the existing runtime until the candidate passes the full capability matrix.

Acceptance criteria

  • A candidate runtime builds reproducibly.
  • studio doctor passes.
  • Basic Manim render passes.
  • MathTex render passes.
  • Hebrew/RTL render passes.
  • Manim Slides render passes.
  • external-project verification passes.
  • PPTX export passes.
  • MCP startup and structured operations pass.
  • Image size and package count are materially reduced.
  • Critical/high Scout findings are reduced or documented.
  • The final dependency list and maintenance responsibilities are documented.

Priority and relationship

This issue is non-blocking.

It must not block:

  • merging Project Init
  • local development
  • external-project creation
  • work on educational presentations

Public-runtime distribution may continue experimentally while this issue remains open.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions