Source: https://seerepo.com/r/ag-ui-protocol/ag-ui/built
Markdown source: https://seerepo.com/r/ag-ui-protocol/ag-ui/built.md
Description: ag-ui is a Python repo built with ASP.NET Core, FastAPI, Spring, activity-compose, AIOHTTP, and 8 more.

# What is ag-ui built with?

ag-ui is a Python repo built with ASP.NET Core, FastAPI, Spring, activity-compose, AIOHTTP, and 8 more. It uses AI through go, Microsoft.Extensions.AI.Abstractions, openai-agents, spring-ai-bom, spring-ai-client-chat, and 19 more, measures its use with PostHog, makes its content with coil-compose, streamdown, markdown-it, and yaml, validates its data with Pydantic, Zod, zod-to-json-schema, @cfworker/json-schema, and Ajv, is tested with io.ktor:ktor-client-mock, junit-bom, org.jetbrains.kotlinx:kotlinx-coroutines-test, reactor-test, org.junit.jupiter:junit-jupiter, and 4 more, deploys with io.ktor:ktor-client-logging, slf4j-simple, github.com/sirupsen/logrus, and log, and uses @mastra/libsql and MCP. It has 879,462 written lines, with 1,756 test files.

Read on November 7, 2026, at commit 37b4da9.

Repository: https://github.com/ag-ui-protocol/ag-ui

## Backend (/)

### The base

