Source: https://seerepo.com/r/Arize-ai/phoenix/built
Markdown source: https://seerepo.com/r/Arize-ai/phoenix/built.md
Description: phoenix is a TypeScript repo built with FastAPI, starlette, fastmcp-slim, graphql-core, strawberry-graphql, and 5 more. It stores its data in SQLite.

# What is phoenix built with?

phoenix is a TypeScript repo built with FastAPI, starlette, fastmcp-slim, graphql-core, strawberry-graphql, and 5 more. It stores its data in SQLite, reaches it with SQLAlchemy, sqlglot, and alembic, uses AI through openinference-semantic-conventions, pydantic-ai-slim, openinference-instrumentation, ai, @arizeai/openinference-semantic-conventions, and 2 more, makes its content with linkify-it-py, myst-parser, jinja2, pystache, streamdown, and 3 more, validates its data with Pydantic, jsonschema, Zod, and @hookform/resolvers, is tested with Vitest, @playwright/test, vitest-canvas-mock, ink-testing-library, OpenTelemetry, and 1 more, deploys with opentelemetry-semantic-conventions, opentelemetry-api, and psutil, and uses aiosqlite and pyarrow. It has 1,011,392 written lines, with 1,083 test files.

Read on November 11, 2026, at commit 5a33185.

Repository: https://github.com/Arize-ai/phoenix

## Frontend (/)

### Styles

- **pydata-sphinx-theme**
- **sphinx-design**

## Backend (/)

### The base

