Source: https://seerepo.com/r/jxxghp/MoviePilot/built
Markdown source: https://seerepo.com/r/jxxghp/MoviePilot/built.md
Description: MoviePilot is a Python repo built with FastAPI, anyio, starlette, slack-bolt, and uvicorn. It reaches its data with SQLAlchemy and alembic.

# What is MoviePilot built with?

MoviePilot is a Python repo built with FastAPI, anyio, starlette, slack-bolt, and uvicorn. It reaches its data with SQLAlchemy and alembic, signs people in with cryptography, pyjwt, py-vapid, pyotp, and webauthn, uses AI through LangChain, LangGraph, langchain-anthropic, langchain-aws, langchain-deepseek, and 3 more, connects to Google, makes its content with pillow, beautifulsoup4, jinja2, ruamel-yaml, mutagen, and 1 more, validates its data with Pydantic, is tested with pyvirtualdisplay, deploys with psutil and boto3, and uses aiosqlite, asyncpg, Redis, oss2, Postgres, and 1 more. It has 892,156 written lines, with 1,189 test files.

Read on November 11, 2026, at commit 2830aff.

Repository: https://github.com/jxxghp/MoviePilot

## Frontend

### Interface

- **pystray**: 1 file

## Backend

### The base

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

### Data

- **[aiosqlite](https://seerepo.com/uses/aiosqlite)**
- **[asyncpg](https://seerepo.com/uses/asyncpg)**
- **[Redis](https://seerepo.com/uses/redis)**: 2 files · [app/adapters/cache/redis.py, line 13](https://github.com/jxxghp/MoviePilot/blob/2830aff0e4dbae14da63e72055d0e517e181ecb3/app/adapters/cache/redis.py#L13)
- **oss2**: 1 file
- **[Postgres](https://seerepo.com/uses/postgres)**: 1 file · [pyproject.toml, line 18](https://github.com/jxxghp/MoviePilot/blob/2830aff0e4dbae14da63e72055d0e517e181ecb3/pyproject.toml#L18)
- **[SQLite](https://seerepo.com/uses/sqlite)**: 1 file · [pyproject.toml, line 12](https://github.com/jxxghp/MoviePilot/blob/2830aff0e4dbae14da63e72055d0e517e181ecb3/pyproject.toml#L12)

### Data access

- **[SQLAlchemy](https://seerepo.com/uses/sqlalchemy)**: 196 files
- **[alembic](https://seerepo.com/uses/alembic)**: 90 files

### Sign-in

- **[cryptography](https://seerepo.com/uses/cryptography)**: 5 files
- **[pyjwt](https://seerepo.com/uses/pyjwt)**: 3 files
- **py-vapid**: 1 file
- **pyotp**: 1 file
- **webauthn**: 1 file

### AI

- **[LangChain](https://seerepo.com/uses/langchain)**: 33 files
- **[LangGraph](https://seerepo.com/uses/langgraph)**: 13 files
- **[langchain-anthropic](https://seerepo.com/uses/langchain-anthropic)**: 1 file
- **langchain-aws**: 1 file
- **langchain-deepseek**: 1 file
- **[langchain-google-genai](https://seerepo.com/uses/langchain-google-genai)**: 1 file
- **[langchain-openai](https://seerepo.com/uses/langchain-openai)**: 1 file

### Services

- **[OpenAI](https://seerepo.com/uses/openai)**: 2 files · [app/agent/llm/capability.py, line 18](https://github.com/jxxghp/MoviePilot/blob/2830aff0e4dbae14da63e72055d0e517e181ecb3/app/agent/llm/capability.py#L18)
- **[Google](https://seerepo.com/uses/google)**: 1 file · [app/agent/llm/discovery.py, line 413](https://github.com/jxxghp/MoviePilot/blob/2830aff0e4dbae14da63e72055d0e517e181ecb3/app/agent/llm/discovery.py#L413)

## Support

### The base

- **[anyio](https://seerepo.com/uses/anyio)**: 18 files
- **[starlette](https://seerepo.com/uses/starlette)**: 10 files
- **slack-bolt**: 1 file
- **[uvicorn](https://seerepo.com/uses/uvicorn)**: 1 file

### Content

- **[pillow](https://seerepo.com/uses/pillow)**: 7 files
- **[beautifulsoup4](https://seerepo.com/uses/beautifulsoup4)**: 3 files
- **[jinja2](https://seerepo.com/uses/jinja2)**: 3 files
- **[ruamel-yaml](https://seerepo.com/uses/ruamel-yaml)**: 2 files
- **mutagen**: 1 file
- **telegramify-markdown**: 1 file

### Validation

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

### Testing

- **pyvirtualdisplay**: 1 file

### Deploy

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

### Tools

- **Setuptools**
- **packaging**: 8 files
- **click**: 2 files
- **watchfiles**: 2 files

### Other

- **lark-oapi**
- **orjson**
- **parse**
- **pytelegrambotapi**
- **python-multipart**
- **pywebpush**
- **rsa**
- **watchdog**
- **requests**: 10 files
- **pyyaml**: 7 files
- **regex**: 6 files
- **aiofiles**: 5 files
- **apscheduler**: 5 files
- **pycryptodome**: 5 files
- **httpx2**: 4 files
- **websocket-client**: 4 files
- **cachetools**: 3 files
- **pytz**: 3 files
- **aioshutil**: 2 files
- **chardet**: 2 files
- **httpx**: 2 files
- **pyquery**: 2 files
- **python-dateutil**: 2 files
- **dateparser**: 1 file
- **ddgs**: 1 file
- **http-ece**: 1 file
- **pydantic-settings**: 1 file
- **pyparsing**: 1 file
- **python-dotenv**: 1 file
- **setproctitle**: 1 file
- **slack-sdk**: 1 file
- **smbprotocol**: 1 file
- **tqdm**: 1 file
- **urllib3**: 1 file

## Other repos with a similar stack

- [run-llama/llama_index](https://seerepo.com/r/run-llama/llama_index/built): aiosqlite, asyncpg, Redis, oss2, SQLite, OpenAI, Google, anyio, starlette, SQLAlchemy, cryptography, pyjwt, LangChain, pillow, beautifulsoup4, jinja2, Pydantic, psutil, boto3 · [Compare](https://seerepo.com/compare/jxxghp/MoviePilot/vs/run-llama/llama_index)
- [open-webui/open-webui](https://seerepo.com/r/open-webui/open-webui/built): FastAPI, aiosqlite, Redis, Postgres, SQLite, OpenAI, uvicorn, SQLAlchemy, alembic, cryptography, pyjwt, pyotp, LangChain, pillow, beautifulsoup4, Pydantic, psutil, boto3 · [Compare](https://seerepo.com/compare/jxxghp/MoviePilot/vs/open-webui/open-webui)
- [langflow-ai/langflow](https://seerepo.com/r/langflow-ai/langflow/built): FastAPI, Redis, OpenAI, Google, starlette, uvicorn, SQLAlchemy, cryptography, pyjwt, LangChain, langchain-anthropic, langchain-aws, langchain-google-genai, langchain-openai, pillow, Pydantic, psutil, boto3 · [Compare](https://seerepo.com/compare/jxxghp/MoviePilot/vs/langflow-ai/langflow)
- [datawhalechina/hello-agents](https://seerepo.com/r/datawhalechina/hello-agents/built): FastAPI, aiosqlite, asyncpg, Redis, Postgres, SQLite, OpenAI, anyio, starlette, uvicorn, SQLAlchemy, alembic, LangGraph, langchain-openai, pillow, beautifulsoup4, jinja2, Pydantic · [Compare](https://seerepo.com/compare/datawhalechina/hello-agents/vs/jxxghp/MoviePilot)
- [ray-project/ray](https://seerepo.com/r/ray-project/ray/built): FastAPI, Redis, Google, anyio, starlette, uvicorn, SQLAlchemy, alembic, cryptography, pyjwt, LangChain, pillow, beautifulsoup4, jinja2, ruamel-yaml, Pydantic, psutil, boto3 · [Compare](https://seerepo.com/compare/jxxghp/MoviePilot/vs/ray-project/ray)
- [apache/superset](https://seerepo.com/r/apache/superset/built): Redis, Postgres, Google, anyio, starlette, uvicorn, SQLAlchemy, alembic, cryptography, pyjwt, pillow, beautifulsoup4, jinja2, Pydantic, psutil, boto3 · [Compare](https://seerepo.com/compare/apache/superset/vs/jxxghp/MoviePilot)

## Frequently asked questions

### What language is MoviePilot written in?

MoviePilot is written in Python, with 892,156 written lines.

### What framework does MoviePilot use?

MoviePilot is built with FastAPI, anyio, starlette, slack-bolt, and uvicorn.

### What does MoviePilot sign people in with?

MoviePilot signs people in with cryptography, pyjwt, py-vapid, pyotp, and webauthn.

### Does MoviePilot use AI?

Yes. MoviePilot uses AI through LangChain, LangGraph, langchain-anthropic, langchain-aws, langchain-deepseek, langchain-google-genai, langchain-openai, and OpenAI.

### What services does MoviePilot use?

MoviePilot connects to Google and uses aiosqlite, asyncpg, Redis, oss2, Postgres, and SQLite.

The proof: [app/agent/llm/discovery.py, line 413](https://github.com/jxxghp/MoviePilot/blob/2830aff0e4dbae14da63e72055d0e517e181ecb3/app/agent/llm/discovery.py#L413)

### Does MoviePilot have tests?

Yes. MoviePilot has 1,189 test files and is tested with pyvirtualdisplay.

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

The ones that share most of its stack: run-llama/llama_index, open-webui/open-webui, and langflow-ai/langflow.

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