- **[ASP.NET Core](https://seerepo.com/uses/aspnet-core)**
- **[FastAPI](https://seerepo.com/uses/fastapi)**: 13 files
- **[Spring](https://seerepo.com/uses/spring)**: 2 files

### AI

- **go**
- **Microsoft.Extensions.AI.Abstractions**
- **openai-agents**
- **spring-ai-bom**
- **spring-ai-client-chat**
- **strands-agents**
- **Microsoft.Extensions.AI**: 17 files
- **google-adk**: 10 files
- **ag-ui-a2ui-toolkit**: 7 files
- **CrewAI**: 7 files
- **google-antigravity**: 6 files
- **[LangChain](https://seerepo.com/uses/langchain)**: 5 files
- **[LangGraph](https://seerepo.com/uses/langgraph)**: 4 files
- **[litellm](https://seerepo.com/uses/litellm)**: 4 files
- **langroid**: 1 file
- **[mcp](https://seerepo.com/uses/mcp)**: 1 file

## Support (/)

### The base

- **activity-compose**
- **[AIOHTTP](https://seerepo.com/uses/aiohttp)**
- **[core-ktx](https://seerepo.com/uses/core-ktx)**
- **java-server**
- **[Tokio](https://seerepo.com/uses/tokio)**: 1 file
- **[uvicorn](https://seerepo.com/uses/uvicorn)**: 1 file

### Content

- **[coil-compose](https://seerepo.com/uses/coil-compose)**

### Validation

- **[Pydantic](https://seerepo.com/uses/pydantic)**: 10 files

### Testing

- **io.ktor:ktor-client-mock**
- **junit-bom**
- **org.jetbrains.kotlinx:kotlinx-coroutines-test**
- **reactor-test**
- **org.junit.jupiter:junit-jupiter**: 30 files
- **github.com/stretchr/testify**: 13 files
- **org.springframework.boot:spring-boot-starter-test**: 1 file
- **Vitest**: 1 file

### Deploy

- **io.ktor:ktor-client-logging**
- **[slf4j-simple](https://seerepo.com/uses/slf4j-simple)**
- **[github.com/sirupsen/logrus](https://seerepo.com/uses/githubcom-sirupsen-logrus)**: 2 files
- **[log](https://seerepo.com/uses/log)**: 2 files

### Tools

- **Grpc.Tools**
- **sorbet-runtime**: 7 files

### Other

- **ag-ui-protocol**
- **asyncio**
- **coil-network-ktor3**
- **io.ktor:ktor-client-content-negotiation**
- **[JetBrains](https://seerepo.com/uses/jetbrains)**
- **kotlinx-serialization-json**
- **reactor-core**
- **s**
- **System.Text.Json**: 59 files
- **co.touchlab:kermit**: 13 files
- **serde_json**: 10 files
- **serde**: 8 files
- **com.fasterxml.jackson.core:jackson-databind**: 6 files
- **Ktor**: 6 files
- **io.ktor:ktor-serialization-kotlinx-json**: 5 files
- **async-trait**: 4 files
- **futures**: 4 files
- **reqwest**: 3 files
- **thiserror**: 3 files
- **[Google](https://seerepo.com/uses/google)**: 2 files
- **Google.Protobuf**: 2 files
- **http**: 2 files
- **json**: 2 files
- **sse-starlette**: 2 files
- **bytes**: 1 file
- **httpx**: 1 file
- **json-patch**: 1 file
- **json-repair**: 1 file
- **meta**: 1 file
- **System.Net.ServerSentEvents**: 1 file
- **uuid**: 1 file

## Frontend (apps/dojo)

### The base

- **[React](https://seerepo.com/uses/react)**: 60 files · [in apps/dojo/package.json](https://github.com/ag-ui-protocol/ag-ui/blob/37b4da90c8dfba2b7ef2182c738fda5350f0fc60/apps/dojo/package.json)
- **[Next.js](https://seerepo.com/uses/nextjs)**: 11 files · [in apps/dojo/package.json](https://github.com/ag-ui-protocol/ag-ui/blob/37b4da90c8dfba2b7ef2182c738fda5350f0fc60/apps/dojo/package.json)

### Styles

- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**
- **[next-themes](https://seerepo.com/uses/next-themes)**: 8 files
- **[class-variance-authority](https://seerepo.com/uses/class-variance-authority)**: 2 files
- **[tailwind-merge](https://seerepo.com/uses/tailwind-merge)**: 1 file

### Interface

- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 4 files
- **@a2ui/web_core**: 1 file
- **@copilotkit/react-ui**: 1 file
- **[@monaco-editor/react](https://seerepo.com/uses/monaco-editor-react)**: 1 file
- **[embla-carousel-react](https://seerepo.com/uses/embla-carousel-react)**: 1 file
- **[tiptap](https://seerepo.com/uses/tiptap)**: 1 file

### Icons

- **[Lucide](https://seerepo.com/uses/lucide)**: 10 files
- **[@phosphor-icons/react](https://seerepo.com/uses/phosphor-icons-react)**: 1 file

## Backend (apps/dojo)

### The base

- **[Express](https://seerepo.com/uses/express)**: [in apps/dojo/package.json](https://github.com/ag-ui-protocol/ag-ui/blob/37b4da90c8dfba2b7ef2182c738fda5350f0fc60/apps/dojo/package.json)
- **[Hono](https://seerepo.com/uses/hono)**: 3 files

### Data

- **@mastra/libsql**: 1 file

### AI

- **copilotkit**: 37 files
- **mastra**: 15 files
- **@a2a-js/sdk**: 1 file
- **[@langchain/openai](https://seerepo.com/uses/langchain-openai)**: 1 file

### Services

- **[PostHog](https://seerepo.com/uses/posthog)**: 6 files · [apps/dojo/instrumentation-client.ts, line 1](https://github.com/ag-ui-protocol/ag-ui/blob/37b4da90c8dfba2b7ef2182c738fda5350f0fc60/apps/dojo/instrumentation-client.ts#L1)

## Support (apps/dojo)

### Content

- **[streamdown](https://seerepo.com/uses/streamdown)**: 2 files
- **[markdown-it](https://seerepo.com/uses/markdown-it)**: 1 file

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 21 files
- **[zod-to-json-schema](https://seerepo.com/uses/zod-to-json-schema)**: 1 file

### Tools

- **concurrently**: 2 files

### Other

- **clsx**: 1 file
- **dedent**: 1 file
- **diff**: 1 file
- **rxjs**: 1 file

## Backend (integrations/a2a/typescript)

### AI

- **@a2a-js/sdk**: 3 files

## Support (integrations/a2a/typescript)

### Other

- **rxjs**: 1 file

## Support (integrations/adk-middleware/js)

### Validation

- **@cfworker/json-schema**: 1 file

### Testing

- **Vitest**: 17 files

### Other

- **rxjs**: 1 file

## Support (integrations/adk-middleware/typescript)

### Testing

- **Vitest**: 1 file

## Support (integrations/agno/typescript)

### Testing

- **Vitest**: 1 file

## Support (integrations/antigravity/typescript)

### Testing

- **Vitest**: 1 file

## Backend (integrations/aws-strands/typescript)

### The base

- **[Express](https://seerepo.com/uses/express)**: 2 files · [in apps/dojo/package.json](https://github.com/ag-ui-protocol/ag-ui/blob/37b4da90c8dfba2b7ef2182c738fda5350f0fc60/apps/dojo/package.json)

### AI

- **@strands-agents/sdk**: 8 files

## Support (integrations/aws-strands/typescript)

### Validation

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

### Testing

- **Vitest**: 89 files

### Other

- **cors**: 1 file
- **http**: 1 file
- **rxjs**: 1 file

## Backend (integrations/claude-agent-sdk/typescript)

### Services

- **MCP**: 1 file · [integrations/claude-agent-sdk/typescript/src/loopback-mcp.ts, line 3](https://github.com/ag-ui-protocol/ag-ui/blob/37b4da90c8dfba2b7ef2182c738fda5350f0fc60/integrations/claude-agent-sdk/typescript/src/loopback-mcp.ts#L3)

## Support (integrations/claude-agent-sdk/typescript)

### Validation

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

### Testing

- **Vitest**: 11 files

### Other

- **rxjs**: 2 files

## Support (integrations/claude-managed-agents/typescript)

### Testing

- **Vitest**: 17 files

### Other

- **rxjs**: 1 file

## Backend (integrations/community/cloudflare-agents/typescript)

### AI

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

## Support (integrations/community/cloudflare-agents/typescript)

### Testing

- **Vitest**: 3 files

### Other

- **rxjs**: 2 files

## Backend (integrations/community/omnara/typescript)

### AI

- **@omnara/sdk**: 1 file

## Support (integrations/community/omnara/typescript)

### Content

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

### Testing

- **Vitest**: 2 files

### Other

- **rxjs**: 1 file

## Support (integrations/community/spring-ai/typescript)

### Testing

- **Vitest**: 1 file

## Support (integrations/crew-ai/typescript)

### Testing

- **Vitest**: 1 file

## Backend (integrations/langchain/typescript)

### AI

- **[LangChain](https://seerepo.com/uses/langchain)**: 4 files

## Support (integrations/langchain/typescript)

### Validation

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

### Testing

- **Vitest**: 7 files

### Other

- **rxjs**: 1 file

## Backend (integrations/langgraph/typescript)

### AI

- **[LangChain](https://seerepo.com/uses/langchain)**: 7 files

## Support (integrations/langgraph/typescript)

### Testing

- **Vitest**: 28 files

### Other

- **rxjs**: 1 file

## Support (integrations/llama-index/typescript)

### Testing

- **Vitest**: 1 file

### Other

- **rxjs**: 1 file

## Backend (integrations/mastra/typescript)

### AI

- **mastra**: 4 files
- **@copilotkit/runtime**: 1 file

## Support (integrations/mastra/typescript)

### Validation

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

### Testing

- **Vitest**: 33 files

### Other

- **fast-json-patch**: 1 file
- **rxjs**: 1 file

## Support (integrations/openai-agents/typescript)

### Testing

- **Vitest**: 1 file

## Backend (integrations/vercel-ai-sdk/typescript)

### AI

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

## Support (integrations/vercel-ai-sdk/typescript)

### Validation

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

### Testing

- **Vitest**: 2 files

### Other

- **rxjs**: 1 file

## Support (integrations/watsonx/typescript)

### Testing

- **Vitest**: 7 files

### Other

- **rxjs**: 2 files

## Backend (middlewares/a2a-middleware)

### AI

- **@a2a-js/sdk**: 2 files

## Support (middlewares/a2a-middleware)

### Testing

- **Vitest**: 1 file

### Other

- **rxjs**: 1 file

## Support (middlewares/a2ui-middleware)

### Testing

- **Vitest**: 7 files

### Other

- **clarinet**: 1 file
- **rxjs**: 1 file

## Support (middlewares/event-throttle-middleware)

### Testing

- **Vitest**: 1 file

### Other

- **rxjs**: 1 file

## Backend (middlewares/mcp-apps-middleware)

### Services

- **MCP**: 1 file · [integrations/claude-agent-sdk/typescript/src/loopback-mcp.ts, line 3](https://github.com/ag-ui-protocol/ag-ui/blob/37b4da90c8dfba2b7ef2182c738fda5350f0fc60/integrations/claude-agent-sdk/typescript/src/loopback-mcp.ts#L3)

## Support (middlewares/mcp-apps-middleware)

### Testing

- **Vitest**: 5 files

### Other

- **rxjs**: 1 file

## Backend (middlewares/mcp-middleware)

### Services

- **MCP**: 1 file · [integrations/claude-agent-sdk/typescript/src/loopback-mcp.ts, line 3](https://github.com/ag-ui-protocol/ag-ui/blob/37b4da90c8dfba2b7ef2182c738fda5350f0fc60/integrations/claude-agent-sdk/typescript/src/loopback-mcp.ts#L3)

## Support (middlewares/mcp-middleware)

### Testing

- **Vitest**: 1 file

### Other

- **rxjs**: 1 file

## Support (middlewares/middleware-starter)

### Other

- **rxjs**: 1 file

## Support (sdks/typescript/packages/a2ui-toolkit)

### Testing

- **Vitest**: 3 files

## Support (sdks/typescript/packages/cli)

### Testing

- **Vitest**: 4 files

### Tools

- **commander**: 1 file
- **giget**: 1 file
- **Inquirer**: 1 file

## Support (sdks/typescript/packages/client)

### Validation

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

### Testing

- **Vitest**: 59 files
- **@copilotkit/aimock**: 1 file

### Other

- **rxjs**: 17 files
- **fast-json-patch**: 3 files
- **untruncate-json**: 2 files
- **uuid**: 2 files
- **compare-versions**: 1 file

## Support (sdks/typescript/packages/core)

### Validation

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

### Testing

- **Vitest**: 15 files

### Tools

- **esbuild**: 1 file

## Support (sdks/typescript/packages/proto)

### Testing

- **Vitest**: 14 files

### Other

- **@bufbuild/protobuf**: 1 file

## Support (spec)

### Validation

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

### Testing

- **Vitest**: 9 files

### Tools

- **Prettier**: 1 file

## Other repos with a similar stack

- [vectorize-io/hindsight](https://seerepo.com/r/vectorize-io/hindsight/built): FastAPI, AIOHTTP, Tokio, uvicorn, React, Next.js, MCP, openai-agents, strands-agents, google-adk, CrewAI, LangChain, litellm, Pydantic, Tailwind CSS, next-themes, class-variance-authority, tailwind-merge, Radix UI, Lucide, Zod, ai · [Compare](https://seerepo.com/compare/ag-ui-protocol/ag-ui/vs/vectorize-io/hindsight)
- [Significant-Gravitas/AutoGPT](https://seerepo.com/r/Significant-Gravitas/AutoGPT/built): FastAPI, AIOHTTP, uvicorn, React, Next.js, PostHog, Pydantic, Tailwind CSS, next-themes, class-variance-authority, tailwind-merge, Radix UI, embla-carousel-react, streamdown, Zod, ai · [Compare](https://seerepo.com/compare/ag-ui-protocol/ag-ui/vs/Significant-Gravitas/AutoGPT)
- [bytedance/deer-flow](https://seerepo.com/r/bytedance/deer-flow/built): FastAPI, uvicorn, React, Next.js, LangChain, LangGraph, Tailwind CSS, next-themes, class-variance-authority, tailwind-merge, Radix UI, embla-carousel-react, Lucide, streamdown, Zod, ai · [Compare](https://seerepo.com/compare/ag-ui-protocol/ag-ui/vs/bytedance/deer-flow)
- [bojieli/ai-agent-book](https://seerepo.com/r/bojieli/ai-agent-book/built): FastAPI, AIOHTTP, uvicorn, React, Next.js, Express, PostHog, MCP, litellm, Pydantic, Tailwind CSS, class-variance-authority, tailwind-merge, Radix UI, Lucide · [Compare](https://seerepo.com/compare/ag-ui-protocol/ag-ui/vs/bojieli/ai-agent-book)
- [ruvnet/ruflo](https://seerepo.com/r/ruvnet/ruflo/built): Tokio, React, Express, MCP, Tailwind CSS, next-themes, class-variance-authority, tailwind-merge, Radix UI, embla-carousel-react, Lucide, Zod, yaml, Ajv · [Compare](https://seerepo.com/compare/ag-ui-protocol/ag-ui/vs/ruvnet/ruflo)
- [cline/cline](https://seerepo.com/r/cline/cline/built): React, PostHog, MCP, Tailwind CSS, next-themes, class-variance-authority, tailwind-merge, Radix UI, embla-carousel-react, Lucide, streamdown, Zod, ai, yaml · [Compare](https://seerepo.com/compare/ag-ui-protocol/ag-ui/vs/cline/cline)

## Frequently asked questions

### What language is ag-ui written in?

ag-ui is written in Python, with 879,462 written lines.

### What framework does ag-ui use?

ag-ui is built with ASP.NET Core, FastAPI, Spring, activity-compose, AIOHTTP, core-ktx, java-server, Tokio, uvicorn, React, Next.js, Express, and Hono.

### Does ag-ui use AI?

Yes. ag-ui uses AI through go, Microsoft.Extensions.AI.Abstractions, openai-agents, spring-ai-bom, spring-ai-client-chat, strands-agents, Microsoft.Extensions.AI, google-adk, ag-ui-a2ui-toolkit, CrewAI, google-antigravity, LangChain, LangGraph, litellm, langroid, mcp, copilotkit, mastra, @a2a-js/sdk, @langchain/openai, @strands-agents/sdk, ai, @omnara/sdk, and @copilotkit/runtime.

### What services does ag-ui use?

ag-ui measures its use with PostHog and uses @mastra/libsql and MCP.

The proof: [apps/dojo/instrumentation-client.ts, line 1](https://github.com/ag-ui-protocol/ag-ui/blob/37b4da90c8dfba2b7ef2182c738fda5350f0fc60/apps/dojo/instrumentation-client.ts#L1)

### Does ag-ui have tests?

Yes. ag-ui has 1,756 test files and is tested with io.ktor:ktor-client-mock, junit-bom, org.jetbrains.kotlinx:kotlinx-coroutines-test, reactor-test, org.junit.jupiter:junit-jupiter, github.com/stretchr/testify, org.springframework.boot:spring-boot-starter-test, Vitest, and @copilotkit/aimock.

### Which repos have a stack like ag-ui's?

The ones that share most of its stack: vectorize-io/hindsight, Significant-Gravitas/AutoGPT, and bytedance/deer-flow.

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