Source: https://seerepo.com/r/windmill-labs/windmill/built
Markdown source: https://seerepo.com/r/windmill-labs/windmill/built.md
Description: windmill is a Rust repo built with axum, tower, Tokio, Deno, React, and 2 more.

# What is windmill built with?

windmill is a Rust repo built with axum, tower, Tokio, Deno, React, and 2 more. It stores its data in sqlx, quick_cache, object_store, Postgres, MySQL, and 5 more, reaches it with SQLAlchemy, signs people in with cryptography, pyjwt, hmac, tower-cookies, jsonwebtoken, and 7 more, uses AI through nltk, rmcp, aws-sdk-bedrockruntime, aws-sdk-bedrock, candle-core, and 9 more, makes its content with libxml, mail-parser, quick-xml, sendgrid, parquet, and 11 more, validates its data with deno_webidl, schemars, Ajv, and Zod, is tested with github.com/stretchr/testify, serial_test, @happy-dom/global-registrator, Vitest, fake-indexeddb, and 1 more, deploys with aws-sdk-secretsmanager, boto3, k8s-openapi, kube, opentelemetry-appender-tracing, and 9 more, and uses async-nats, aws-sdk-sqs, mysql-connector-python, nkeys, postgres-native-tls, and 14 more. It has 1,458,145 written lines, with 803 test files.

Read on November 6, 2026, at commit 9ce2c6b.

Repository: https://github.com/windmill-labs/windmill

## Frontend (/)

### Interface

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

## Backend (/)

### The base

