Source: https://seerepo.com/r/marimo-team/marimo/built
Markdown source: https://seerepo.com/r/marimo-team/marimo/built.md
Description: marimo is a Python repo built with FastAPI, starlette, uvicorn, React, and Vite. It uses AI through ai and @ai-sdk/react.

# What is marimo built with?

marimo is a Python repo built with FastAPI, starlette, uvicorn, React, and Vite. It uses AI through ai and @ai-sdk/react, makes its content with markdown, marked, dompurify, html-to-image, katex, and 3 more, validates its data with msgspec, jsonschema, @hookform/resolvers, and Zod, is tested with pytest-asyncio, Pytest, Vitest, Testing Library, @playwright/test, and 1 more, and deploys with psutil. It has 907,947 written lines, with 1,461 test files.

Read on November 4, 2026, at commit b62dfd4.

Repository: https://github.com/marimo-team/marimo

## Backend (/)

### The base

- **[FastAPI](https://seerepo.com/uses/fastapi)**

## Support (/)

### The base

- **starlette**: 58 files
- **[uvicorn](https://seerepo.com/uses/uvicorn)**: 7 files

### Content

- **markdown**: 7 files

### Validation

- **msgspec**: 85 files
- **jsonschema**: 1 file

### Testing

- **pytest-asyncio**
- **Pytest**: 484 files

### Deploy

- **[psutil](https://seerepo.com/uses/psutil)**: 11 files

### Tools

- **click**: 23 files
- **jedi**: 3 files
- **pygments**: 1 file

### Other

- **",**
- **and**
- **pyyaml**
- **s**
- **tomlkit**: 5 files
- **pyodide**: 2 files
- **httpx**: 1 file

## Frontend (frontend)

### The base

- **[React](https://seerepo.com/uses/react)**: 470 files
- **[Vite](https://seerepo.com/uses/vite)**: 2 files

### Styles

- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**
- **[class-variance-authority](https://seerepo.com/uses/class-variance-authority)**: 22 files
- **@radix-ui/colors**: 2 files
- **PostCSS**: 1 file
- **[tailwind-merge](https://seerepo.com/uses/tailwind-merge)**: 1 file

### Interface

- **[CodeMirror](https://seerepo.com/uses/codemirror)**: 104 files
- **[TanStack](https://seerepo.com/uses/tanstack)**: 49 files
- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 42 files
- **[React Hook Form](https://seerepo.com/uses/react-hook-form)**: 21 files
- **vega-lite**: 16 files
- **@uiw/react-codemirror**: 12 files
- **react-aria-components**: 12 files
- **@marimo-team/codemirror-languageserver**: 9 files
- **react-arborist**: 9 files
- **react-resizable-panels**: 9 files
- **reactflow**: 9 files
- **@uidotdev/usehooks**: 7 files
- **dnd-kit**: 7 files
- **@lezer/highlight**: 5 files
- **[cmdk](https://seerepo.com/uses/cmdk)**: 5 files
- **@replit/codemirror-vim**: 3 files
- **react-dropzone**: 3 files
- **react-dnd**: 2 files
- **react-error-boundary**: 2 files
- **Swiper**: 2 files
- **@dagrejs/dagre**: 1 file
- **dnd-core**: 1 file
- **[Mermaid](https://seerepo.com/uses/mermaid)**: 1 file
- **react-dnd-html5-backend**: 1 file
- **react-grid-layout**: 1 file
- **react-virtuoso**: 1 file
- **Vega**: 1 file
- **[xterm](https://seerepo.com/uses/xterm)**: 1 file

### Icons

- **[Lucide](https://seerepo.com/uses/lucide)**: 227 files
- **@radix-ui/react-icons**: 7 files

## Backend (frontend)

### AI

- **[ai](https://seerepo.com/uses/ai)**: 21 files
- **@ai-sdk/react**: 6 files

## Support (frontend)

### Content

- **marked**: 2 files
- **[dompurify](https://seerepo.com/uses/dompurify)**: 1 file
- **html-to-image**: 1 file
- **katex**: 1 file
- **rehype-sanitize**: 1 file
- **streamdown**: 1 file
- **[yaml](https://seerepo.com/uses/yaml)**: 1 file

### Validation

- **@hookform/resolvers**: 6 files

### Testing

- **Vitest**: 573 files
- **Testing Library**: 202 files
- **@playwright/test**: 25 files
- **msw**: 1 file

### Tools

- **vscode-languageserver-protocol**: 7 files
- **@vitejs/plugin-react**: 1 file
- **sql-formatter**: 1 file
- **Storybook**: 1 file

### Other

- **jotai**: 239 files
- **Lodash**: 14 files
- **pyodide**: 9 files
- **@lezer/common**: 8 files
- **@internationalized/date**: 5 files
- **clsx**: 5 files
- **date-fns**: 5 files
- **@paralleldrive/cuid2**: 2 files
- **lz-string**: 2 files
- **humanize-duration**: 1 file
- **jotai-scope**: 1 file
- **path-to-regexp**: 1 file
- **web-vitals**: 1 file

## Support (packages/client)

### Validation

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

### Testing

- **Vitest**: 10 files

## Support (packages/llm-info)

### Content

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

### Validation

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

### Testing

- **Vitest**: 5 files

## Support (packages/lsp)

### Testing

- **Vitest**: 2 files

### Other

- **minimist**: 1 file
- **ws**: 1 file

## Support (packages/openapi)

### Tools

- **openapi-typescript**: 1 file
- **TypeScript**: 1 file

### Other

- **openapi-fetch**: 1 file

## Frontend (packages/smart-cells)

### Interface

- **@codemirror/lang-python**: 1 file

## Support (packages/smart-cells)

### Testing

- **Vitest**: 5 files

### Other

- **@lezer/common**: 2 files

## Other repos with a similar stack

- [supabase/supabase](https://seerepo.com/r/supabase/supabase/built): React, Vite, Tailwind CSS, class-variance-authority, Radix UI, React Hook Form, react-resizable-panels, @uidotdev/usehooks, dnd-kit, cmdk, react-dropzone, react-error-boundary, @dagrejs/dagre, Mermaid, Lucide, ai, @ai-sdk/react, html-to-image, streamdown, @hookform/resolvers, Zod · [Compare](https://seerepo.com/compare/marimo-team/marimo/vs/supabase/supabase)
- [paperclipai/paperclip](https://seerepo.com/r/paperclipai/paperclip/built): React, Vite, jsonschema, Tailwind CSS, class-variance-authority, tailwind-merge, CodeMirror, Radix UI, react-resizable-panels, dnd-kit, @lezer/highlight, cmdk, Mermaid, xterm, Lucide, ai, dompurify, yaml, Zod · [Compare](https://seerepo.com/compare/marimo-team/marimo/vs/paperclipai/paperclip)
- [NousResearch/hermes-agent](https://seerepo.com/r/NousResearch/hermes-agent/built): FastAPI, React, Vite, Tailwind CSS, class-variance-authority, tailwind-merge, CodeMirror, Radix UI, dnd-kit, cmdk, react-dnd-html5-backend, xterm, Lucide, dompurify, katex, streamdown, yaml, Zod · [Compare](https://seerepo.com/compare/marimo-team/marimo/vs/NousResearch/hermes-agent)
- [langflow-ai/langflow](https://seerepo.com/r/langflow-ai/langflow/built): FastAPI, uvicorn, React, Vite, msgspec, jsonschema, psutil, Tailwind CSS, class-variance-authority, tailwind-merge, Radix UI, reactflow, cmdk, react-error-boundary, Lucide, @radix-ui/react-icons, dompurify, rehype-sanitize · [Compare](https://seerepo.com/compare/langflow-ai/langflow/vs/marimo-team/marimo)
- [Significant-Gravitas/AutoGPT](https://seerepo.com/r/Significant-Gravitas/AutoGPT/built): FastAPI, uvicorn, React, jsonschema, psutil, Tailwind CSS, class-variance-authority, tailwind-merge, Radix UI, React Hook Form, cmdk, ai, @ai-sdk/react, katex, streamdown, @hookform/resolvers, Zod · [Compare](https://seerepo.com/compare/marimo-team/marimo/vs/Significant-Gravitas/AutoGPT)
- [shadcn-ui/ui](https://seerepo.com/r/shadcn-ui/ui/built): React, Vite, Tailwind CSS, class-variance-authority, PostCSS, TanStack, Radix UI, React Hook Form, react-resizable-panels, dnd-kit, cmdk, Lucide, ai, @ai-sdk/react, streamdown, Zod · [Compare](https://seerepo.com/compare/marimo-team/marimo/vs/shadcn-ui/ui)

## Frequently asked questions

### What language is marimo written in?

marimo is written in Python, with 907,947 written lines.

### What framework does marimo use?

marimo is built with FastAPI, starlette, uvicorn, React, and Vite.

### Does marimo use AI?

Yes. marimo uses AI through ai and @ai-sdk/react.

### Does marimo have tests?

Yes. marimo has 1,461 test files and is tested with pytest-asyncio, Pytest, Vitest, Testing Library, @playwright/test, and msw.

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

The ones that share most of its stack: supabase/supabase, paperclipai/paperclip, and NousResearch/hermes-agent.

## 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.
