OpenMAIC
OpenMAIC assistant for setting up, generating, and extending OpenMAIC. Use when the user wants to use OpenMAIC, generate a multi-agent interactive classroom, or build on / extend / customize OpenMAIC and its @openmaic/* SDK (secondary development, 二开) — covers Live Demo or local setup, startup modes, provider keys, classroom generation, and secondary development (forking, providers/storage/themes, routes, or the renderer/editor).
Rank
62
Safety
84
Downloads
6.4k
Updated
Oct 9, 2026
Version
0.3.11
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 6.4K downloads reported by the source. Last updated 10/9/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 9, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 9, 2026
- Adoption signal
- 6.4K downloadsadoption · observed Oct 9, 2026
- Latest release
- 0.3.11release · observed Oct 4, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s177bd906czjkr4f79ahq4wj8183m0w4:openmaic- Install using `clawhub skill install s177bd906czjkr4f79ahq4wj8183m0w4:openmaic` in an isolated environment before connecting it to live workloads.
- No published capability contract is available yet, so validate auth and request/response behavior manually.
- Review the upstream CLAWHUB listing at https://clawhub.ai/wyuc/openmaic before using production credentials.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-wyuc-openmaic/snapshot"
Documentation
CLAWHUB
152,667 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
SKILL.md
---
name: openmaic
description: OpenMAIC assistant for setting up, generating, and extending OpenMAIC. Use when the user wants to use OpenMAIC, generate a multi-agent interactive classroom, or build on / extend / customize OpenMAIC and its @openmaic/* SDK (secondary development, 二开) — covers Live Demo or local setup, startup modes, provider keys, classroom generation, and secondary development (forking, providers/storage/themes, routes, or the renderer/editor).
user-invocable: true
metadata: { "openclaw": { "emoji": "🏫" } }
---
# OpenMAIC Skill
Use this as a guided, confirmation-heavy SOP. Do not compress the whole setup into one reply and do not perform state-changing actions without explicit user confirmation.
## Core Rules
- Move one phase at a time.
- Before any state-changing action, ask for confirmation.
- If local state already exists, show what you found and ask whether to keep it.
- Do not assume the OpenClaw agent's own model or API key will be reused by OpenMAIC.
- OpenMAIC classroom generation uses OpenMAIC's server-side model configuration (`openmaic.yml` and the model settings in the web app).
- This skill must not rely on any request-time model or provider overrides.
- Only that server-side configuration may control provider selection and defaults.
- Do not default to asking the user to paste API keys into chat.
- Prefer guiding the user to edit local config files themselves.
- Do not offer to write API keys into config files on the user's behalf.
- Once setup is complete and the user clearly asks to generate a classroom, do not ask for a second confirmation before submitting the generation job.
- Keep confirmations for local file reads such as reading a PDF from disk before uploading it.
## Optional Skill Config
If present, read defaults from `~/.openclaw/openclaw.json` under:
```jsonc
{
"skills": {
"entries": {
"openmaic": {
"enabled": true,
"config": {
"accessCode": "sk-xxx",
"repoDir": "/path/to/OpenMAIC",
"url": "http://localhost:3000"
}
}
}
}
}
```
- If `accessCode` is present, default to Live Demo mode and skip the mode-selection prompt — unless the user's intent is to extend/build on OpenMAIC (see the exception in Phase 0).
- Use `repoDir` and `url` only as defaults for local mode.
- Still confirm before acting.
## SOP Phases
### 0. Choose Mode
First check skill config for `accessCode`. If present, announce that a stored access code was found and proceed directly to Live Demo mode (load [references/live-demo.md](references/live-demo.md), skip phases 1–4). Do not ask the user to paste the code again. **Exception:** if the user's stated intent is to extend / build on / customize OpenMAIC or consume the `@openmaic/*` SDK (二次开发 / 二开 / SDK), do not auto-shortcut — go to the extend branch below regardless of `accessCode`. A returning Live Demo user who now wants to do 二开 should be routed to extend, not silently sent back to Live Demo.
If no_meta.json
{
"ownerId": "kn7cjfn5dkygrges9scanxv97d82x3t1",
"slug": "openmaic",
"version": "0.3.11",
"publishedAt": 1791124895081
}references/clone.md
# Clone Or Reuse Existing Repo ## Goal Establish which OpenMAIC checkout will be used for setup and runtime actions. ## Procedure 1. Check whether OpenMAIC already exists locally. 2. If a checkout exists, show the path and ask whether to reuse it. 3. If no checkout exists, propose cloning the repo and ask for confirmation. 4. After clone, confirm dependency installation separately. ## Recommended Path - Recommended: reuse an existing checkout if it is already on the target branch. - Otherwise: clone a fresh checkout from GitHub, then install dependencies. ## Commands Clone: ```bash git clone https://github.com/THU-MAIC/OpenMAIC.git cd OpenMAIC ``` Install dependencies: ```bash pnpm install ``` ## Confirmation Requirements - Ask before `git clone`. - Ask before `pnpm install`. - If the repo is dirty, tell the user and ask whether to continue with that checkout.
references/extend-cookbook.md
# Extend The OpenMAIC Product (Cookbook)
## Scope
You are working **inside a fork of the OpenMAIC product** (the Next.js app at the repo root), customizing it in place. If instead you want to consume `@openmaic/*` in a separate app, use [extend-sdk.md](extend-sdk.md) instead.
Entry points below are given as **file + symbol name** (not line numbers — they drift). Read the file, then jump to the symbol. The `@/*` path alias is anchored at the repo root.
## Task 1 — Swap Or Add An AI Provider
**Goal:** route generation to a different provider, or register a brand-new one.
Two distinct cases:
- **Use an already-supported provider** (it's in the union below): no source change. Declare it in `openmaic.yml` with its preset and assign it to a slot, key in `.env.local` as `${VAR}` — follow [provider-keys.md](provider-keys.md). Chat slots always name `<provider id>:<model id>`.
- **Register a NEW provider** (source change):
1. Add the id to the `BuiltInProviderId` union in `lib/types/provider.ts`.
2. Register its config + models in the `PROVIDERS` registry in `lib/ai/providers.ts`.
3. The registry entry becomes a preset automatically (`lib/config/provider-presets.ts`; the preset id is the registry id unless `lib/config/preset-ids.ts` overrides it), so `openmaic.yml` can declare it with `preset: your-id` and the model settings offer it. No env wiring is needed.
4. Optional, legacy only: to also accept `<PREFIX>_API_KEY` / `_BASE_URL` / `_MODELS` from the environment without `openmaic.yml`, add a `PREFIX: 'your-id'` entry to `LLM_ENV_MAP` in `lib/server/provider-config.ts`. That path is deprecated.
5. A new token plan (one key, several capabilities) is one entry in `lib/config/token-plan-presets.ts`; it becomes a preset whose recommended models fill the slots it covers in the first-run setup.
**Gotcha:** OpenMAIC has **no hardcoded model fallback**. If no model is assigned to the `llm` slot (or the more specific slot a call uses), generation fails with `No model is configured for <slot>` rather than picking a vendor — always assign one.
## Task 2 — Server-Side Persistence (PostgreSQL / S3)
**Goal:** understand where documents, runtime state and assets live, and point them at your database.
Accurate topology (there is **no local-file backend**, and no browser-storage mode):
- **Always server-backed:** documents, runtime state and assets are stored on the server. The server **refuses to start without `DATABASE_URL`**; locally, `pnpm db:up` starts a separate development PostgreSQL (its own Compose project and volume) on `127.0.0.1` and `.env.example` carries the matching `DATABASE_URL`.
- **Client side:** `lib/persistence/bootstrap.ts` configures the browser's HTTP-backed `HttpRuntimeStore` / `HttpDocumentStore` / `HttpAssetStore`, which call `/api/persistence`. Those calls carry no credential of their own: the server attributes them to the owner the owner identity seam (`lib/server/identity/`) resolves, and the runtime learner key is thatreferences/extend-sdk.md
# Consume The @openmaic/* SDK (Build A New App) ## Scope You are building a **separate app** that consumes `@openmaic/*` packages via `npm install` — not working inside the OpenMAIC monorepo. If you are customizing the OpenMAIC product itself, use [extend-cookbook.md](extend-cookbook.md) instead. The SDK is early-stage (`0.x`). Versions below are current as of this writing — confirm against the registry when you install. ## Package Quick Reference | Package | Version | Purpose | Key Exports | Peer Deps | |---|---|---|---|---| | `@openmaic/dsl` | 0.8.0 | The slide **contract** — types + JSON schema. Zero runtime deps. | `Slide`, `PPTElement`, `./schema/*` | none | | `@openmaic/renderer` | 0.1.0 | Render slides to DOM (read-only). | `SlideCanvas`, `./snapshot`→`slideToPng` | react ≥18, react-dom ≥18, motion ≥11, tailwindcss ≥4; **optional:** echarts ≥5, shiki ≥1 | | `@openmaic/editor` | 0.0.2 | Editable slide surface + prosemirror editor. | `EditableSlideCanvasWithUI` (from `./ui`) | react ≥18, react-dom ≥18 **+ renderer's full peer stack transitively** | | `@openmaic/generation` | 0.3.0 | LLM-driven scene/lesson generation. | `generateSceneContent` | none | | `@openmaic/storage` | 0.2.5 | Document / Runtime / Asset / KV stores (Browser · HTTP · PG · S3). | see table below | **optional:** `@aws-sdk/client-s3` | | `@openmaic/importer` | 0.1.2 | Import PPTX / PDF into the DSL. | `importPptx` | none | > `editor` is `0.0.2`. Its own `peerDependencies` list only `react`/`react-dom`, but it `dependencies` on `@openmaic/renderer`, so you must also satisfy the renderer's peers (tailwindcss v4, motion, and optionally echarts/shiki) or it breaks at render time. ## Minimal Starter — Render A Slide 1. Install peers and the package (pin exact versions for `0.x`): ```bash npm i @openmaic/[email protected] @openmaic/[email protected] \ react@^18 react-dom@^18 motion@^11 tailwindcss@^4 # only if you render charts / code-highlighted blocks: npm i echarts@^5 shiki@^1 ``` 2. Mandatory CSS — without it the canvas renders unstyled: ```css @import 'tailwindcss'; @import '@openmaic/renderer/fonts.css'; ``` ...and ensure Tailwind v4 scans the renderer's classes, e.g. `@source '../node_modules/@openmaic/renderer/dist';` in your globals. (`fonts.css` is generated and fetches CJK woff2 on demand from `https://file.maic.chat/fonts/<name>.woff2` — relevant for offline/custom-font needs.) 3. Render: ```tsx import { SlideCanvas } from '@openmaic/renderer'; import type { Slide } from '@openmaic/dsl'; ``` For a working example of props/usage, read `components/slide-renderer/SlideThumbnail.tsx` in the OpenMAIC repo. ## Precise Import Paths | Want | Import | |---|---| | Slide / element types | `@openmaic/dsl` (`Slide`, `PPTElement`) | | JSON schema (validation) | `@openmaic/dsl/schema/*` | | Render a slide | `@openmaic/renderer` (`SlideCanvas`) | | Snapshot a slide → PNG | `@openmaic/renderer/snapshot` (`slideToPng`) | | Editable
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/wyuc/skills/openmaic",
"sourceUrl": "https://clawhub.ai/wyuc/skills/openmaic",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T03:25:13.136Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-wyuc-openmaic/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-wyuc-openmaic/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-09T03:25:13.136Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "6.4K downloads",
"href": "https://clawhub.ai/wyuc/openmaic",
"sourceUrl": "https://clawhub.ai/wyuc/openmaic",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T03:25:13.136Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "0.3.11",
"href": "https://clawhub.ai/wyuc/openmaic",
"sourceUrl": "https://clawhub.ai/wyuc/openmaic",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-10-04T14:41:35.081Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-wyuc-openmaic/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-wyuc-openmaic/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 0.3.11",
"description": "- Updated the classroom generation phase to clarify retry behavior on failed jobs (now references retrying failed jobs per the generate flow). - Minor clarification in the classroom generation step about submitting supported fields and the handling of optional features. - Removed obsolete documentation file skill-card.md. - No changes to core setup or workflow phases.",
"href": "https://clawhub.ai/wyuc/openmaic",
"sourceUrl": "https://clawhub.ai/wyuc/openmaic",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-10-04T14:41:35.081Z",
"isPublic": true
}
]
}Record generated Oct 9, 2026.