- **[axum](https://seerepo.com/uses/axum)**: 137 files
- **[tower](https://seerepo.com/uses/tower)**: 4 files

### Data

- **async-nats**
- **aws-sdk-sqs**
- **mysql-connector-python**
- **nkeys**
- **postgres-native-tls**
- **postgres-protocol**
- **[psycopg](https://seerepo.com/uses/psycopg)**
- **[psycopg2-binary](https://seerepo.com/uses/psycopg2-binary)**
- **pyairtable**
- **pymongo**
- **rdkafka**
- **[rusqlite](https://seerepo.com/uses/rusqlite)**
- **s3transfer**
- **sqlx-postgres**
- **tokio-postgres**
- **[sqlx](https://seerepo.com/uses/sqlx)**: 253 files
- **quick_cache**: 35 files
- **object_store**: 23 files
- **[Postgres](https://seerepo.com/uses/postgres)**: 22 files · [cli/src/commands/datatable/serve.ts, line 5](https://github.com/windmill-labs/windmill/blob/9ce2c6b131f35e29f4ed7020962da1bdae8a44a5/cli/src/commands/datatable/serve.ts#L5)
- **[MySQL](https://seerepo.com/uses/mysql)**: 3 files · [backend/windmill-worker/src/mysql_executor.rs, line 7](https://github.com/windmill-labs/windmill/blob/9ce2c6b131f35e29f4ed7020962da1bdae8a44a5/backend/windmill-worker/src/mysql_executor.rs#L7)
- **[duckdb](https://seerepo.com/uses/duckdb)**: 2 files
- **lapin**: 2 files
- **rumqttc**: 2 files
- **[SQLite](https://seerepo.com/uses/sqlite)**: 2 files · [wm-ts-nav/src/db.rs, line 2](https://github.com/windmill-labs/windmill/blob/9ce2c6b131f35e29f4ed7020962da1bdae8a44a5/wm-ts-nav/src/db.rs#L2)
- **datafusion**: 1 file
- **[MongoDB](https://seerepo.com/uses/mongodb)**: 1 file · [lsp/Pipfile, line 10](https://github.com/windmill-labs/windmill/blob/9ce2c6b131f35e29f4ed7020962da1bdae8a44a5/lsp/Pipfile#L10)
- **tiberius**: 1 file

### Data access

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

### Sign-in

- **[cryptography](https://seerepo.com/uses/cryptography)**
- **[pyjwt](https://seerepo.com/uses/pyjwt)**
- **[hmac](https://seerepo.com/uses/hmac)**: 12 files
- **tower-cookies**: 7 files
- **[jsonwebtoken](https://seerepo.com/uses/jsonwebtoken)**: 6 files
- **oauth2**: 5 files
- **[argon2](https://seerepo.com/uses/argon2)**: 4 files
- **aws-sdk-sts**: 2 files
- **[ed25519-dalek](https://seerepo.com/uses/ed25519-dalek)**: 1 file
- **gcp_auth**: 1 file
- **hkdf**: 1 file
- **openidconnect**: 1 file

### AI

- **[nltk](https://seerepo.com/uses/nltk)**
- **[rmcp](https://seerepo.com/uses/rmcp)**: 14 files
- **aws-sdk-bedrockruntime**: 2 files
- **aws-sdk-bedrock**: 1 file
- **candle-core**: 1 file
- **candle-nn**: 1 file
- **candle-transformers**: 1 file
- **hf-hub**: 1 file
- **[tokenizers](https://seerepo.com/uses/tokenizers)**: 1 file

## Support (/)

### The base

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

### Content

- **libxml**
- **mail-parser**
- **[quick-xml](https://seerepo.com/uses/quick-xml)**
- **sendgrid**
- **parquet**: 1 file
- **[pulldown-cmark](https://seerepo.com/uses/pulldown-cmark)**: 1 file
- **yaml-rust**: 1 file

### Validation

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

### Testing

- **github.com/stretchr/testify**: 1 file
- **serial_test**: 1 file

### Deploy

- **aws-sdk-secretsmanager**
- **[boto3](https://seerepo.com/uses/boto3)**
- **k8s-openapi**
- **kube**
- **opentelemetry-appender-tracing**
- **[opentelemetry-otlp](https://seerepo.com/uses/opentelemetry-otlp)**
- **[opentelemetry-semantic-conventions](https://seerepo.com/uses/opentelemetry-semantic-conventions)**
- **[tracing](https://seerepo.com/uses/tracing)**: 201 files
- **[prometheus](https://seerepo.com/uses/prometheus)**: 8 files
- **[tracing-subscriber](https://seerepo.com/uses/tracing-subscriber)**: 3 files
- **bollard**: 1 file
- **[OpenTelemetry](https://seerepo.com/uses/opentelemetry)**: 1 file
- **[tracing-appender](https://seerepo.com/uses/tracing-appender)**: 1 file
- **[tracing-opentelemetry](https://seerepo.com/uses/tracing-opentelemetry)**: 1 file

### Tools

- **derive_more**
- **proc-macro2**
- **typing-extensions**
- **Ruff**: 5 files
- **tree-sitter**: 5 files
- **ruff_python_parser**: 4 files
- **SWC**: 3 files
- **swc_ecma_ast**: 3 files
- **swc_ecma_parser**: 3 files
- **quote**: 2 files
- **syn**: 2 files
- **clap**: 1 file
- **deno_ast**: 1 file
- **git-version**: 1 file
- **nu-parser**: 1 file
- **ruff_text_size**: 1 file
- **rust-embed**: 1 file
- **tree-sitter-c-sharp**: 1 file
- **tree-sitter-java**: 1 file
- **tree-sitter-r**: 1 file
- **tree-sitter-ruby**: 1 file
- **tree-sitter-rust**: 1 file
- **tree-sitter-typescript**: 1 file

### Other

- **astral-tokio-tar**
- **aws-sigv4**
- **base32**
- **certifi**
- **charset-normalizer**
- **cookie**
- **getrandom**
- **google-api-core**
- **hyper-rustls**
- **hyper-util**
- **idna**
- **jmespath**
- **md-5**
- **NumPy**
- **openssl**
- **opentelemetry-proto**
- **p256**
- **pandas**
- **pin-project**
- **Polars**
- **prost**
- **pyowm**
- **pyparsing**
- **python-dateutil**
- **pytz**
- **requests**
- **runtime**
- **rustls-native-certs**
- **rustls-pemfile**
- **serde_derive**
- **six**
- **size**
- **slack-sdk**
- **systemstat**
- **tantivy**
- **tokio-native-tls**
- **tokio-rustls**
- **tonic**
- **urllib3**
- **v8**
- **webpki-roots**
- **winapi**
- **windows-service**
- **windows-sys**
- **yfinance**
- **serde_json**: 294 files
- **serde**: 246 files
- **lazy_static**: 135 files
- **uuid**: 132 files
- **chrono**: 125 files
- **anyhow**: 121 files
- **futures**: 61 files
- **regex**: 56 files
- **itertools**: 52 files
- **http**: 50 files
- **reqwest**: 47 files
- **async-trait**: 46 files
- **sha2**: 34 files
- **base64**: 28 files
- **bytes**: 23 files
- **hex**: 23 files
- **url**: 23 files
- **Hyper**: 22 files
- **urlencoding**: 15 files
- **rand**: 13 files
- **tempfile**: 13 files
- **arc-swap**: 10 files
- **async-stream**: 10 files
- **thiserror**: 10 files
- **async-recursion**: 8 files
- **serde_yml**: 8 files
- **strum**: 8 files
- **tar**: 6 files
- **tokio-stream**: 6 files
- **wasm-bindgen**: 6 files
- **backon**: 5 files
- **const_format**: 5 files
- **dashmap**: 5 files
- **indexmap**: 5 files
- **tower-http**: 5 files
- **ulid**: 5 files
- **aws-config**: 4 files
- **flate2**: 4 files
- **nix**: 4 files
- **pep440_rs**: 4 files
- **process-wrap**: 4 files
- **regex-lite**: 4 files
- **rust_decimal**: 4 files
- **semver**: 4 files
- **serde_urlencoded**: 4 files
- **tokio-util**: 4 files
- **matchit**: 3 files
- **mime_guess**: 3 files
- **once_cell**: 3 files
- **reqwest-middleware**: 3 files
- **strum_macros**: 3 files
- **aws-credential-types**: 2 files
- **aws-smithy-types**: 2 files
- **bitflags**: 2 files
- **constant_time_eq**: 2 files
- **convert_case**: 2 files
- **eventsource-stream**: 2 files
- **futures-core**: 2 files
- **globset**: 2 files
- **httpx**: 2 files
- **memchr**: 2 files
- **native-tls**: 2 files
- **phf**: 2 files
- **rustls**: 2 files
- **sha1**: 2 files
- **tikv-jemalloc-ctl**: 2 files
- **time**: 2 files
- **tokio-tungstenite**: 2 files
- **toml**: 2 files
- **@aws-crypto/sha256-js**: 1 file
- **aes-gcm**: 1 file
- **aho-corasick**: 1 file
- **async_zip**: 1 file
- **bit-vec**: 1 file
- **byteorder**: 1 file
- **const-str**: 1 file
- **crc**: 1 file
- **cron**: 1 file
- **deno_error**: 1 file
- **deno_fetch**: 1 file
- **deno_net**: 1 file
- **deno_permissions**: 1 file
- **deno_telemetry**: 1 file
- **deno_tls**: 1 file
- **deno_web**: 1 file
- **dotenv**: 1 file
- **equivalent**: 1 file
- **erased-serde**: 1 file
- **flume**: 1 file
- **fs4**: 1 file
- **gethostname**: 1 file
- **[Google](https://seerepo.com/uses/google)**: 1 file
- **ignore**: 1 file
- **ipnet**: 1 file
- **jiff**: 1 file
- **jiff-tzdb**: 1 file
- **pem**: 1 file
- **pin-project-lite**: 1 file
- **pyyaml**: 1 file
- **rayon**: 1 file
- **rcgen**: 1 file
- **reqwest-retry**: 1 file
- **rquickjs**: 1 file
- **rsa**: 1 file
- **serde-wasm-bindgen**: 1 file
- **spki**: 1 file
- **sqlparser**: 1 file
- **sse-stream**: 1 file
- **sys_traits**: 1 file
- **sysinfo**: 1 file
- **tikv-jemalloc-sys**: 1 file
- **tikv-jemallocator**: 1 file
- **windows**: 1 file

## Support (backend/parsers/windmill-sql-datatype-parser-wasm)

### Other

- **getrandom**
- **wasm-bindgen**: 1 file

## Frontend (chat-sdk)

### The base

- **[React](https://seerepo.com/uses/react)**: 2 files

## Backend (chat-sdk)

### AI

- **[@ai-sdk/react](https://seerepo.com/uses/ai-sdk-react)**: 1 file
- **@assistant-ui/react**: 1 file
- **[ai](https://seerepo.com/uses/ai)**: 1 file

## Support (chat-sdk)

### Testing

- **@happy-dom/global-registrator**: 1 file

## Frontend (cli)

### The base

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

## Backend (cli)

### Data

- **[Postgres](https://seerepo.com/uses/postgres)**: 1 file · [cli/src/commands/datatable/serve.ts, line 5](https://github.com/windmill-labs/windmill/blob/9ce2c6b131f35e29f4ed7020962da1bdae8a44a5/cli/src/commands/datatable/serve.ts#L5)

## Support (cli)

### Content

- **[yaml](https://seerepo.com/uses/yaml)**: 27 files

### Validation

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

### Tools

- **esbuild**: 4 files
- **get-port**: 3 files

### Other

- **open**: 4 files
- **minimatch**: 3 files
- **tar-stream**: 3 files
- **ws**: 3 files
- **jszip**: 2 files
- **diff**: 1 file

## Frontend (frontend)

### The base

- **[Svelte](https://seerepo.com/uses/svelte)**: 1,233 files
- **[SvelteKit](https://seerepo.com/uses/sveltekit)**: 4 files

### Styles

- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**
- **[tailwind-merge](https://seerepo.com/uses/tailwind-merge)**: 345 files
- **style-to-object**: 2 files

### Interface

- **[xyflow](https://seerepo.com/uses/xyflow)**: 43 files
- **[monaco-editor](https://seerepo.com/uses/monaco-editor)**: 24 files
- **[Chart.js](https://seerepo.com/uses/chartjs)**: 20 files
- **ag-grid-community**: 11 files
- **chartjs-adapter-date-fns**: 6 files
- **chartjs-plugin-zoom**: 5 files
- **svelte-range-slider-pips**: 4 files
- **driver.js**: 3 files
- **ol**: 2 files
- **panzoom**: 2 files
- **@codingame/monaco-vscode-languages-service-override**: 1 file
- **[Mermaid](https://seerepo.com/uses/mermaid)**: 1 file
- **monaco-vim**: 1 file
- **[xterm](https://seerepo.com/uses/xterm)**: 1 file
- **xterm-readline**: 1 file
- **y-monaco**: 1 file

### Icons

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

## Backend (frontend)

### Data

- **idb**: 7 files
- **[lru-cache](https://seerepo.com/uses/lru-cache)**: 1 file

### Services

- **[OpenAI](https://seerepo.com/uses/openai)**: 7 files · [frontend/src/lib/components/copilot/CronGen.svelte, line 8](https://github.com/windmill-labs/windmill/blob/9ce2c6b131f35e29f4ed7020962da1bdae8a44a5/frontend/src/lib/components/copilot/CronGen.svelte#L8)
- **[Anthropic](https://seerepo.com/uses/anthropic)**: 3 files · [frontend/src/lib/components/copilot/chat/anthropic.ts, line 2](https://github.com/windmill-labs/windmill/blob/9ce2c6b131f35e29f4ed7020962da1bdae8a44a5/frontend/src/lib/components/copilot/chat/anthropic.ts#L2)

## Support (frontend)

### Content

- **[yaml](https://seerepo.com/uses/yaml)**: 23 files
- **svelte-exmarkdown**: 14 files
- **[highlight.js](https://seerepo.com/uses/highlightjs)**: 2 files
- **[dompurify](https://seerepo.com/uses/dompurify)**: 1 file
- **mdast-util-find-and-replace**: 1 file
- **[pdfjs-dist](https://seerepo.com/uses/pdfjs-dist)**: 1 file
- **[rehype-raw](https://seerepo.com/uses/rehype-raw)**: 1 file
- **[rehype-sanitize](https://seerepo.com/uses/rehype-sanitize)**: 1 file
- **[unist-util-visit](https://seerepo.com/uses/unist-util-visit)**: 1 file

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 30 files

### Testing

- **Vitest**: 314 files
- **fake-indexeddb**: 8 files
- **@playwright/test**: 5 files

### Tools

- **esm-env**: 34 files
- **acorn**: 3 files
- **monaco-languageclient**: 3 files
- **openapi-types**: 2 files
- **vscode**: 1 file
- **vscode-languageclient**: 1 file

### Other

- **runed**: 114 files
- **fast-equals**: 87 files
- **date-fns**: 7 files
- **p-limit**: 5 files
- **@leeoniya/ufuzzy**: 4 files
- **diff**: 4 files
- **yjs**: 4 files
- **ansi_up**: 3 files
- **GraphQL**: 3 files
- **hash-sum**: 3 files
- **minimatch**: 3 files
- **@aws-crypto/sha256-js**: 2 files
- **rfc4648**: 2 files
- **@jitl/quickjs-wasmfile-release-sync**: 1 file
- **clone**: 1 file
- **jszip**: 1 file
- **quickjs-emscripten-core**: 1 file
- **quicktype**: 1 file
- **vscode-ws-jsonrpc**: 1 file
- **y-protocols**: 1 file
- **y-websocket**: 1 file

## Support (multiplayer)

### Other

- **http**: 2 files
- **lib0**: 1 file
- **ws**: 1 file
- **y-protocols**: 1 file
- **yjs**: 1 file

## Support (windmill-yaml-validator)

### Validation

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

## Other repos with a similar stack

- [BerriAI/litellm](https://seerepo.com/r/BerriAI/litellm/built): axum, tower, psycopg, rusqlite, sqlx-postgres, sqlx, Postgres, SQLite, Tokio, React, OpenAI, Anthropic, jsonwebtoken, aws-sdk-sts, gcp_auth, rmcp, tokenizers, schemars, aws-sdk-secretsmanager, boto3, tracing, tracing-subscriber, Tailwind CSS, Lucide, Zod · [Compare](https://seerepo.com/compare/BerriAI/litellm/vs/windmill-labs/windmill)
- [aaif-goose/goose](https://seerepo.com/r/aaif-goose/goose/built): axum, sqlx, Tokio, React, oauth2, rmcp, aws-sdk-bedrockruntime, candle-core, candle-nn, candle-transformers, hf-hub, tokenizers, pulldown-cmark, schemars, opentelemetry-appender-tracing, opentelemetry-otlp, tracing, tracing-subscriber, OpenTelemetry, tracing-appender, tracing-opentelemetry, Tailwind CSS, tailwind-merge, Lucide, Zod · [Compare](https://seerepo.com/compare/aaif-goose/goose/vs/windmill-labs/windmill)
- [open-webui/open-webui](https://seerepo.com/r/open-webui/open-webui/built): psycopg2-binary, Postgres, SQLite, Svelte, SvelteKit, OpenAI, SQLAlchemy, cryptography, pyjwt, boto3, yaml, Tailwind CSS, Chart.js, Mermaid, xterm, highlight.js, dompurify, pdfjs-dist · [Compare](https://seerepo.com/compare/open-webui/open-webui/vs/windmill-labs/windmill)
- [unionlabs/union](https://seerepo.com/r/unionlabs/union/built): axum, tower, sqlx-postgres, sqlx, Postgres, SQLite, Tokio, Svelte, SvelteKit, ed25519-dalek, schemars, opentelemetry-otlp, tracing, tracing-subscriber, OpenTelemetry, tracing-opentelemetry, Tailwind CSS, tailwind-merge · [Compare](https://seerepo.com/compare/unionlabs/union/vs/windmill-labs/windmill)
- [openinterpreter/openinterpreter](https://seerepo.com/r/openinterpreter/openinterpreter/built): axum, tower, sqlx, Tokio, hmac, jsonwebtoken, ed25519-dalek, rmcp, quick-xml, pulldown-cmark, schemars, opentelemetry-otlp, opentelemetry-semantic-conventions, tracing, tracing-subscriber, OpenTelemetry, tracing-appender, tracing-opentelemetry · [Compare](https://seerepo.com/compare/openinterpreter/openinterpreter/vs/windmill-labs/windmill)
- [paperclipai/paperclip](https://seerepo.com/r/paperclipai/paperclip/built): Postgres, Tokio, React, OpenAI, Anthropic, hmac, @assistant-ui/react, ai, yaml, Ajv, Tailwind CSS, tailwind-merge, Mermaid, xterm, Lucide, dompurify, Zod · [Compare](https://seerepo.com/compare/paperclipai/paperclip/vs/windmill-labs/windmill)

## Frequently asked questions

### What language is windmill written in?

windmill is written in Rust, with 1,458,145 written lines.

### What framework does windmill use?

windmill is built with axum, tower, Tokio, Deno, React, Svelte, and SvelteKit.

### What database does windmill use?

windmill stores its data in sqlx, quick_cache, object_store, Postgres, MySQL, duckdb, lapin, rumqttc, SQLite, and idb and reaches it with SQLAlchemy.

### What does windmill sign people in with?

windmill signs people in with cryptography, pyjwt, hmac, tower-cookies, jsonwebtoken, oauth2, argon2, aws-sdk-sts, ed25519-dalek, gcp_auth, hkdf, and openidconnect.

### Does windmill use AI?

Yes. windmill uses AI through nltk, rmcp, aws-sdk-bedrockruntime, aws-sdk-bedrock, candle-core, candle-nn, candle-transformers, hf-hub, tokenizers, @ai-sdk/react, @assistant-ui/react, ai, OpenAI, and Anthropic.

### What services does windmill use?

windmill uses async-nats, aws-sdk-sqs, mysql-connector-python, nkeys, postgres-native-tls, postgres-protocol, psycopg, psycopg2-binary, pyairtable, pymongo, rdkafka, rusqlite, s3transfer, sqlx-postgres, tokio-postgres, datafusion, MongoDB, tiberius, and lru-cache.

### Does windmill have tests?

Yes. windmill has 803 test files and is tested with github.com/stretchr/testify, serial_test, @happy-dom/global-registrator, Vitest, fake-indexeddb, and @playwright/test.

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

The ones that share most of its stack: BerriAI/litellm, aaif-goose/goose, and open-webui/open-webui.

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