Source: https://seerepo.com/r/THU-MAIC/OpenMAIC/built
Markdown source: https://seerepo.com/r/THU-MAIC/OpenMAIC/built.md
Description: OpenMAIC is a TypeScript repo built with React, Next.js, and Hono. It stores its data in @electric-sql/pglite, Postgres, and dexie.

# What is OpenMAIC built with?

OpenMAIC is a TypeScript repo built with React, Next.js, and Hono. It stores its data in @electric-sql/pglite, Postgres, and dexie, signs people in with @aws-sdk/credential-providers, stores files in AWS S3, uses AI through Pi, ai, e2b, ai-sdk, partial-json, and 3 more, makes its content with katex, streamdown, js-yaml, parse5, sharp, and 22 more, validates its data with typebox, Zod, and Ajv, is tested with Vitest, @playwright/test, fake-indexeddb, Testing Library, and Puppeteer, deploys with @hono/node-server, and uses @aws-sdk/s3-request-presigner. It has 876,324 written lines, with 1,570 test files.

Read on November 6, 2026, at commit 5c3531c.

Repository: https://github.com/THU-MAIC/OpenMAIC

## Frontend (/)

### The base

- **[React](https://seerepo.com/uses/react)**: 359 files · [in package.json](https://github.com/THU-MAIC/OpenMAIC/blob/5c3531cef7f8c8e61a0cacf261a410b3e1f44f3b/package.json)
- **[Next.js](https://seerepo.com/uses/nextjs)**: 115 files · [in package.json](https://github.com/THU-MAIC/OpenMAIC/blob/5c3531cef7f8c8e61a0cacf261a410b3e1f44f3b/package.json)

### Styles

- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**
- **[class-variance-authority](https://seerepo.com/uses/class-variance-authority)**: 7 files
- **[PostCSS](https://seerepo.com/uses/postcss)**: 3 files
- **postcss-value-parser**: 2 files
- **@fontsource-variable/inter**: 1 file
- **fontsource**: 1 file
- **geist**: 1 file
- **[next-themes](https://seerepo.com/uses/next-themes)**: 1 file
- **[tailwind-merge](https://seerepo.com/uses/tailwind-merge)**: 1 file

### Interface

- **[motion](https://seerepo.com/uses/motion)**: 47 files
- **[sonner](https://seerepo.com/uses/sonner)**: 42 files
- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 26 files
- **ProseMirror**: 12 files
- **prosemirror-state**: 8 files
- **prosemirror-view**: 8 files
- **[xyflow](https://seerepo.com/uses/xyflow)**: 7 files
- **[echarts](https://seerepo.com/uses/echarts)**: 5 files
- **prosemirror-commands**: 4 files
- **prosemirror-schema-list**: 3 files
- **[use-stick-to-bottom](https://seerepo.com/uses/use-stick-to-bottom)**: 3 files
- **prosemirror-history**: 2 files
- **prosemirror-inputrules**: 2 files
- **prosemirror-schema-basic**: 2 files
- **[react-resizable-panels](https://seerepo.com/uses/react-resizable-panels)**: 2 files
- **animate.css**: 1 file
- **[Base UI](https://seerepo.com/uses/base-ui)**: 1 file
- **[cmdk](https://seerepo.com/uses/cmdk)**: 1 file
- **[embla-carousel-react](https://seerepo.com/uses/embla-carousel-react)**: 1 file
- **[monaco-editor](https://seerepo.com/uses/monaco-editor)**: 1 file
- **prosemirror-dropcursor**: 1 file
- **prosemirror-gapcursor**: 1 file
- **prosemirror-keymap**: 1 file
- **react-colorful**: 1 file
- **[xterm](https://seerepo.com/uses/xterm)**: 1 file

### Icons

- **[Lucide](https://seerepo.com/uses/lucide)**: 185 files

## Backend (/)

### Data

- **@electric-sql/pglite**: 38 files
- **[Postgres](https://seerepo.com/uses/postgres)**: 12 files · [lib/persistence/asset-collector-schedule.ts, line 39](https://github.com/THU-MAIC/OpenMAIC/blob/5c3531cef7f8c8e61a0cacf261a410b3e1f44f3b/lib/persistence/asset-collector-schedule.ts#L39)
- **dexie**: 6 files
- **@aws-sdk/s3-request-presigner**: 1 file

### Sign-in

- **[@aws-sdk/credential-providers](https://seerepo.com/uses/aws-sdk-credential-providers)**: 1 file

### AI

- **Pi**: 52 files
- **[ai](https://seerepo.com/uses/ai)**: 26 files
- **e2b**: 2 files
- **[ai-sdk](https://seerepo.com/uses/ai-sdk)**: 1 file
- **partial-json**: 1 file
- **tokenlens**: 1 file

### Services

- **[Anthropic](https://seerepo.com/uses/anthropic)**: 2 files · [lib/ai/providers.ts, line 33](https://github.com/THU-MAIC/OpenMAIC/blob/5c3531cef7f8c8e61a0cacf261a410b3e1f44f3b/lib/ai/providers.ts#L33)
- **[OpenAI](https://seerepo.com/uses/openai)**: 2 files · [lib/ai/providers.ts, line 31](https://github.com/THU-MAIC/OpenMAIC/blob/5c3531cef7f8c8e61a0cacf261a410b3e1f44f3b/lib/ai/providers.ts#L31)
- **[AWS S3](https://seerepo.com/uses/aws-s3)**: 1 file · [lib/persistence/asset-byte-store.ts, line 30](https://github.com/THU-MAIC/OpenMAIC/blob/5c3531cef7f8c8e61a0cacf261a410b3e1f44f3b/lib/persistence/asset-byte-store.ts#L30)

## Support (/)

### Content

- **[katex](https://seerepo.com/uses/katex)**: 5 files
- **[streamdown](https://seerepo.com/uses/streamdown)**: 5 files
- **[js-yaml](https://seerepo.com/uses/js-yaml)**: 4 files
- **parse5**: 4 files
- **[sharp](https://seerepo.com/uses/sharp)**: 4 files
- **linkedom**: 3 files
- **parse-srcset**: 3 files
- **[sanitize-html](https://seerepo.com/uses/sanitize-html)**: 2 files
- **[shiki](https://seerepo.com/uses/shiki)**: 2 files
- **@joplin/turndown-plugin-gfm**: 1 file
- **@mozilla/readability**: 1 file
- **docx**: 1 file
- **[htmlparser2](https://seerepo.com/uses/htmlparser2)**: 1 file
- **[mdast-util-from-markdown](https://seerepo.com/uses/mdast-util-from-markdown)**: 1 file
- **micromark-extension-math**: 1 file
- **pdf-lib**: 1 file
- **remark-cjk-friendly**: 1 file
- **temml**: 1 file
- **[turndown](https://seerepo.com/uses/turndown)**: 1 file
- **unpdf**: 1 file
- **uqr**: 1 file

### Validation

- **[typebox](https://seerepo.com/uses/typebox)**: 32 files
- **[Zod](https://seerepo.com/uses/zod)**: 19 files

### Testing

- **Vitest**: 1,201 files
- **@playwright/test**: 47 files
- **fake-indexeddb**: 34 files

### Tools

- **TypeScript**: 7 files
- **esbuild**: 3 files
- **ESLint**: 2 files
- **es-module-lexer**: 1 file

### Other

- **server-only**: 53 files
- **nanoid**: 25 files
- **zustand**: 23 files
- **undici**: 9 files
- **Lodash**: 8 files
- **file-saver**: 7 files
- **jszip**: 7 files
- **react-i18next**: 5 files
- **Immer**: 4 files
- **tinycolor2**: 4 files
- **graphemer**: 2 files
- **i18next**: 2 files
- **jsonrepair**: 2 files
- **clsx**: 1 file
- **diff**: 1 file
- **i18next-resources-to-backend**: 1 file
- **ipaddr.js**: 1 file
- **mitt**: 1 file
- **SemVer**: 1 file
- **tldts**: 1 file

## Support (packages/@openmaic/dsl)

### Validation

- **[Ajv](https://seerepo.com/uses/ajv)**: 2 files

### Testing

- **Vitest**: 9 files

## Frontend (packages/@openmaic/editor)

### The base

- **[React](https://seerepo.com/uses/react)**: 58 files · [in package.json](https://github.com/THU-MAIC/OpenMAIC/blob/5c3531cef7f8c8e61a0cacf261a410b3e1f44f3b/package.json)

### Interface

- **ProseMirror**: 17 files
- **prosemirror-state**: 12 files
- **prosemirror-view**: 11 files
- **prosemirror-commands**: 6 files
- **prosemirror-schema-list**: 4 files
- **prosemirror-history**: 2 files
- **prosemirror-inputrules**: 2 files
- **prosemirror-schema-basic**: 2 files
- **prosemirror-dropcursor**: 1 file
- **prosemirror-gapcursor**: 1 file
- **prosemirror-keymap**: 1 file
- **react-colorful**: 1 file

### Icons

- **[Lucide](https://seerepo.com/uses/lucide)**: 15 files

## Support (packages/@openmaic/editor)

### Content

- **[katex](https://seerepo.com/uses/katex)**: 2 files

### Testing

- **Vitest**: 58 files
- **Testing Library**: 30 files

## Frontend (packages/@openmaic/generation)

### Styles

- **[PostCSS](https://seerepo.com/uses/postcss)**: 1 file
- **postcss-value-parser**: 1 file

## Backend (packages/@openmaic/generation)

### AI

- **partial-json**: 1 file

## Support (packages/@openmaic/generation)

### Content

- **parse5**: 3 files
- **[katex](https://seerepo.com/uses/katex)**: 1 file

### Testing

- **Vitest**: 35 files

### Tools

- **es-module-lexer**: 1 file

### Other

- **nanoid**: 5 files
- **jsonrepair**: 2 files

## Support (packages/@openmaic/geometry)

### Content

- **[entities](https://seerepo.com/uses/entities)**: 1 file

### Testing

- **Vitest**: 2 files

### Other

- **tinycolor2**: 1 file

## Support (packages/@openmaic/importer)

### Content

- **@xmldom/xmldom**: 2 files
- **[katex](https://seerepo.com/uses/katex)**: 2 files
- **[pdfjs-dist](https://seerepo.com/uses/pdfjs-dist)**: 1 file
- **utif**: 1 file

### Testing

- **Vitest**: 36 files

### Other

- **jszip**: 3 files
- **tinycolor2**: 3 files
- **nanoid**: 1 file

## Frontend (packages/@openmaic/renderer)

### The base

- **[React](https://seerepo.com/uses/react)**: 28 files · [in package.json](https://github.com/THU-MAIC/OpenMAIC/blob/5c3531cef7f8c8e61a0cacf261a410b3e1f44f3b/package.json)

### Styles

- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**
- **[tailwind-merge](https://seerepo.com/uses/tailwind-merge)**: 1 file

### Interface

- **[motion](https://seerepo.com/uses/motion)**: 5 files
- **[echarts](https://seerepo.com/uses/echarts)**: 3 files

### Icons

- **[Lucide](https://seerepo.com/uses/lucide)**: 1 file

## Support (packages/@openmaic/renderer)

### Content

- **[html-to-image](https://seerepo.com/uses/html-to-image)**: 1 file
- **html2canvas-pro**: 1 file
- **[katex](https://seerepo.com/uses/katex)**: 1 file
- **[shiki](https://seerepo.com/uses/shiki)**: 1 file

### Testing

- **Vitest**: 27 files
- **Testing Library**: 11 files

### Other

- **tinycolor2**: 2 files
- **clsx**: 1 file

## Backend (packages/@openmaic/storage)

### Data

- **@electric-sql/pglite**: 10 files

## Support (packages/@openmaic/storage)

### Testing

- **Vitest**: 46 files
- **fake-indexeddb**: 7 files

## Support (packages/mathml2omml)

### Content

- **[entities](https://seerepo.com/uses/entities)**: 1 file

## Support (packages/pptxgenjs)

### Other

- **jszip**: 2 files

## Frontend (render-service)

### The base

- **[React](https://seerepo.com/uses/react)**: 1 file · [in package.json](https://github.com/THU-MAIC/OpenMAIC/blob/5c3531cef7f8c8e61a0cacf261a410b3e1f44f3b/package.json)

### Styles

- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**

## Support (render-service)

### The base

- **[Hono](https://seerepo.com/uses/hono)**: 1 file

### Content

- **parse5**: 3 files

### Testing

- **Vitest**: 32 files
- **Puppeteer**: 5 files

### Deploy

- **[@hono/node-server](https://seerepo.com/uses/hono-node-server)**: 1 file

### Tools

- **esbuild**: 1 file

### Other

- **fflate**: 1 file

## Other repos with a similar stack

- [CherryHQ/cherry-studio](https://seerepo.com/r/CherryHQ/cherry-studio/built): React, dexie, Anthropic, OpenAI, Tailwind CSS, class-variance-authority, PostCSS, tailwind-merge, motion, Radix UI, xyflow, echarts, react-resizable-panels, cmdk, Lucide, ai, ai-sdk, partial-json, katex, streamdown, sharp, @mozilla/readability, docx, htmlparser2, mdast-util-from-markdown, pdf-lib, turndown, Zod, pdfjs-dist, html-to-image · [Compare](https://seerepo.com/compare/CherryHQ/cherry-studio/vs/THU-MAIC/OpenMAIC)
- [cline/cline](https://seerepo.com/r/cline/cline/built): React, Anthropic, OpenAI, Tailwind CSS, class-variance-authority, next-themes, tailwind-merge, motion, sonner, Radix UI, xyflow, use-stick-to-bottom, Base UI, cmdk, embla-carousel-react, Lucide, ai, ai-sdk, tokenlens, streamdown, js-yaml, shiki, turndown, Zod · [Compare](https://seerepo.com/compare/cline/cline/vs/THU-MAIC/OpenMAIC)
- [Significant-Gravitas/AutoGPT](https://seerepo.com/r/Significant-Gravitas/AutoGPT/built): React, Next.js, Postgres, dexie, Anthropic, OpenAI, Tailwind CSS, class-variance-authority, geist, next-themes, tailwind-merge, motion, sonner, Radix UI, use-stick-to-bottom, cmdk, embla-carousel-react, ai, e2b, katex, streamdown, shiki, Zod · [Compare](https://seerepo.com/compare/Significant-Gravitas/AutoGPT/vs/THU-MAIC/OpenMAIC)
- [supabase/supabase](https://seerepo.com/r/supabase/supabase/built): React, Next.js, OpenAI, Tailwind CSS, class-variance-authority, next-themes, motion, sonner, Radix UI, xyflow, use-stick-to-bottom, react-resizable-panels, cmdk, monaco-editor, Lucide, @aws-sdk/credential-providers, ai, streamdown, js-yaml, shiki, mdast-util-from-markdown, Zod, html-to-image · [Compare](https://seerepo.com/compare/supabase/supabase/vs/THU-MAIC/OpenMAIC)
- [unslothai/unsloth](https://seerepo.com/r/unslothai/unsloth/built): React, dexie, OpenAI, Tailwind CSS, class-variance-authority, PostCSS, tailwind-merge, motion, sonner, Radix UI, xyflow, react-resizable-panels, Base UI, cmdk, Lucide, katex, streamdown, js-yaml, mdast-util-from-markdown, micromark-extension-math, unpdf · [Compare](https://seerepo.com/compare/THU-MAIC/OpenMAIC/vs/unslothai/unsloth)
- [langgenius/dify](https://seerepo.com/r/langgenius/dify/built): React, Next.js, Postgres, Hono, Tailwind CSS, class-variance-authority, next-themes, motion, echarts, Base UI, embla-carousel-react, katex, streamdown, js-yaml, sharp, Zod, Ajv, @xmldom/xmldom, html-to-image, @hono/node-server · [Compare](https://seerepo.com/compare/langgenius/dify/vs/THU-MAIC/OpenMAIC)

## Frequently asked questions

### What language is OpenMAIC written in?

OpenMAIC is written in TypeScript, with 876,324 written lines.

### What framework does OpenMAIC use?

OpenMAIC is built with React, Next.js, and Hono.

The proof: [in package.json](https://github.com/THU-MAIC/OpenMAIC/blob/5c3531cef7f8c8e61a0cacf261a410b3e1f44f3b/package.json)

### What database does OpenMAIC use?

OpenMAIC stores its data in @electric-sql/pglite, Postgres, and dexie.

### What does OpenMAIC sign people in with?

OpenMAIC signs people in with @aws-sdk/credential-providers.

### Does OpenMAIC use AI?

Yes. OpenMAIC uses AI through Pi, ai, e2b, ai-sdk, partial-json, tokenlens, Anthropic, and OpenAI.

### What services does OpenMAIC use?

OpenMAIC stores files in AWS S3 and uses @aws-sdk/s3-request-presigner.

The proof: [lib/persistence/asset-byte-store.ts, line 30](https://github.com/THU-MAIC/OpenMAIC/blob/5c3531cef7f8c8e61a0cacf261a410b3e1f44f3b/lib/persistence/asset-byte-store.ts#L30)

### Does OpenMAIC have tests?

Yes. OpenMAIC has 1,570 test files and is tested with Vitest, @playwright/test, fake-indexeddb, Testing Library, and Puppeteer.

### Which repos have a stack like OpenMAIC's?

The ones that share most of its stack: CherryHQ/cherry-studio, cline/cline, and Significant-Gravitas/AutoGPT.

## What is your repo built with?

Any public repo, with no account: https://seerepo.com/r/owner/repo/built, with the owner and name it has on GitHub.
