Source: https://seerepo.com/r/gradio-app/gradio/built
Markdown source: https://seerepo.com/r/gradio-app/gradio/built.md
Description: gradio is a Python repo built with FastAPI, uvicorn, starlette, anyio, Svelte, and 2 more. It reaches it with SQLAlchemy.

# What is gradio built with?

gradio is a Python repo built with FastAPI, uvicorn, starlette, anyio, Svelte, and 2 more. It reaches it with SQLAlchemy, signs people in with itsdangerous and authlib, uses AI through accelerate, datasets, diffusers, LangChain, langchain-openai, and 21 more, makes its content with jinja2, markupsafe, pymupdf, pillow, hast-util-to-string, and 9 more, validates its data with Pydantic, is tested with playwright, Vitest, msw, Testing Library, and @playwright/test, and uses psycopg2 and Hugging Face. It has 310,984 written lines, with 327 test files.

Read on November 6, 2026, at commit ebccfcf.

Repository: https://github.com/gradio-app/gradio

## Frontend (/)

### Styles

- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**

### Interface

- **bokeh**
- **[Plotly](https://seerepo.com/uses/plotly)**
- **xyzservices**
- **[Gradio](https://seerepo.com/uses/gradio)**: 84 files
- **[matplotlib](https://seerepo.com/uses/matplotlib)**: 3 files
- **altair**: 1 file

## Backend (/)

### The base

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

### Data

- **psycopg2**

### Data access

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

### Sign-in

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

### AI

- **[accelerate](https://seerepo.com/uses/accelerate)**
- **[datasets](https://seerepo.com/uses/datasets)**
- **[diffusers](https://seerepo.com/uses/diffusers)**
- **[LangChain](https://seerepo.com/uses/langchain)**
- **[langchain-openai](https://seerepo.com/uses/langchain-openai)**
- **[librosa](https://seerepo.com/uses/librosa)**
- **llama-index**
- **[nltk](https://seerepo.com/uses/nltk)**
- **onnxruntime-gpu**
- **[openai](https://seerepo.com/uses/openai)**
- **openai-whisper**
- **[opencv-python](https://seerepo.com/uses/opencv-python)**
- **prophet**
- **[safetensors](https://seerepo.com/uses/safetensors)**
- **[scikit-learn](https://seerepo.com/uses/scikit-learn)**
- **spaCy**
- **speechbrain**
- **TensorFlow**
- **[torch](https://seerepo.com/uses/torch)**
- **[torchaudio](https://seerepo.com/uses/torchaudio)**
- **[torchvision](https://seerepo.com/uses/torchvision)**
- **xgboost**
- **gradio-client**: 25 files
- **[mcp](https://seerepo.com/uses/mcp)**: 1 file
- **[transformers](https://seerepo.com/uses/transformers)**: 1 file

## Support (/)

### The base

- **[uvicorn](https://seerepo.com/uses/uvicorn)**: 5 files
- **[starlette](https://seerepo.com/uses/starlette)**: 3 files
- **[anyio](https://seerepo.com/uses/anyio)**: 1 file

### Content

- **[jinja2](https://seerepo.com/uses/jinja2)**
- **[markupsafe](https://seerepo.com/uses/markupsafe)**
- **[pymupdf](https://seerepo.com/uses/pymupdf)**
- **[pillow](https://seerepo.com/uses/pillow)**: 8 files

### Validation

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

### Testing

- **playwright**: 1 file

### Tools

- **CMake**
- **hf-gradio**
- **packaging**
- **@manypkg/get-packages**: 1 file
- **Typer**: 1 file
- **typing-extensions**: 1 file

### Other

- **audioop-lts**
- **brotli**
- **fsspec**
- **gdown**
- **groovy**
- **holidays**
- **opencv-python-headless**
- **orjson**
- **python-dateutil**
- **python-multipart**
- **pyyaml**
- **safehttpx**
- **SciPy**
- **semantic-version**
- **tomlkit**
- **twilio**
- **NumPy**: 16 files
- **httpx**: 10 files
- **requests**: 7 files
- **pandas**: 6 files
- **pydub**: 4 files
- **pytz**: 1 file
- **tqdm**: 1 file

## Frontend (client/js)

### The base

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

## Support (client/js)

### Testing

- **Vitest**: 19 files
- **msw**: 5 files

## Frontend (client/python/gradio_client)

### Interface

- **[Gradio](https://seerepo.com/uses/gradio)**: 2 files

## Backend (client/python/gradio_client)

### AI

- **gradio-client**: 4 files

### Services

- **[Hugging Face](https://seerepo.com/uses/hugging-face)**: 2 files · [client/python/gradio_client/client.py, line 33](https://github.com/gradio-app/gradio/blob/ebccfcf3194dd3cd132491a6bc35968f1321611a/client/python/gradio_client/client.py#L33)

## Support (client/python/gradio_client)

### Tools

- **packaging**: 1 file
- **typing-extensions**: 1 file

### Other

- **httpx**: 2 files
- **fsspec**: 1 file

## Frontend (gradio)

### Interface

- **[Gradio](https://seerepo.com/uses/gradio)**: 138 files
- **[matplotlib](https://seerepo.com/uses/matplotlib)**: 2 files
- **altair**: 1 file
- **bokeh**: 1 file

## Backend (gradio)

### The base

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

### Sign-in

- **authlib**: 1 file

### AI

- **gradio-client**: 84 files
- **[diffusers](https://seerepo.com/uses/diffusers)**: 3 files
- **[transformers](https://seerepo.com/uses/transformers)**: 3 files
- **[mcp](https://seerepo.com/uses/mcp)**: 2 files
- **[torch](https://seerepo.com/uses/torch)**: 1 file

### Services

- **[Hugging Face](https://seerepo.com/uses/hugging-face)**: 19 files · [client/python/gradio_client/client.py, line 33](https://github.com/gradio-app/gradio/blob/ebccfcf3194dd3cd132491a6bc35968f1321611a/client/python/gradio_client/client.py#L33)
- **OpenAI**: 1 file · [gradio/external.py, line 872](https://github.com/gradio-app/gradio/blob/ebccfcf3194dd3cd132491a6bc35968f1321611a/gradio/external.py#L872)

## Support (gradio)

### The base

- **[anyio](https://seerepo.com/uses/anyio)**: 11 files
- **[starlette](https://seerepo.com/uses/starlette)**: 7 files
- **[uvicorn](https://seerepo.com/uses/uvicorn)**: 2 files

### Content

- **[pillow](https://seerepo.com/uses/pillow)**: 12 files
- **[jinja2](https://seerepo.com/uses/jinja2)**: 3 files
- **[markupsafe](https://seerepo.com/uses/markupsafe)**: 1 file

### Validation

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

### Tools

- **Typer**: 14 files
- **packaging**: 5 files
- **typing-extensions**: 5 files
- **hf-gradio**: 2 files

### Other

- **httpx**: 16 files
- **NumPy**: 15 files
- **pandas**: 5 files
- **semantic-version**: 5 files
- **tomlkit**: 5 files
- **orjson**: 3 files
- **pydub**: 3 files
- **python-multipart**: 2 files
- **safehttpx**: 2 files
- **brotli**: 1 file
- **groovy**: 1 file
- **pytz**: 1 file
- **pyyaml**: 1 file

## Frontend (js/_spaces-test)

### The base

- **SvelteKit**: [in js/app/package.json](https://github.com/gradio-app/gradio/blob/ebccfcf3194dd3cd132491a6bc35968f1321611a/js/app/package.json)
- **[Svelte](https://seerepo.com/uses/svelte)**: 2 files

### Interface

- **iframe-resizer**: 1 file

## Frontend (js/_website)

### The base

- **SvelteKit**: 17 files · [in js/app/package.json](https://github.com/gradio-app/gradio/blob/ebccfcf3194dd3cd132491a6bc35968f1321611a/js/app/package.json)
- **[Svelte](https://seerepo.com/uses/svelte)**: 14 files

### Styles

- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**

### Interface

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

## Backend (js/_website)

### AI

- **gradio-client**: 1 file
- **[transformers](https://seerepo.com/uses/transformers)**: 1 file

## Support (js/_website)

### Content

- **hast-util-to-string**: 5 files
- **[prismjs](https://seerepo.com/uses/prismjs)**: 2 files

### Tools

- **mdsvex**: 6 files

### Other

- **requests**: 2 files
- **@sindresorhus/slugify**: 1 file
- **flexsearch**: 1 file
- **NumPy**: 1 file
- **tqdm**: 1 file

## Frontend (js/accordion)

### The base

- **[Svelte](https://seerepo.com/uses/svelte)**: 2 files

## Support (js/accordion)

### Testing

- **Vitest**: 1 file

## Support (js/annotatedimage)

### Testing

- **Vitest**: 1 file

## Frontend (js/app)

### The base

- **[Svelte](https://seerepo.com/uses/svelte)**: 3 files
- **SvelteKit**: 1 file · [in js/app/package.json](https://github.com/gradio-app/gradio/blob/ebccfcf3194dd3cd132491a6bc35968f1321611a/js/app/package.json)

## Support (js/app)

### Other

- **http-proxy**: 1 file
- **svelte-i18n**: 1 file

## Frontend (js/atoms)

### The base

- **[Svelte](https://seerepo.com/uses/svelte)**: 7 files

## Support (js/atoms)

### Testing

- **Vitest**: 3 files

## Frontend (js/audio)

### The base

- **[Svelte](https://seerepo.com/uses/svelte)**: 12 files

### Interface

- **wavesurfer.js**: 10 files

## Support (js/audio)

### Testing

- **Vitest**: 2 files

## Frontend (js/box)

### The base

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

## Support (js/box)

### Testing

- **Vitest**: 1 file

## Frontend (js/browserstate)

### The base

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

## Support (js/browserstate)

### Testing

- **Vitest**: 2 files

### Other

- **crypto-js**: 1 file

## Frontend (js/button)

### The base

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

## Support (js/button)

### Testing

- **Testing Library**: 1 file
- **Vitest**: 1 file

## Frontend (js/chatbot)

### The base

- **[Svelte](https://seerepo.com/uses/svelte)**: 6 files

## Support (js/chatbot)

### Testing

- **Vitest**: 1 file

### Other

- **dequal**: 1 file

## Support (js/checkbox)

### Testing

- **Testing Library**: 1 file
- **Vitest**: 1 file

## Support (js/checkboxgroup)

### Testing

- **Testing Library**: 1 file
- **Vitest**: 1 file

### Other

- **dequal**: 1 file

## Frontend (js/code)

### The base

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

### Interface

- **[CodeMirror](https://seerepo.com/uses/codemirror)**: 4 files
- **[@lezer/highlight](https://seerepo.com/uses/lezer-highlight)**: 1 file

## Support (js/code)

### Content

- **@lezer/markdown**: 1 file

### Testing

- **Vitest**: 2 files
- **Testing Library**: 1 file

### Other

- **@lezer/common**: 1 file
- **svelte-i18n**: 1 file

## Frontend (js/colorpicker)

### The base

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

## Support (js/colorpicker)

### Testing

- **Vitest**: 2 files

### Other

- **tinycolor2**: 2 files

## Frontend (js/column)

### The base

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

## Support (js/column)

### Testing

- **Vitest**: 1 file

## Frontend (js/core)

### The base

- **[Svelte](https://seerepo.com/uses/svelte)**: 18 files

## Support (js/core)

### Testing

- **Vitest**: 6 files
- **Testing Library**: 1 file

### Other

- **svelte-i18n**: 7 files
- **dequal**: 1 file

## Frontend (js/dataframe)

### The base

- **[Svelte](https://seerepo.com/uses/svelte)**: 7 files

### Interface

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

## Support (js/dataframe)

### Content

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

### Testing

- **Vitest**: 4 files
- **Testing Library**: 1 file

### Other

- **dequal**: 1 file

## Frontend (js/dataset)

### The base

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

## Support (js/dataset)

### Testing

- **Testing Library**: 1 file
- **Vitest**: 1 file

## Frontend (js/datetime)

### The base

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

## Support (js/datetime)

### Testing

- **Vitest**: 2 files
- **Testing Library**: 1 file

## Frontend (js/dialogue)

### The base

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

## Support (js/dialogue)

### Testing

- **Testing Library**: 1 file
- **Vitest**: 1 file

## Frontend (js/downloadbutton)

### The base

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

## Support (js/downloadbutton)

### Testing

- **Vitest**: 1 file

## Frontend (js/draggable)

### The base

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

## Support (js/draggable)

### Testing

- **Vitest**: 1 file

## Frontend (js/dropdown)

### The base

- **[Svelte](https://seerepo.com/uses/svelte)**: 2 files

## Support (js/dropdown)

### Testing

- **Testing Library**: 1 file
- **Vitest**: 1 file

### Other

- **svelte-i18n**: 1 file

## Frontend (js/file)

### The base

- **[Svelte](https://seerepo.com/uses/svelte)**: 2 files

## Support (js/file)

### Testing

- **Vitest**: 1 file

## Support (js/fileexplorer)

### Testing

- **Vitest**: 1 file

### Other

- **svelte-i18n**: 1 file

## Frontend (js/form)

### The base

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

## Support (js/form)

### Testing

- **Vitest**: 1 file

## Frontend (js/gallery)

### The base

- **[Svelte](https://seerepo.com/uses/svelte)**: 2 files

## Support (js/gallery)

### Testing

- **Vitest**: 1 file

### Other

- **dequal**: 1 file

## Support (js/group)

### Testing

- **Vitest**: 1 file

## Frontend (js/highlightedtext)

### The base

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

## Support (js/highlightedtext)

### Testing

- **Vitest**: 2 files
- **Testing Library**: 1 file

## Frontend (js/html)

### The base

- **[Svelte](https://seerepo.com/uses/svelte)**: 2 files

## Support (js/html)

### Content

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

### Testing

- **Vitest**: 1 file

## Frontend (js/image)

### The base

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

## Support (js/image)

### Testing

- **Vitest**: 2 files

## Frontend (js/imageeditor)

### The base

- **[Svelte](https://seerepo.com/uses/svelte)**: 14 files

### Interface

- **pixi.js**: 11 files
- **pixi-filters**: 1 file

## Support (js/imageeditor)

### Testing

- **Vitest**: 4 files

### Other

- **tinycolor2**: 9 files

## Frontend (js/imageslider)

### The base

- **[Svelte](https://seerepo.com/uses/svelte)**: 6 files

### Interface

- **d3-selection**: 1 file

## Support (js/imageslider)

### Testing

- **Vitest**: 2 files

## Frontend (js/json)

### The base

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

## Support (js/json)

### Testing

- **Vitest**: 1 file

## Support (js/label)

### Testing

- **Vitest**: 1 file

## Frontend (js/markdown-code)

### The base

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

### Interface

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

## Support (js/markdown-code)

### Content

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

### Testing

- **Vitest**: 2 files

### Other

- **github-slugger**: 1 file

## Frontend (js/markdown)

### The base

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

## Support (js/markdown)

### Testing

- **Vitest**: 1 file

## Frontend (js/model3D)

### The base

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

## Support (js/model3D)

### Testing

- **Vitest**: 3 files
- **Testing Library**: 1 file

### Other

- **dequal**: 2 files

## Frontend (js/multimodaltextbox)

### The base

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

## Support (js/multimodaltextbox)

### Testing

- **Testing Library**: 1 file
- **Vitest**: 1 file

## Frontend (js/nativeplot)

### The base

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

### Interface

- **Vega**: 1 file
- **vega-embed**: 1 file
- **vega-lite**: 1 file

## Support (js/nativeplot)

### Testing

- **Vitest**: 1 file

## Frontend (js/navbar)

### The base

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

## Support (js/navbar)

### Testing

- **Vitest**: 1 file

## Frontend (js/number)

### The base

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

## Support (js/number)

### Testing

- **Testing Library**: 1 file
- **Vitest**: 1 file

## Frontend (js/paramviewer)

### The base

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

## Support (js/paramviewer)

### Content

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

### Testing

- **Vitest**: 1 file

## Frontend (js/plot)

### The base

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

### Interface

- **vega-lite**: 2 files
- **Vega**: 1 file
- **vega-embed**: 1 file

## Support (js/plot)

### Testing

- **Vitest**: 1 file

## Frontend (js/preview)

### The base

- **[Svelte](https://seerepo.com/uses/svelte)**: 3 files
- **[Vite](https://seerepo.com/uses/vite)**: 3 files

### Interface

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

## Support (js/preview)

### Tools

- **@sveltejs/vite-plugin-svelte**: 1 file
- **rollup**: 1 file
- **svelte-preprocess**: 1 file

### Other

- **tomlkit**: 1 file

## Frontend (js/radio)

### The base

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

## Support (js/radio)

### Testing

- **Testing Library**: 1 file
- **Vitest**: 1 file

## Support (js/row)

### Testing

- **Vitest**: 1 file

## Support (js/sanitize)

### Content

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

### Testing

- **Vitest**: 1 file

## Frontend (js/sidebar)

### The base

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

## Support (js/sidebar)

### Testing

- **Vitest**: 1 file

## Support (js/simpledropdown)

### Testing

- **Testing Library**: 1 file
- **Vitest**: 1 file

## Frontend (js/simpleimage)

### The base

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

## Frontend (js/simpletextbox)

### The base

- **[Svelte](https://seerepo.com/uses/svelte)**: 2 files

## Frontend (js/slider)

### The base

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

## Support (js/slider)

### Testing

- **Vitest**: 1 file

## Frontend (js/spa)

### The base

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

## Support (js/spa)

### Testing

- **playwright**: 10 files

### Other

- **svelte-i18n**: 2 files

## Frontend (js/statustracker)

### The base

- **[Svelte](https://seerepo.com/uses/svelte)**: 5 files

## Support (js/statustracker)

### Testing

- **Vitest**: 2 files

## Frontend (js/storybook)

### The base

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

## Support (js/storybook)

### Testing

- **playwright**: 1 file

### Tools

- **Storybook**: 3 files

### Other

- **svelte-i18n**: 1 file

## Frontend (js/tabitem)

### The base

- **[Svelte](https://seerepo.com/uses/svelte)**: 2 files

## Support (js/tabitem)

### Testing

- **Vitest**: 1 file

## Frontend (js/tabs)

### The base

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

## Support (js/tabs)

### Testing

- **Testing Library**: 1 file
- **Vitest**: 1 file

## Frontend (js/textbox)

### The base

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

## Support (js/textbox)

### Testing

- **Testing Library**: 1 file
- **Vitest**: 1 file

## Frontend (js/timer)

### The base

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

## Support (js/timer)

### Testing

- **Vitest**: 1 file

## Frontend (js/tooltip)

### The base

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

## Frontend (js/tootils)

### The base

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

## Support (js/tootils)

### Testing

- **Vitest**: 5 files
- **@playwright/test**: 1 file
- **Testing Library**: 1 file

### Other

- **svelte-i18n**: 1 file

## Frontend (js/upload)

### The base

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

## Support (js/upload)

### Testing

- **Vitest**: 1 file

## Frontend (js/uploadbutton)

### The base

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

## Support (js/uploadbutton)

### Testing

- **Testing Library**: 1 file
- **Vitest**: 1 file

## Frontend (js/utils)

### The base

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

## Support (js/utils)

### Testing

- **Vitest**: 3 files

### Other

- **hls.js**: 1 file

## Frontend (js/vibeeditor)

### The base

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

## Frontend (js/video)

### The base

- **[Svelte](https://seerepo.com/uses/svelte)**: 8 files

## Support (js/video)

### Content

- **@ffmpeg/ffmpeg**: 2 files

### Testing

- **Vitest**: 1 file

### Other

- **@ffmpeg/util**: 1 file
- **mrmime**: 1 file

## Frontend (js/workflowcanvas)

### The base

- **[Svelte](https://seerepo.com/uses/svelte)**: 9 files

## Backend (js/workflowcanvas)

### AI

- **[Hugging Face](https://seerepo.com/uses/hugging-face)**: 1 file

## Support (js/workflowcanvas)

### Testing

- **Vitest**: 11 files

## Other repos with a similar stack

- [ray-project/ray](https://seerepo.com/r/ray-project/ray/built): FastAPI, uvicorn, starlette, anyio, Hugging Face, Plotly, xyzservices, Gradio, matplotlib, SQLAlchemy, itsdangerous, accelerate, datasets, diffusers, LangChain, nltk, openai-whisper, prophet, safetensors, scikit-learn, TensorFlow, torch, torchaudio, torchvision, xgboost, gradio-client, transformers, jinja2, markupsafe, pillow, Pydantic · [Compare](https://seerepo.com/compare/gradio-app/gradio/vs/ray-project/ray)
- [datawhalechina/hello-agents](https://seerepo.com/r/datawhalechina/hello-agents/built): FastAPI, uvicorn, starlette, anyio, Hugging Face, OpenAI, Vite, Tailwind CSS, Plotly, Gradio, matplotlib, SQLAlchemy, accelerate, datasets, langchain-openai, safetensors, scikit-learn, spaCy, torch, MCP, transformers, jinja2, pymupdf, pillow, Pydantic, D3, Mermaid, katex, marked · [Compare](https://seerepo.com/compare/datawhalechina/hello-agents/vs/gradio-app/gradio)
- [bojieli/ai-agent-book](https://seerepo.com/r/bojieli/ai-agent-book/built): FastAPI, uvicorn, anyio, Hugging Face, OpenAI, Vite, Tailwind CSS, Plotly, matplotlib, authlib, accelerate, datasets, langchain-openai, librosa, nltk, openai-whisper, opencv-python, scikit-learn, torch, torchaudio, MCP, transformers, pymupdf, pillow, Pydantic, D3, katex · [Compare](https://seerepo.com/compare/bojieli/ai-agent-book/vs/gradio-app/gradio)
- [mudler/LocalAI](https://seerepo.com/r/mudler/LocalAI/built): FastAPI, uvicorn, anyio, Hugging Face, OpenAI, Vite, Gradio, matplotlib, accelerate, datasets, diffusers, librosa, onnxruntime-gpu, opencv-python, safetensors, torch, torchaudio, torchvision, MCP, transformers, jinja2, pillow, CodeMirror, @lezer/highlight, marked · [Compare](https://seerepo.com/compare/gradio-app/gradio/vs/mudler/LocalAI)
- [unslothai/unsloth](https://seerepo.com/r/unslothai/unsloth/built): FastAPI, uvicorn, anyio, Hugging Face, OpenAI, Vite, Tailwind CSS, matplotlib, accelerate, datasets, diffusers, librosa, openai-whisper, safetensors, scikit-learn, torch, transformers, jinja2, pymupdf, pillow, Pydantic, TanStack, katex, marked · [Compare](https://seerepo.com/compare/gradio-app/gradio/vs/unslothai/unsloth)
- [debpalash/VoiceStudio](https://seerepo.com/r/debpalash/VoiceStudio/built): FastAPI, OpenAI, Vite, Tailwind CSS, Gradio, matplotlib, SQLAlchemy, accelerate, diffusers, librosa, openai-whisper, torch, torchaudio, torchvision, MCP, transformers, pillow, Pydantic · [Compare](https://seerepo.com/compare/debpalash/VoiceStudio/vs/gradio-app/gradio)

## Frequently asked questions

### What language is gradio written in?

gradio is written in Python, with 310,984 written lines.

### What framework does gradio use?

gradio is built with FastAPI, uvicorn, starlette, anyio, Svelte, SvelteKit, and Vite.

### What does gradio sign people in with?

gradio signs people in with itsdangerous and authlib.

### Does gradio use AI?

Yes. gradio uses AI through accelerate, datasets, diffusers, LangChain, langchain-openai, librosa, llama-index, nltk, onnxruntime-gpu, openai, openai-whisper, opencv-python, prophet, safetensors, scikit-learn, spaCy, speechbrain, TensorFlow, torch, torchaudio, torchvision, xgboost, gradio-client, mcp, transformers, and OpenAI.

### What services does gradio use?

gradio uses psycopg2 and Hugging Face.

### Does gradio have tests?

Yes. gradio has 327 test files and is tested with playwright, Vitest, msw, Testing Library, and @playwright/test.

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

The ones that share most of its stack: ray-project/ray, datawhalechina/hello-agents, and bojieli/ai-agent-book.

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