N Noer

OpenMAIC: Operating an Interactive Classroom Beyond the Demo

An operations-focused guide to OpenMAIC, covering providers, offline exports, persistence, render capacity, and security gates.

OpenMAIC is best understood as a classroom runtime rather than a prompt-to-slides demo. It turns a topic or document into an outline, then into slides, quizzes, interactive HTML scenes, or project-based learning activities. The platform adds multi-agent discussion, teacher actions, audio, editing, import, export, and storage, so its architecture matters as much as its generation quality.

A workspace with explicit contracts

The Next.js 16 application runs in a pnpm workspace. The official packages separate the slide/data contract and validation layer (@openmaic/dsl), generation assets and pipeline contracts (@openmaic/generation), read-only rendering (@openmaic/renderer), editing (@openmaic/editor), PPTX import (@openmaic/importer), and pluggable storage (@openmaic/storage). The host application owns state and persistence instead of hiding them inside the renderer.

Minimal setup

git clone https://github.com/THU-MAIC/OpenMAIC.git
cd OpenMAIC
pnpm install
cp .env.example .env.local
pnpm dev

The documented baseline is Node.js 20.9 or newer and pnpm 10 or newer. Configure one LLM provider first. OpenMAIC supports cloud providers, OpenAI-compatible endpoints, Ollama, Lemonade, and local speech recognition through FunASR.

Route models by stage

The environment example documents default and stage-level model routing. A useful deployment does not let every client freely choose every provider. Define routes for outline generation, scene generation, search, image creation, TTS, and ASR, then record provider, model, latency, output size, and failure mode for a fixed lesson. Server-managed providers should be treated as an administrative policy, not as a cosmetic configuration option.

Editing and export are first-class

The project supports editable PPTX slides, interactive HTML, classroom ZIP export, and optional MP4 export through a separate render service. The editor includes direct manipulation, multi-select, validated JSON Patch edits, and history. This makes the output operationally useful: a teacher can correct a generated slide, export it to a familiar format, and retain an interactive version for self-paced learning.

Persistence requires an identity model

The server-persistence profile adds PostgreSQL while keeping the persistence HTTP server inside the app at /api/persistence. The repository explicitly warns that the public persistence token is compiled into the browser bundle and provides no confidentiality or user isolation. It is suitable for localhost or a trusted single-user network only. Production deployments need server-controlled sessions and authorization for learner partitions, documents, assets, and administrative operations.

Security and rendering boundaries

OpenMAIC documents SSRF protection for private and local networks, CSP frame-ancestor controls, iframe sandboxing, and a private vulnerability-reporting process. The optional Chromium/FFmpeg render service is isolated on an internal network with bounded concurrency and memory guidance. Treat rendered HTML as untrusted input and test long compositions, failed jobs, asset cleanup, and recovery.

Adoption rule

Start with one real lesson and compare generation, editing, export, offline playback, persistence recovery, and provider failure. OpenMAIC is compelling when the team needs an open classroom document model rather than a disposable generated page. It still needs identity, resource, and content-quality governance before a public multi-user deployment.