Source: https://seerepo.com/r/Pythagora-io/gpt-pilot/built
Markdown source: https://seerepo.com/r/Pythagora-io/gpt-pilot/built.md
Description: gpt-pilot is a Python repo built with React, react-router-dom, Express, anyio, and Vite. It stores its data in SQLite and MongoDB.

# What is gpt-pilot built with?

gpt-pilot is a Python repo built with React, react-router-dom, Express, anyio, and Vite. It stores its data in SQLite and MongoDB, reaches it with SQLAlchemy and alembic, signs people in with bcrypt, express-session, and jsonwebtoken, uses AI through tiktoken, groq, OpenAI, and Anthropic, watches its errors with Sentry, makes its content with mako, markupsafe, and jinja2, validates its data with annotated-types, pydantic-core, and Pydantic, deploys with pino and psutil, and uses aiosqlite and connect-mongo. It has 36,361 written lines, with 44 test files.

Read on November 7, 2026, at commit 9b763fd.

Repository: https://github.com/Pythagora-io/gpt-pilot

## Frontend (/)

### The base

- **[React](https://seerepo.com/uses/react)**: 8 files · [in core/templates/tree/javascript_react/package.json](https://github.com/Pythagora-io/gpt-pilot/blob/9b763fdaf0020c7d8abacc7b58b2b09e57494623/core/templates/tree/javascript_react/package.json)
- **[react-router-dom](https://seerepo.com/uses/react-router-dom)**: 3 files

### Styles

- **[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)**: 2 files
- **[prompt-toolkit](https://seerepo.com/uses/prompt-toolkit)**: 1 file
- **[React Hook Form](https://seerepo.com/uses/react-hook-form)**: 1 file

### Icons

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

## Backend (/)

### The base

- **[Express](https://seerepo.com/uses/express)**: 3 files · [in core/templates/tree/vite_react/server/package.json](https://github.com/Pythagora-io/gpt-pilot/blob/9b763fdaf0020c7d8abacc7b58b2b09e57494623/core/templates/tree/vite_react/server/package.json)

### Data

- **[aiosqlite](https://seerepo.com/uses/aiosqlite)**
- **[SQLite](https://seerepo.com/uses/sqlite)**: 4 files · [core/db/v0importer.py, line 6](https://github.com/Pythagora-io/gpt-pilot/blob/9b763fdaf0020c7d8abacc7b58b2b09e57494623/core/db/v0importer.py#L6)
- **[MongoDB](https://seerepo.com/uses/mongodb)**: 2 files · [core/templates/tree/node_express_mongoose/models/User.js, line 1](https://github.com/Pythagora-io/gpt-pilot/blob/9b763fdaf0020c7d8abacc7b58b2b09e57494623/core/templates/tree/node_express_mongoose/models/User.js#L1)

### Data access

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

### Sign-in

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

### AI

- **[tiktoken](https://seerepo.com/uses/tiktoken)**: 3 files
- **[groq](https://seerepo.com/uses/groq)**: 2 files

### Services

- **[OpenAI](https://seerepo.com/uses/openai)**: 3 files · [core/templates/tree/node_express_mongoose/services/llm.js, line 2](https://github.com/Pythagora-io/gpt-pilot/blob/9b763fdaf0020c7d8abacc7b58b2b09e57494623/core/templates/tree/node_express_mongoose/services/llm.js#L2)
- **[Anthropic](https://seerepo.com/uses/anthropic)**: 2 files · [core/templates/tree/node_express_mongoose/services/llm.js, line 3](https://github.com/Pythagora-io/gpt-pilot/blob/9b763fdaf0020c7d8abacc7b58b2b09e57494623/core/templates/tree/node_express_mongoose/services/llm.js#L3)
- **[Sentry](https://seerepo.com/uses/sentry)**: 2 files · [core/cli/helpers.py, line 53](https://github.com/Pythagora-io/gpt-pilot/blob/9b763fdaf0020c7d8abacc7b58b2b09e57494623/core/cli/helpers.py#L53)

## Support (/)

### The base

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

### Content

- **mako**
- **[markupsafe](https://seerepo.com/uses/markupsafe)**
- **[jinja2](https://seerepo.com/uses/jinja2)**: 2 files

### Validation

- **[annotated-types](https://seerepo.com/uses/annotated-types)**
- **[pydantic-core](https://seerepo.com/uses/pydantic-core)**
- **[Pydantic](https://seerepo.com/uses/pydantic)**: 21 files

### Deploy

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

### Tools

- **typing-extensions**: 1 file

### Other

- **certifi**
- **charset-normalizer**
- **greenlet**
- **h11**
- **httpcore**
- **idna**
- **jiter**
- **pyyaml**
- **regex**
- **requests**
- **sniffio**
- **tqdm**
- **urllib3**
- **wcwidth**
- **httpx**: 11 files
- **Axios**: 2 files
- **.ENV**: 1 file
- **clsx**: 1 file
- **cors**: 1 file
- **distro**: 1 file
- **jsonref**: 1 file
- **python-dotenv**: 1 file
- **tenacity**: 1 file

## Frontend (core/templates/tree/javascript_react)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: [in core/templates/tree/javascript_react/package.json](https://github.com/Pythagora-io/gpt-pilot/blob/9b763fdaf0020c7d8abacc7b58b2b09e57494623/core/templates/tree/javascript_react/package.json)
- **[React](https://seerepo.com/uses/react)**: 1 file · [in core/templates/tree/javascript_react/package.json](https://github.com/Pythagora-io/gpt-pilot/blob/9b763fdaf0020c7d8abacc7b58b2b09e57494623/core/templates/tree/javascript_react/package.json)

## Backend (core/templates/tree/node_express_mongoose)

### The base

- **[Express](https://seerepo.com/uses/express)**: 2 files · [in core/templates/tree/vite_react/server/package.json](https://github.com/Pythagora-io/gpt-pilot/blob/9b763fdaf0020c7d8abacc7b58b2b09e57494623/core/templates/tree/vite_react/server/package.json)

### Data

- **[MongoDB](https://seerepo.com/uses/mongodb)**: 2 files · [core/templates/tree/node_express_mongoose/models/User.js, line 1](https://github.com/Pythagora-io/gpt-pilot/blob/9b763fdaf0020c7d8abacc7b58b2b09e57494623/core/templates/tree/node_express_mongoose/models/User.js#L1)
- **connect-mongo**: 1 file

### Sign-in

- **[bcrypt](https://seerepo.com/uses/bcrypt)**: 2 files
- **[express-session](https://seerepo.com/uses/express-session)**: 1 file

### Services

- **[Anthropic](https://seerepo.com/uses/anthropic)**: 1 file · [core/templates/tree/node_express_mongoose/services/llm.js, line 3](https://github.com/Pythagora-io/gpt-pilot/blob/9b763fdaf0020c7d8abacc7b58b2b09e57494623/core/templates/tree/node_express_mongoose/services/llm.js#L3)
- **[OpenAI](https://seerepo.com/uses/openai)**: 1 file · [core/templates/tree/node_express_mongoose/services/llm.js, line 2](https://github.com/Pythagora-io/gpt-pilot/blob/9b763fdaf0020c7d8abacc7b58b2b09e57494623/core/templates/tree/node_express_mongoose/services/llm.js#L2)

## Support (core/templates/tree/node_express_mongoose)

### Other

- **.ENV**: 2 files
- **Axios**: 1 file

## Frontend (core/templates/tree/vite_react/client)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: [in core/templates/tree/javascript_react/package.json](https://github.com/Pythagora-io/gpt-pilot/blob/9b763fdaf0020c7d8abacc7b58b2b09e57494623/core/templates/tree/javascript_react/package.json)
- **[React](https://seerepo.com/uses/react)**: 50 files · [in core/templates/tree/javascript_react/package.json](https://github.com/Pythagora-io/gpt-pilot/blob/9b763fdaf0020c7d8abacc7b58b2b09e57494623/core/templates/tree/javascript_react/package.json)
- **[react-router-dom](https://seerepo.com/uses/react-router-dom)**: 7 files

### Styles

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

### Interface

- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 32 files
- **[React Hook Form](https://seerepo.com/uses/react-hook-form)**: 3 files
- **[cmdk](https://seerepo.com/uses/cmdk)**: 1 file
- **[embla-carousel-react](https://seerepo.com/uses/embla-carousel-react)**: 1 file
- **[input-otp](https://seerepo.com/uses/input-otp)**: 1 file
- **[react-day-picker](https://seerepo.com/uses/react-day-picker)**: 1 file
- **[react-resizable-panels](https://seerepo.com/uses/react-resizable-panels)**: 1 file
- **[recharts](https://seerepo.com/uses/recharts)**: 1 file
- **[sonner](https://seerepo.com/uses/sonner)**: 1 file
- **[vaul](https://seerepo.com/uses/vaul)**: 1 file

### Icons

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

## Support (core/templates/tree/vite_react/client)

### Other

- **Axios**: 1 file
- **clsx**: 1 file
- **json-bigint**: 1 file

## Backend (core/templates/tree/vite_react/server)

### The base

- **[Express](https://seerepo.com/uses/express)**: 3 files · [in core/templates/tree/vite_react/server/package.json](https://github.com/Pythagora-io/gpt-pilot/blob/9b763fdaf0020c7d8abacc7b58b2b09e57494623/core/templates/tree/vite_react/server/package.json)

### Data

- **[MongoDB](https://seerepo.com/uses/mongodb)**: 4 files · [core/templates/tree/node_express_mongoose/models/User.js, line 1](https://github.com/Pythagora-io/gpt-pilot/blob/9b763fdaf0020c7d8abacc7b58b2b09e57494623/core/templates/tree/node_express_mongoose/models/User.js#L1)
- **connect-mongo**: 1 file

### Sign-in

- **[jsonwebtoken](https://seerepo.com/uses/jsonwebtoken)**: 3 files
- **[bcrypt](https://seerepo.com/uses/bcrypt)**: 1 file
- **[express-session](https://seerepo.com/uses/express-session)**: 1 file

### Services

- **[Anthropic](https://seerepo.com/uses/anthropic)**: 1 file · [core/templates/tree/node_express_mongoose/services/llm.js, line 3](https://github.com/Pythagora-io/gpt-pilot/blob/9b763fdaf0020c7d8abacc7b58b2b09e57494623/core/templates/tree/node_express_mongoose/services/llm.js#L3)
- **[OpenAI](https://seerepo.com/uses/openai)**: 1 file · [core/templates/tree/node_express_mongoose/services/llm.js, line 2](https://github.com/Pythagora-io/gpt-pilot/blob/9b763fdaf0020c7d8abacc7b58b2b09e57494623/core/templates/tree/node_express_mongoose/services/llm.js#L2)

## Support (core/templates/tree/vite_react/server)

### Other

- **.ENV**: 3 files
- **Axios**: 1 file
- **cors**: 1 file

## Frontend (core/templates/tree/vite_react_swagger/client)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: [in core/templates/tree/javascript_react/package.json](https://github.com/Pythagora-io/gpt-pilot/blob/9b763fdaf0020c7d8abacc7b58b2b09e57494623/core/templates/tree/javascript_react/package.json)
- **[React](https://seerepo.com/uses/react)**: 50 files · [in core/templates/tree/javascript_react/package.json](https://github.com/Pythagora-io/gpt-pilot/blob/9b763fdaf0020c7d8abacc7b58b2b09e57494623/core/templates/tree/javascript_react/package.json)
- **[react-router-dom](https://seerepo.com/uses/react-router-dom)**: 7 files

### Styles

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

### Interface

- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 32 files
- **[React Hook Form](https://seerepo.com/uses/react-hook-form)**: 3 files
- **[cmdk](https://seerepo.com/uses/cmdk)**: 1 file
- **[embla-carousel-react](https://seerepo.com/uses/embla-carousel-react)**: 1 file
- **[input-otp](https://seerepo.com/uses/input-otp)**: 1 file
- **[react-day-picker](https://seerepo.com/uses/react-day-picker)**: 1 file
- **[react-resizable-panels](https://seerepo.com/uses/react-resizable-panels)**: 1 file
- **[recharts](https://seerepo.com/uses/recharts)**: 1 file
- **[sonner](https://seerepo.com/uses/sonner)**: 1 file
- **[vaul](https://seerepo.com/uses/vaul)**: 1 file

### Icons

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

## Support (core/templates/tree/vite_react_swagger/client)

### Other

- **Axios**: 1 file
- **clsx**: 1 file
- **json-bigint**: 1 file

## Other repos with a similar stack

- [Significant-Gravitas/AutoGPT](https://seerepo.com/r/Significant-Gravitas/AutoGPT/built): React, OpenAI, Anthropic, Sentry, class-variance-authority, tailwind-merge, Radix UI, prompt-toolkit, React Hook Form, SQLAlchemy, bcrypt, tiktoken, groq, jinja2, Pydantic, psutil, Tailwind CSS, next-themes, cmdk, embla-carousel-react, react-day-picker, recharts, sonner, vaul · [Compare](https://seerepo.com/compare/Pythagora-io/gpt-pilot/vs/Significant-Gravitas/AutoGPT)
- [ruvnet/ruflo](https://seerepo.com/r/ruvnet/ruflo/built): React, react-router-dom, Express, SQLite, MongoDB, OpenAI, Vite, class-variance-authority, tailwind-merge, Radix UI, React Hook Form, Lucide, pino, Tailwind CSS, next-themes, cmdk, embla-carousel-react, input-otp, react-day-picker, react-resizable-panels, recharts, sonner, vaul · [Compare](https://seerepo.com/compare/Pythagora-io/gpt-pilot/vs/ruvnet/ruflo)
- [unslothai/unsloth](https://seerepo.com/r/unslothai/unsloth/built): React, OpenAI, anyio, Vite, class-variance-authority, tailwind-merge, Radix UI, Lucide, tiktoken, jinja2, Pydantic, psutil, Tailwind CSS, cmdk, react-day-picker, react-resizable-panels, recharts, sonner · [Compare](https://seerepo.com/compare/Pythagora-io/gpt-pilot/vs/unslothai/unsloth)
- [BerriAI/litellm](https://seerepo.com/r/BerriAI/litellm/built): React, SQLite, OpenAI, Anthropic, anyio, class-variance-authority, React Hook Form, Lucide, tiktoken, jinja2, Pydantic, Tailwind CSS, next-themes, cmdk, react-resizable-panels, recharts, sonner, jsonwebtoken · [Compare](https://seerepo.com/compare/BerriAI/litellm/vs/Pythagora-io/gpt-pilot)
- [supabase/supabase](https://seerepo.com/r/supabase/supabase/built): React, OpenAI, Sentry, Vite, class-variance-authority, Radix UI, React Hook Form, Lucide, Tailwind CSS, next-themes, cmdk, input-otp, react-day-picker, react-resizable-panels, recharts, sonner, vaul · [Compare](https://seerepo.com/compare/Pythagora-io/gpt-pilot/vs/supabase/supabase)
- [apache/superset](https://seerepo.com/r/apache/superset/built): React, Express, MongoDB, anyio, prompt-toolkit, SQLAlchemy, alembic, bcrypt, tiktoken, mako, markupsafe, jinja2, annotated-types, pydantic-core, Pydantic, psutil, jsonwebtoken · [Compare](https://seerepo.com/compare/apache/superset/vs/Pythagora-io/gpt-pilot)

## Frequently asked questions

### What language is gpt-pilot written in?

gpt-pilot is written in Python, with 36,361 written lines.

### What framework does gpt-pilot use?

gpt-pilot is built with React, react-router-dom, Express, anyio, and Vite.

The proof: [in core/templates/tree/javascript_react/package.json](https://github.com/Pythagora-io/gpt-pilot/blob/9b763fdaf0020c7d8abacc7b58b2b09e57494623/core/templates/tree/javascript_react/package.json)

### What database does gpt-pilot use?

gpt-pilot stores its data in SQLite and MongoDB and reaches it with SQLAlchemy and alembic.

The proof: [core/db/v0importer.py, line 6](https://github.com/Pythagora-io/gpt-pilot/blob/9b763fdaf0020c7d8abacc7b58b2b09e57494623/core/db/v0importer.py#L6)

### What does gpt-pilot sign people in with?

gpt-pilot signs people in with bcrypt, express-session, and jsonwebtoken.

### Does gpt-pilot use AI?

Yes. gpt-pilot uses AI through tiktoken, groq, OpenAI, and Anthropic.

### What services does gpt-pilot use?

gpt-pilot watches its errors with Sentry and uses aiosqlite and connect-mongo.

The proof: [core/cli/helpers.py, line 53](https://github.com/Pythagora-io/gpt-pilot/blob/9b763fdaf0020c7d8abacc7b58b2b09e57494623/core/cli/helpers.py#L53)

### Does gpt-pilot have tests?

Yes. gpt-pilot has 44 test files.

### Which repos have a stack like gpt-pilot's?

The ones that share most of its stack: Significant-Gravitas/AutoGPT, ruvnet/ruflo, and unslothai/unsloth.

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