Source: https://seerepo.com/r/Canner/WrenAI/built
Markdown source: https://seerepo.com/r/Canner/WrenAI/built.md
Description: WrenAI is a Rust repo built with Tokio. It stores its data in datafusion and pyarrow, reaches it with sqlglot, and signs people in with cryptography and pyjwt.

# What is WrenAI built with?

WrenAI is a Rust repo built with Tokio. It stores its data in datafusion and pyarrow, reaches it with sqlglot, signs people in with cryptography and pyjwt, uses AI through pydantic-ai, LangChain, and LangGraph, makes its content with lxml, csv, and parquet, validates its data with Pydantic, deploys with loguru, log, env_logger, and boto3, and uses DuckDB, object_store, opendal, and arrow. It has 105,033 written lines, with 155 test files.

Read on November 6, 2026, at commit 548eee3.

Repository: https://github.com/Canner/WrenAI

## Frontend (/)

### Interface

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

## Backend (/)

### Data

- **datafusion**: 44 files
- **[pyarrow](https://seerepo.com/uses/pyarrow)**: 21 files
- **[DuckDB](https://seerepo.com/uses/duckdb)**: 1 file
- **object_store**: 1 file
- **opendal**: 1 file

### Data access

- **sqlglot**: 15 files

### Sign-in

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

### AI

- **pydantic-ai**: 3 files
- **[LangChain](https://seerepo.com/uses/langchain)**: 2 files
- **[LangGraph](https://seerepo.com/uses/langgraph)**: 1 file

## Support (/)

### The base

- **[Tokio](https://seerepo.com/uses/tokio)**: 6 files

### Content

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

### Validation

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

### Deploy

- **[loguru](https://seerepo.com/uses/loguru)**: 13 files
- **[log](https://seerepo.com/uses/log)**: 6 files
- **[env_logger](https://seerepo.com/uses/env-logger)**: 3 files
- **[boto3](https://seerepo.com/uses/boto3)**: 1 file

### Tools

- **clap**
- **pygments**
- **Typer**: 12 files
- **quote**: 1 file
- **syn**: 1 file

### Other

- **num_cpus**
- **pyarrow-hotfix**
- **pyasn1**
- **pyopenssl**
- **urllib3**
- **pyyaml**: 12 files
- **pyo3**: 10 files
- **serde_json**: 9 files
- **petgraph**: 5 files
- **serde**: 5 files
- **python-dotenv**: 4 files
- **regex**: 3 files
- **requests**: 3 files
- **async-trait**: 2 files
- **base64**: 2 files
- **itertools**: 2 files
- **pandas**: 2 files
- **parking_lot**: 2 files
- **thiserror**: 2 files
- **bigdecimal**: 1 file
- **futures**: 1 file
- **half**: 1 file
- **rust_decimal**: 1 file
- **serde_with**: 1 file
- **sqlparser**: 1 file
- **tempfile**: 1 file

## Backend (core/wren-core-wasm)

### Data

- **arrow**: 1 file
- **datafusion**: 1 file
- **object_store**: 1 file

## Support (core/wren-core-wasm)

### The base

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

### Content

- **parquet**: 1 file

### Deploy

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

### Other

- **chrono**
- **getrandom**
- **wasm-bindgen-futures**
- **web-sys**
- **bytes**: 1 file
- **console_error_panic_hook**: 1 file
- **js-sys**: 1 file
- **serde**: 1 file
- **serde_json**: 1 file
- **url**: 1 file
- **wasm-bindgen**: 1 file

## Other repos with a similar stack

- [run-llama/llama_index](https://seerepo.com/r/run-llama/llama_index/built): pyarrow, DuckDB, Rich, cryptography, pyjwt, LangChain, lxml, Pydantic, boto3 · [Compare](https://seerepo.com/compare/Canner/WrenAI/vs/run-llama/llama_index)
- [ray-project/ray](https://seerepo.com/r/ray-project/ray/built): pyarrow, Rich, sqlglot, cryptography, pyjwt, LangChain, lxml, Pydantic, boto3 · [Compare](https://seerepo.com/compare/Canner/WrenAI/vs/ray-project/ray)
- [langflow-ai/langflow](https://seerepo.com/r/langflow-ai/langflow/built): pyarrow, Rich, cryptography, pyjwt, LangChain, Pydantic, loguru, boto3 · [Compare](https://seerepo.com/compare/Canner/WrenAI/vs/langflow-ai/langflow)
- [unslothai/unsloth](https://seerepo.com/r/unslothai/unsloth/built): Tokio, Rich, cryptography, pyjwt, lxml, Pydantic, loguru, log · [Compare](https://seerepo.com/compare/Canner/WrenAI/vs/unslothai/unsloth)
- [apache/airflow](https://seerepo.com/r/apache/airflow/built): pyarrow, DuckDB, Rich, sqlglot, cryptography, pyjwt, Pydantic, boto3 · [Compare](https://seerepo.com/compare/apache/airflow/vs/Canner/WrenAI)
- [debpalash/VoiceStudio](https://seerepo.com/r/debpalash/VoiceStudio/built): pyarrow, Rich, cryptography, lxml, Pydantic, loguru, log · [Compare](https://seerepo.com/compare/Canner/WrenAI/vs/debpalash/VoiceStudio)

## Frequently asked questions

### What language is WrenAI written in?

WrenAI is written in Rust, with 105,033 written lines.

### What framework does WrenAI use?

WrenAI is built with Tokio.

### What database does WrenAI use?

WrenAI stores its data in datafusion and pyarrow and reaches it with sqlglot.

### What does WrenAI sign people in with?

WrenAI signs people in with cryptography and pyjwt.

### Does WrenAI use AI?

Yes. WrenAI uses AI through pydantic-ai, LangChain, and LangGraph.

### What services does WrenAI use?

WrenAI uses DuckDB, object_store, opendal, and arrow.

### Does WrenAI have tests?

Yes. WrenAI has 155 test files.

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

The ones that share most of its stack: run-llama/llama_index, ray-project/ray, 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.
