Source: https://seerepo.com/r/keephq/keep/built
Markdown source: https://seerepo.com/r/keephq/keep/built.md
Description: keep is a Python repo built with FastAPI, uvicorn, React, and Next.js. It stores its data in Postgres. It has 230,443 written lines, with 165 test files.

# What is keep built with?

keep is a Python repo built with FastAPI, uvicorn, React, and Next.js. It stores its data in Postgres, reaches it with sqlmodel, SQLAlchemy, sqlalchemy-utils, and alembic, signs people in with python-keycloak, Google, azure-identity, hvac, and next-auth, uses AI through OpenAI and copilotkit, measures its use with PostHog, watches its errors with Sentry, makes its content with chevron, sendgrid, yaml, rehype-sanitize, react-markdown, and 7 more, validates its data with cel-python, Pydantic, validators, Zod, zod-to-json-schema, and 1 more, is tested with Testing Library, deploys with python-json-logger, boto3, kubernetes, OpenTelemetry, prometheus-client, and 8 more, and uses cloud-sql-python-connector, kafka-python, mysql-connector-python, psycopg, psycopg-binary, and 8 more. It has 230,443 written lines, with 165 test files.

Read on November 11, 2026, at commit 127a78d.

Repository: https://github.com/keephq/keep

## Backend (/)

### The base