- **[FastAPI](https://seerepo.com/uses/fastapi)**: 42 files
- **[starlette](https://seerepo.com/uses/starlette)**: 39 files

### Data

- **[aiosqlite](https://seerepo.com/uses/aiosqlite)**
- **[pyarrow](https://seerepo.com/uses/pyarrow)**: 5 files
- **[SQLite](https://seerepo.com/uses/sqlite)**: 2 files · [src/phoenix/db/engines.py, line 11](https://github.com/Arize-ai/phoenix/blob/5a3318534df5aa235221b58e5aa55210001394c2/src/phoenix/db/engines.py#L11)

### Data access

- **[SQLAlchemy](https://seerepo.com/uses/sqlalchemy)**: 222 files
- **[sqlglot](https://seerepo.com/uses/sqlglot)**: 4 files
- **[alembic](https://seerepo.com/uses/alembic)**: 1 file

### AI

- **openinference-semantic-conventions**
- **pydantic-ai-slim**
- **openinference-instrumentation**: 15 files

## Support (/)

### The base

- **fastmcp-slim**
- **graphql-core**
- **strawberry-graphql**
- **[uvicorn](https://seerepo.com/uses/uvicorn)**: 2 files

### Content

- **linkify-it-py**
- **[myst-parser](https://seerepo.com/uses/myst-parser)**
- **[jinja2](https://seerepo.com/uses/jinja2)**: 6 files
- **pystache**: 1 file

### Validation

- **[Pydantic](https://seerepo.com/uses/pydantic)**: 93 files
- **[jsonschema](https://seerepo.com/uses/jsonschema)**: 1 file

### Testing

- **Vitest**: 1 file

### Deploy

- **[opentelemetry-semantic-conventions](https://seerepo.com/uses/opentelemetry-semantic-conventions)**
- **opentelemetry-api**: 7 files
- **[psutil](https://seerepo.com/uses/psutil)**: 2 files

### Tools

- **Sphinx**
- **sphinx-autosummary-accessors**
- **typing-extensions**: 215 files

### Other

- **certifi**
- **pypistats**
- **python-multipart**
- **s**
- **pandas**: 29 files
- **NumPy**: 15 files
- **httpx**: 14 files
- **cachetools**: 10 files
- **aioitertools**: 9 files
- **OpenTelemetry**: 8 files
- **httpx2**: 7 files
- **wrapt**: 5 files
- **grpcio**: 3 files
- **jsonpath-ng**: 2 files
- **pyyaml**: 2 files
- **requests**: 2 files
- **tqdm**: 2 files

## Frontend (js/app)

### The base

- **[React](https://seerepo.com/uses/react)**: 806 files · [in js/app/package.json](https://github.com/Arize-ai/phoenix/blob/5a3318534df5aa235221b58e5aa55210001394c2/js/app/package.json)
- **react-relay**: 356 files
- **[React Router](https://seerepo.com/uses/react-router)**: 165 files
- **[Vite](https://seerepo.com/uses/vite)**: 1 file · [in js/app/package.json](https://github.com/Arize-ai/phoenix/blob/5a3318534df5aa235221b58e5aa55210001394c2/js/app/package.json)

### Styles

- **[@emotion/react](https://seerepo.com/uses/emotion-react)**: 515 files
- **polished**: 4 files
- **@uiw/codemirror-themes**: 1 file

### Interface

- **[react-aria-components](https://seerepo.com/uses/react-aria-components)**: 152 files
- **[React Hook Form](https://seerepo.com/uses/react-hook-form)**: 55 files
- **[react-aria](https://seerepo.com/uses/react-aria)**: 54 files
- **[TanStack](https://seerepo.com/uses/tanstack)**: 45 files
- **[recharts](https://seerepo.com/uses/recharts)**: 32 files
- **[CodeMirror](https://seerepo.com/uses/codemirror)**: 29 files
- **[react-resizable-panels](https://seerepo.com/uses/react-resizable-panels)**: 27 files
- **[react-hotkeys-hook](https://seerepo.com/uses/react-hotkeys-hook)**: 16 files
- **[@uiw/react-codemirror](https://seerepo.com/uses/uiw-react-codemirror)**: 15 files
- **[dnd-kit](https://seerepo.com/uses/dnd-kit)**: 6 files
- **[motion](https://seerepo.com/uses/motion)**: 6 files
- **json-render**: 4 files
- **react-stately**: 4 files
- **[@lezer/highlight](https://seerepo.com/uses/lezer-highlight)**: 3 files
- **@paper-design/shaders-react**: 2 files
- **[D3](https://seerepo.com/uses/d3)**: 2 files
- **[react-error-boundary](https://seerepo.com/uses/react-error-boundary)**: 2 files
- **[@streamdown/code](https://seerepo.com/uses/streamdown-code)**: 1 file
- **codemirror-json-schema**: 1 file
- **[react-resizable](https://seerepo.com/uses/react-resizable)**: 1 file
- **[use-stick-to-bottom](https://seerepo.com/uses/use-stick-to-bottom)**: 1 file

## Backend (js/app)

### AI

- **[ai](https://seerepo.com/uses/ai)**: 34 files
- **@arizeai/openinference-semantic-conventions**: 12 files
- **[@ai-sdk/react](https://seerepo.com/uses/ai-sdk-react)**: 7 files

### Services

- **[OpenAI](https://seerepo.com/uses/openai)**: 1 file · [js/app/src/components/generative/serverLanguageModel.ts, line 45](https://github.com/Arize-ai/phoenix/blob/5a3318534df5aa235221b58e5aa55210001394c2/js/app/src/components/generative/serverLanguageModel.ts#L45)

## Support (js/app)

### Content

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

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 100 files
- **[@hookform/resolvers](https://seerepo.com/uses/hookform-resolvers)**: 1 file

### Testing

- **Vitest**: 165 files
- **@playwright/test**: 35 files
- **vitest-canvas-mock**: 1 file

### Tools

- **Storybook**: 1 file

### Other

- **tiny-invariant**: 66 files
- **Relay**: 40 files
- **zustand**: 26 files
- **Lodash**: 23 files
- **@internationalized/date**: 15 files
- **date-fns**: 9 files
- **copy-to-clipboard**: 7 files
- **@pierre/diffs**: 4 files
- **clsx**: 2 files
- **cron-parser**: 2 files
- **d3-format**: 2 files
- **@apollo/client**: 1 file
- **@lezer/lr**: 1 file
- **cronstrue**: 1 file
- **openapi-fetch**: 1 file

## Frontend (js/packages/phoenix-cli)

### The base

- **[React](https://seerepo.com/uses/react)**: 3 files · [in js/app/package.json](https://github.com/Arize-ai/phoenix/blob/5a3318534df5aa235221b58e5aa55210001394c2/js/app/package.json)

### Interface

- **[@clack/prompts](https://seerepo.com/uses/clack-prompts)**: 3 files
- **[ink](https://seerepo.com/uses/ink)**: 3 files

## Backend (js/packages/phoenix-cli)

### AI

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

## Support (js/packages/phoenix-cli)

### Content

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

### Validation

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

### Testing

- **Vitest**: 75 files
- **ink-testing-library**: 1 file

### Tools

- **commander**: 22 files
- **ignore**: 1 file

### Other

- **cross-spawn**: 1 file

## Backend (js/packages/phoenix-client)

### AI

- **@arizeai/openinference-semantic-conventions**: 1 file
- **[ai](https://seerepo.com/uses/ai)**: 1 file

## Support (js/packages/phoenix-client)

### Validation

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

### Testing

- **Vitest**: 71 files
- **OpenTelemetry**: 2 files

### Other

- **tiny-invariant**: 33 files
- **openapi-fetch**: 3 files
- **[@opentelemetry/api](https://seerepo.com/uses/opentelemetry-api)**: 1 file
- **async**: 1 file

## Support (js/packages/phoenix-config)

### Testing

- **Vitest**: 4 files

## Backend (js/packages/phoenix-otel)

### AI

- **@arizeai/openinference-semantic-conventions**: 2 files

## Support (js/packages/phoenix-otel)

### Testing

- **Vitest**: 7 files

### Deploy

- **OpenTelemetry**: 4 files

### Other

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

## Support (js/packages/phoenix-testing)

### Testing

- **msw**: 3 files
- **Vitest**: 2 files

## Other repos with a similar stack

- [Significant-Gravitas/AutoGPT](https://seerepo.com/r/Significant-Gravitas/AutoGPT/built): FastAPI, pyarrow, uvicorn, React, OpenAI, SQLAlchemy, jinja2, Pydantic, jsonschema, psutil, React Hook Form, recharts, motion, use-stick-to-bottom, ai, @ai-sdk/react, streamdown, Zod, @hookform/resolvers · [Compare](https://seerepo.com/compare/Arize-ai/phoenix/vs/Significant-Gravitas/AutoGPT)
- [bytedance/deer-flow](https://seerepo.com/r/bytedance/deer-flow/built): FastAPI, starlette, aiosqlite, SQLite, uvicorn, React, SQLAlchemy, alembic, jsonschema, CodeMirror, react-resizable-panels, @uiw/react-codemirror, motion, @streamdown/code, use-stick-to-bottom, ai, streamdown, Zod · [Compare](https://seerepo.com/compare/Arize-ai/phoenix/vs/bytedance/deer-flow)
- [CherryHQ/cherry-studio](https://seerepo.com/r/CherryHQ/cherry-studio/built): SQLite, React, Vite, OpenAI, React Hook Form, TanStack, CodeMirror, react-resizable-panels, react-hotkeys-hook, @uiw/react-codemirror, dnd-kit, motion, @lezer/highlight, react-error-boundary, ai, streamdown, Zod, @hookform/resolvers · [Compare](https://seerepo.com/compare/Arize-ai/phoenix/vs/CherryHQ/cherry-studio)
- [supabase/supabase](https://seerepo.com/r/supabase/supabase/built): React, React Router, Vite, OpenAI, React Hook Form, recharts, react-resizable-panels, dnd-kit, motion, D3, react-error-boundary, react-resizable, use-stick-to-bottom, ai, streamdown, Zod, @hookform/resolvers · [Compare](https://seerepo.com/compare/Arize-ai/phoenix/vs/supabase/supabase)
- [apache/superset](https://seerepo.com/r/apache/superset/built): starlette, pyarrow, fastmcp-slim, uvicorn, React, SQLAlchemy, sqlglot, alembic, jinja2, Pydantic, jsonschema, psutil, @emotion/react, D3, react-error-boundary, Zod, OpenTelemetry · [Compare](https://seerepo.com/compare/apache/superset/vs/Arize-ai/phoenix)
- [apache/airflow](https://seerepo.com/r/apache/airflow/built): FastAPI, aiosqlite, pyarrow, SQLite, uvicorn, React, Vite, SQLAlchemy, sqlglot, alembic, pydantic-ai-slim, jinja2, Pydantic, jsonschema, psutil, React Hook Form, OpenTelemetry · [Compare](https://seerepo.com/compare/apache/airflow/vs/Arize-ai/phoenix)

## Frequently asked questions

### What language is phoenix written in?

phoenix is written in TypeScript, with 1,011,392 written lines.

### What framework does phoenix use?

phoenix is built with FastAPI, starlette, fastmcp-slim, graphql-core, strawberry-graphql, uvicorn, React, react-relay, React Router, and Vite.

### What database does phoenix use?

phoenix stores its data in SQLite and reaches it with SQLAlchemy, sqlglot, and alembic.

The proof: [src/phoenix/db/engines.py, line 11](https://github.com/Arize-ai/phoenix/blob/5a3318534df5aa235221b58e5aa55210001394c2/src/phoenix/db/engines.py#L11)

### Does phoenix use AI?

Yes. phoenix uses AI through openinference-semantic-conventions, pydantic-ai-slim, openinference-instrumentation, ai, @arizeai/openinference-semantic-conventions, @ai-sdk/react, and OpenAI.

### What services does phoenix use?

phoenix uses aiosqlite and pyarrow.

### Does phoenix have tests?

Yes. phoenix has 1,083 test files and is tested with Vitest, @playwright/test, vitest-canvas-mock, ink-testing-library, OpenTelemetry, and msw.

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

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

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