A multi-agent AI classroom that turns any topic into an interactive learning experience.
Features · Quick Start · Architecture · Testing · Structure · Contributing
Nova is a multi-agent teaching platform. Given a topic, an AI teacher generates a structured course outline, produces slides, writes narration scripts, and delivers the lesson in a virtual classroom. Several AI agents take on distinct roles — a teacher leads the lecture, an assistant answers questions, and a class clown keeps the mood light.
The core idea is not to be another slide generator, but a complete teaching system with role separation, safety guardrails, and knowledge tracking.
- AI Outline Generation — Breaks a topic into progressive scenes ordered by knowledge dependencies
- Slide Production — Each scene ships with titles, bullet points, and flow diagrams
- Voice Narration — The AI teacher narrates each scene with natural TTS across multiple engines
- Interactive Quizzes — Auto-generated multiple-choice and fill-in-the-blank questions with real-time scoring
- Knowledge Graph — Visual concept maps that connect key ideas across the course
- PBL Mode — Project-based learning with interactive practice tasks
| Agent | Role | Permissions |
|---|---|---|
| AI Teacher | Leads the lesson, explains core concepts | Speak, slide control, spotlight, whiteboard |
| AI Assistant | Supports the teacher, answers questions | Speak, whiteboard, slide control |
| Class Clown | Lightens the mood | Speak, whiteboard |
- Role Persistence — Customize names, descriptions, and permissions for 10 built-in roles; changes persist across sessions
- Runtime Constraints — Per-role
max_actionsandmax_turnsenforced at runtime - Discussion Orchestration — A Director Graph manages turn-taking and discussion flow
- 24 Templates — Covering outline generation, content creation, action sequencing, and quiz generation
- Snippet System — Role guidelines and action types stored as Markdown snippets, editable without recompiling
- Guardrails — PII detection, toxicity filtering, and hallucination scanning on every generated scene
- Skill Registry — 5 registered skills gated by a whitelist
- REST API —
GET /api/promptsto list templates,GET /api/skillsto list skills
LLM Providers
| Provider | Example Models |
|---|---|
| OpenAI | GPT-5.6, GPT-5.5, GPT-5.4 |
| Anthropic | Claude Opus 4.7, Claude Sonnet 4.5, Claude Haiku 4.5 |
| Gemini 3.5 Flash, Gemini 3 Pro, Gemini 2.5 Pro | |
| DeepSeek | DeepSeek-V4-Pro, DeepSeek-V4-Flash |
| Qwen | Qwen3.7-Max, Qwen3.6-Plus, Qwen3.5-Flash |
| GLM | GLM-5.2, GLM-5.1 |
| Kimi | Kimi-K2.7, Kimi-K2.6 |
| MiniMax | MiniMax-M3, MiniMax-M2.7 |
| Grok | Grok-4.20 |
| Tencent Hunyuan | Hunyuan-3 (preview) |
| Xiaomi | MiMo v2.5 |
| OpenRouter | Multi-provider aggregation |
| SiliconFlow | Full model aggregation |
| Doubao | Doubao Seed 2.x series |
| Ollama | Local models |
| Lemonade | Local AMD models |
- TTS — OpenAI, SiliconFlow, Doubao, Minimax, Volcano
- Image Generation — SiliconFlow, Minimax, ComfyUI
- Web Search — Tavily, SearXNG
- Document Parsing — AliDocMind, MinerU
- MCP Tools — Connect external tools via Model Context Protocol
- i18n — English, Simplified Chinese, Traditional Chinese, Japanese, Korean, Arabic, Portuguese, Russian (client-side, via i18next)
- Dark Mode — Site-wide support
Data flow: the user enters a topic → the prompt engine assembles the prompt → an LLM generates content → guardrails scan for safety → multi-agent orchestration → interactive classroom rendering. State is persisted to browser-local storage via Zustand.
- Node.js 22+
- pnpm 10+
git clone https://github.com/weed33834/nova.git
cd nova
pnpm installCreate a .env.local file with at least one LLM provider:
# Option A: direct API key
SILICONFLOW_API_KEY=your-key
SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1
# Option B: server-side managed config (recommended)
cp server-providers.example.yml server-providers.yml
# Edit server-providers.yml with your credentials — keys stay server-sidepnpm devOpen http://localhost:3000 and enter a topic to start.
Click "Open Cached Demo Course" on the home page to load a pre-built Introduction to AI course — no API key required.
pnpm test # Unit & component tests (312 files / 2768 cases)
pnpm test:e2e # End-to-end tests (Playwright)
pnpm test:e2e:ui # E2E with interactive UI
pnpm lint # ESLint
pnpm typecheck # TypeScript type checkingE2E tests cover the full flow: home → generation → classroom navigation → quiz interaction. All tests use mock APIs — no LLM key needed.
nova/
├── app/ # Next.js App Router
│ ├── api/ # API routes (prompts, skills, generate/*)
│ ├── classroom/ # Classroom playback route
│ └── generation-preview/
├── lib/ # Core logic
│ ├── ai/ # Multi-LLM provider integration
│ ├── agent/ # Multi-agent runtime
│ ├── choreography/ # Animations & effects
│ ├── guardrails/ # Safety pipeline
│ ├── i18n/ # Client-side i18next locale resources
│ ├── orchestration/ # Role management & constraints
│ └── prompts/ # Prompt templates & snippets
├── components/ # React components
├── packages/ # Workspace sub-packages
│ └── @nova/
│ ├── dsl/ # Domain type definitions
│ ├── renderer/ # Slide rendering engine
│ ├── importer/ # Document import
│ └── storage/ # Persistence layer
├── e2e/ # Playwright tests
├── configs/ # Shared constants
└── assets/ # Static assets & logo
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router, Turbopack) |
| Language | TypeScript 5.8 |
| UI | React 19, Tailwind CSS 4, Radix UI |
| State | Zustand (persisted) |
| AI | Vercel AI SDK, multi-provider |
| Testing | Vitest, Playwright |
| Package Manager | pnpm Workspaces |
Issues and pull requests are welcome. Please read CONTRIBUTING.md before submitting.