OpenMAIC
github.com/thu-maic/openmaic- Category
- Education
- Rank
- No. 704Tools index
- Pricing
- Open Source
- Type
- APP
- Use case
- Research & Education
- Interfaces
- Web · SDK · API
- GitHub
- 41.4k stars
- Latest release
- v1.3.0-rc.1
- Date
About
OpenMAIC turns a topic or uploaded document into a full interactive classroom, generating slides, quizzes, simulations, and project-based learning activities delivered by AI teacher and AI classmate agents that speak and draw on a shared whiteboard. Its v1.0.0 release adds a chat-based agent workbench that plans, builds, and revises entire courses through durable, resumable sessions and reusable skills.
What it does
Give it a topic or a document and it builds an entire lesson: a slide deck, quiz questions, small interactive simulations, and a project assignment, all narrated by simulated instructors and peers who converse and sketch on a shared board while you sit in. A newer assistant-driven mode lets you type instructions instead, and it drafts, revises, and rebuilds the course accordingly across a session you can leave and resume. The result exports as an editable slide file or a self-contained web page.
Why it's ranked here
The engineering discipline stands out more than the pitch. Automated unit and end-to-end tests actually exist, four packages are published to a public registry with automated checks that block a merge if the version number doesn't move, and the history includes a fix for a real deployment bug: a Docker volume ownership problem that silently dropped saved classrooms. It also refuses to lock into one AI vendor, wiring in a dozen-plus model and search providers behind a shared setup file.
What's good
You are not locked to one model vendor: the config accepts keys for OpenAI, Azure, Anthropic, Bedrock, Google, and half a dozen others, and you can run purely from environment variables or a YAML file. Deployment options span a single Vercel-button click, a self-hosted Docker Compose stack, or a hosted service with an access code. The optional video-render container runs on an isolated Docker network with its own egress lockdown, a real security choice given that it executes an unsandboxed browser to composite output.
Tradeoffs
Getting a working install means a sizeable dependency tree and native build tooling for image and canvas libraries, plus a chained build step that compiles several internal packages in sequence before the app itself builds. The optional video-export path needs a separate container that documentation says wants 8 GiB of memory. And since every classroom scene is generated by a language model, you need at least one paid provider API key before anything beyond the interface actually works.
How to use it well
Try the hosted version first with an access code before standing up your own deployment; it skips the environment setup entirely. Educators building a single lesson from an outline or a source document get the most from the one-click generator, while anyone assembling a multi-session course, with materials to upload and edits to make along the way, should reach for the newer chat-driven workbench instead. It plugs into existing chat and IDE assistants too, so a course can start from a Slack message rather than the web app.
Technical notes+
The mechanism worth reading is in the editor package's core index.ts, which models every slide edit as a typed EditorOperation compiled from higher-level EditIntent objects and threaded through an undo and redo stack capped at 50 states (MAX_EDITOR_HISTORY); each of the nine element types (text, image, shape, line, chart, table, latex, video, audio, code) has its own required-field schema enforced there. lib/choreography/index.ts and lib/video-export/index.ts share a deliberately pure, DOM-free core, an eslint boundary blocks React and GSAP imports, so the same playback-timing logic can compile a VideoTimeline IR outside a browser. the importer package's index.ts handles the inverse direction, parsing an uploaded .pptx through a custom zip parser into the same canvas format. The Dockerfile includes a one-line fix, with a comment citing issue #1438, for a volume-permission bug that had been silently discarding saved classrooms.
Observed
- License
- MIT
- Primary language
- TypeScript (Next.js, React), with one small vanilla-JavaScript package for MathML conversion
- Packaging
- pnpm workspace monorepo with several internal packages (dsl, storage, renderer, importer, editor) published individually to a public npm registry
- Deployment surface
- Self-hosted via Docker and Docker Compose, one-click deploy to Vercel, or a hosted instance behind an access code
- Configuration
- Provider keys set via environment variables or a YAML config file
- AI provider support
- Multiple LLM providers wired in behind a shared interface (OpenAI, Azure OpenAI, Anthropic, Amazon Bedrock, Google, and others)
- Testing
- Both unit tests (Vitest) and end-to-end tests (Playwright) are present in the repository
- Optional components
- A separate containerized render service for video export, isolated on its own internal Docker network
- Distribution
- Ships a standard skill package intended for use from external agent workbenches, not just its own web app
Read from README.md, package.json, Dockerfile, lib/document/index.ts, lib/prosemirror/index.ts, lib/choreography/index.ts, lib/rag/index.ts, lib/video-export/index.ts, packages/@openmaic/renderer/src/index.ts, packages/@openmaic/editor/src/core/index.ts, packages/@openmaic/importer/src/index.ts, packages/mathml2omml/src/index.js, docker-compose.yml, CONTRIBUTING.md, LICENSE.
What it can do
Generate an interactive classroom (slides, quizzes, simulations, project-based activities) from a topic or uploaded document
Topic or document → Interactive classroom content (slides, quizzes, simulations, activities)
Deliver lessons via AI teacher and AI classmate agents that speak and draw on a shared whiteboard
Generated classroom content → Spoken narration and whiteboard drawings
Plan, build, and revise courses through a chat-based agent workbench
Conversational chat input → Course plan/build/revisions
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.