- **[FastAPI](https://seerepo.com/uses/fastapi)**: 61 files
- **[uvicorn](https://seerepo.com/uses/uvicorn)**: 3 files

### Data

- **cloud-sql-python-connector**
- **kafka-python**
- **[mysql-connector-python](https://seerepo.com/uses/mysql-connector-python)**
- **[psycopg](https://seerepo.com/uses/psycopg)**
- **psycopg-binary**
- **[psycopg2-binary](https://seerepo.com/uses/psycopg2-binary)**
- **[pymongo](https://seerepo.com/uses/pymongo)**
- **arq**: 9 files
- **[Postgres](https://seerepo.com/uses/postgres)**: 3 files · [keep/providers/postgres_provider/postgres_provider.py, line 1](https://github.com/keephq/keep/blob/127a78d915c4880fa75d8b265a49216d6a552588/keep/providers/postgres_provider/postgres_provider.py#L1)
- **clickhouse-driver**: 1 file
- **[MySQL](https://seerepo.com/uses/mysql)**: 1 file · [pyproject.toml, line 20](https://github.com/keephq/keep/blob/127a78d915c4880fa75d8b265a49216d6a552588/pyproject.toml#L20)
- **[pymysql](https://seerepo.com/uses/pymysql)**: 1 file

### Data access

- **sqlmodel**: 61 files
- **[SQLAlchemy](https://seerepo.com/uses/sqlalchemy)**: 37 files
- **sqlalchemy-utils**: 5 files
- **[alembic](https://seerepo.com/uses/alembic)**: 1 file

### Sign-in

- **python-keycloak**
- **[Google](https://seerepo.com/uses/google)**: 10 files
- **[azure-identity](https://seerepo.com/uses/azure-identity)**: 2 files
- **hvac**: 1 file

### Services

- **[Elasticsearch](https://seerepo.com/uses/elasticsearch)**: 3 files · [keep/api/bl/enrichments_bl.py, line 12](https://github.com/keephq/keep/blob/127a78d915c4880fa75d8b265a49216d6a552588/keep/api/bl/enrichments_bl.py#L12)
- **[OpenAI](https://seerepo.com/uses/openai)**: 3 files · [keep/providers/openai_provider/openai_provider.py, line 5](https://github.com/keephq/keep/blob/127a78d915c4880fa75d8b265a49216d6a552588/keep/providers/openai_provider/openai_provider.py#L5)
- **[PostHog](https://seerepo.com/uses/posthog)**: 1 file · [keep/api/core/posthog.py, line 2](https://github.com/keephq/keep/blob/127a78d915c4880fa75d8b265a49216d6a552588/keep/api/core/posthog.py#L2)

## Support (/)

### Content

- **chevron**: 4 files
- **sendgrid**: 2 files

### Validation

- **cel-python**
- **[Pydantic](https://seerepo.com/uses/pydantic)**: 156 files
- **[validators](https://seerepo.com/uses/validators)**: 1 file

### Deploy

- **[python-json-logger](https://seerepo.com/uses/python-json-logger)**
- **[boto3](https://seerepo.com/uses/boto3)**: 7 files
- **[kubernetes](https://seerepo.com/uses/kubernetes)**: 7 files
- **[OpenTelemetry](https://seerepo.com/uses/opentelemetry)**: 2 files
- **[prometheus-client](https://seerepo.com/uses/prometheus-client)**: 2 files
- **azure-mgmt-containerservice**: 1 file
- **[Gunicorn](https://seerepo.com/uses/gunicorn)**: 1 file
- **[opentelemetry-exporter-otlp-proto-grpc](https://seerepo.com/uses/opentelemetry-exporter-otlp-proto-grpc)**: 1 file
- **opentelemetry-instrumentation-fastapi**: 1 file
- **opentelemetry-instrumentation-logging**: 1 file
- **opentelemetry-instrumentation-requests**: 1 file
- **opentelemetry-instrumentation-sqlalchemy**: 1 file
- **prometheus-fastapi-instrumentator**: 1 file

### Tools

- **click**: 3 files
- **packaging**: 2 files
- **astunparse**: 1 file
- **awscli**: 1 file

### Other

- **asyncio**
- **httptools**
- **pygithub**
- **python-multipart**
- **uvloop**
- **requests**: 95 files
- **python-dotenv**: 7 files
- **json5**: 6 files
- **pyyaml**: 2 files
- **slowapi**: 2 files
- **paramiko**: 1 file
- **prettytable**: 1 file
- **python-telegram-bot**: 1 file
- **starlette-context**: 1 file
- **twilio**: 1 file
- **urllib3**: 1 file
- **websocket-client**: 1 file

## Frontend (keep-ui)

### The base

- **[React](https://seerepo.com/uses/react)**: 349 files · [in keep-ui/package.json](https://github.com/keephq/keep/blob/127a78d915c4880fa75d8b265a49216d6a552588/keep-ui/package.json)
- **[Next.js](https://seerepo.com/uses/nextjs)**: 131 files · [in keep-ui/package.json](https://github.com/keephq/keep/blob/127a78d915c4880fa75d8b265a49216d6a552588/keep-ui/package.json)

### Styles

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

### Interface

- **@tremor/react**: 268 files
- **[TanStack](https://seerepo.com/uses/tanstack)**: 37 files
- **[react-toastify](https://seerepo.com/uses/react-toastify)**: 30 files
- **[Headless UI](https://seerepo.com/uses/headless-ui)**: 23 files
- **react-loading-skeleton**: 22 files
- **[monaco-editor](https://seerepo.com/uses/monaco-editor)**: 18 files
- **[React Hook Form](https://seerepo.com/uses/react-hook-form)**: 18 files
- **[xyflow](https://seerepo.com/uses/xyflow)**: 17 files
- **[react-select](https://seerepo.com/uses/react-select)**: 13 files
- **react-querybuilder**: 11 files
- **react-timeago**: 11 files
- **radix-ui**: 9 files
- **[dnd-kit](https://seerepo.com/uses/dnd-kit)**: 6 files
- **react-quill-new**: 5 files
- **[@floating-ui/react](https://seerepo.com/uses/floating-ui-react)**: 4 files
- **[react-day-picker](https://seerepo.com/uses/react-day-picker)**: 3 files
- **@copilotkit/react-ui**: 2 files
- **[@dagrejs/dagre](https://seerepo.com/uses/dagrejs-dagre)**: 2 files
- **[monaco-yaml](https://seerepo.com/uses/monaco-yaml)**: 2 files
- **[react-datepicker](https://seerepo.com/uses/react-datepicker)**: 2 files
- **[Chart.js](https://seerepo.com/uses/chartjs)**: 1 file
- **quill-mention**: 1 file
- **[react-chartjs-2](https://seerepo.com/uses/react-chartjs-2)**: 1 file
- **[react-grid-layout](https://seerepo.com/uses/react-grid-layout)**: 1 file
- **[react-hotkeys-hook](https://seerepo.com/uses/react-hotkeys-hook)**: 1 file
- **react-player**: 1 file

### Icons

- **[@heroicons/react](https://seerepo.com/uses/heroicons-react)**: 143 files
- **[react-icons](https://seerepo.com/uses/react-icons)**: 69 files
- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 14 files
- **[Lucide](https://seerepo.com/uses/lucide)**: 9 files

## Backend (keep-ui)

### Sign-in

- **[next-auth](https://seerepo.com/uses/next-auth)**: 22 files

### AI

- **copilotkit**: 10 files

### Services

- **[Sentry](https://seerepo.com/uses/sentry)**: 10 files · [keep-ui/shared/lib/hooks/useSetSentryUser.ts, line 4](https://github.com/keephq/keep/blob/127a78d915c4880fa75d8b265a49216d6a552588/keep-ui/shared/lib/hooks/useSetSentryUser.ts#L4)
- **[PostHog](https://seerepo.com/uses/posthog)**: 4 files · [keep/api/core/posthog.py, line 2](https://github.com/keephq/keep/blob/127a78d915c4880fa75d8b265a49216d6a552588/keep/api/core/posthog.py#L2)
- **[OpenAI](https://seerepo.com/uses/openai)**: 1 file · [keep/providers/openai_provider/openai_provider.py, line 5](https://github.com/keephq/keep/blob/127a78d915c4880fa75d8b265a49216d6a552588/keep/providers/openai_provider/openai_provider.py#L5)
- **Pusher**: 1 file · [keep-ui/utils/hooks/usePusher.ts, line 1](https://github.com/keephq/keep/blob/127a78d915c4880fa75d8b265a49216d6a552588/keep-ui/utils/hooks/usePusher.ts#L1)

## Support (keep-ui)

### Content

- **[yaml](https://seerepo.com/uses/yaml)**: 3 files
- **[rehype-sanitize](https://seerepo.com/uses/rehype-sanitize)**: 2 files
- **[react-markdown](https://seerepo.com/uses/react-markdown)**: 1 file
- **react-papaparse**: 1 file
- **[rehype-parse](https://seerepo.com/uses/rehype-parse)**: 1 file
- **[rehype-raw](https://seerepo.com/uses/rehype-raw)**: 1 file
- **[rehype-stringify](https://seerepo.com/uses/rehype-stringify)**: 1 file
- **[remark](https://seerepo.com/uses/remark)**: 1 file
- **[remark-gfm](https://seerepo.com/uses/remark-gfm)**: 1 file
- **[unified](https://seerepo.com/uses/unified)**: 1 file

### Validation

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

### Testing

- **Testing Library**: 29 files

### Other

- **clsx**: 75 files
- **SWR**: 56 files
- **date-fns**: 16 files
- **uuid**: 15 files
- **Lodash**: 11 files
- **zustand**: 10 files
- **undici**: 2 files
- **rxjs**: 1 file

## Other repos with a similar stack

- [Significant-Gravitas/AutoGPT](https://seerepo.com/r/Significant-Gravitas/AutoGPT/built): FastAPI, uvicorn, psycopg2-binary, Postgres, pymysql, OpenAI, PostHog, React, Next.js, Sentry, SQLAlchemy, Google, Pydantic, boto3, prometheus-client, prometheus-fastapi-instrumentator, Tailwind CSS, tailwind-merge, React Hook Form, react-day-picker, react-markdown, remark-gfm, Zod · [Compare](https://seerepo.com/compare/keephq/keep/vs/Significant-Gravitas/AutoGPT)
- [open-webui/open-webui](https://seerepo.com/r/open-webui/open-webui/built): FastAPI, uvicorn, psycopg, psycopg2-binary, Postgres, pymysql, Elasticsearch, OpenAI, SQLAlchemy, alembic, azure-identity, Pydantic, validators, boto3, OpenTelemetry, opentelemetry-instrumentation-fastapi, opentelemetry-instrumentation-logging, opentelemetry-instrumentation-requests, opentelemetry-instrumentation-sqlalchemy, Tailwind CSS, xyflow, Chart.js, yaml · [Compare](https://seerepo.com/compare/keephq/keep/vs/open-webui/open-webui)
- [langgenius/dify](https://seerepo.com/r/langgenius/dify/built): mysql-connector-python, psycopg2-binary, Postgres, MySQL, Elasticsearch, React, Next.js, Sentry, azure-identity, sendgrid, Pydantic, boto3, Gunicorn, opentelemetry-exporter-otlp-proto-grpc, opentelemetry-instrumentation-sqlalchemy, Tailwind CSS, TanStack, @floating-ui/react, @heroicons/react, yaml, react-papaparse, Zod · [Compare](https://seerepo.com/compare/keephq/keep/vs/langgenius/dify)
- [apache/superset](https://seerepo.com/r/apache/superset/built): uvicorn, psycopg2-binary, pymongo, Postgres, MySQL, pymysql, React, SQLAlchemy, sqlalchemy-utils, alembic, Google, Pydantic, python-json-logger, boto3, OpenTelemetry, prometheus-client, Gunicorn, rehype-sanitize, react-markdown, rehype-raw, remark-gfm, Zod · [Compare](https://seerepo.com/compare/apache/superset/vs/keephq/keep)
- [langflow-ai/langflow](https://seerepo.com/r/langflow-ai/langflow/built): FastAPI, uvicorn, OpenAI, React, SQLAlchemy, Google, Pydantic, validators, boto3, Tailwind CSS, tailwind-merge, Headless UI, xyflow, react-day-picker, react-hotkeys-hook, react-icons, Lucide, rehype-sanitize, react-markdown, rehype-raw, remark-gfm · [Compare](https://seerepo.com/compare/keephq/keep/vs/langflow-ai/langflow)
- [CherryHQ/cherry-studio](https://seerepo.com/r/CherryHQ/cherry-studio/built): OpenAI, PostHog, React, Sentry, Tailwind CSS, tailwind-merge, TanStack, React Hook Form, xyflow, dnd-kit, react-day-picker, @dagrejs/dagre, react-hotkeys-hook, react-player, Lucide, yaml, rehype-parse, rehype-stringify, remark-gfm, unified, Zod · [Compare](https://seerepo.com/compare/CherryHQ/cherry-studio/vs/keephq/keep)

## Frequently asked questions

### What language is keep written in?

keep is written in Python, with 230,443 written lines.

### What framework does keep use?

keep is built with FastAPI, uvicorn, React, and Next.js.

### What database does keep use?

keep stores its data in Postgres and reaches it with sqlmodel, SQLAlchemy, sqlalchemy-utils, and alembic.

The proof: [keep/providers/postgres_provider/postgres_provider.py, line 1](https://github.com/keephq/keep/blob/127a78d915c4880fa75d8b265a49216d6a552588/keep/providers/postgres_provider/postgres_provider.py#L1)

### What does keep sign people in with?

keep signs people in with python-keycloak, Google, azure-identity, hvac, and next-auth.

### Does keep use AI?

Yes. keep uses AI through OpenAI and copilotkit.

The proof: [keep/providers/openai_provider/openai_provider.py, line 5](https://github.com/keephq/keep/blob/127a78d915c4880fa75d8b265a49216d6a552588/keep/providers/openai_provider/openai_provider.py#L5)

### What services does keep use?

keep measures its use with PostHog, watches its errors with Sentry, and uses cloud-sql-python-connector, kafka-python, mysql-connector-python, psycopg, psycopg-binary, psycopg2-binary, pymongo, arq, clickhouse-driver, MySQL, pymysql, Elasticsearch, and Pusher.

The proof: [keep/api/core/posthog.py, line 2](https://github.com/keephq/keep/blob/127a78d915c4880fa75d8b265a49216d6a552588/keep/api/core/posthog.py#L2)

### Does keep have tests?

Yes. keep has 165 test files and is tested with Testing Library.

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

The ones that share most of its stack: Significant-Gravitas/AutoGPT, open-webui/open-webui, and langgenius/dify.

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